今天学习过程和小结

今天学习了如何使用idea操作hdfs。

public class HDFSTest {
    Configuration configuration;
    FileSystem fileSystem;

String HDFS_PATH="hdfs://192.168.122.141:9000";
    @Before
    public void beform() throws Exception{
        configuration=new Configuration();
        fileSystem=FileSystem.get(new URI(HDFS_PATH),configuration,"root");

}
    //hdfs上创建目录
    @Test
    public void mkdir() throws IOException{
        boolean result=fileSystem.mkdirs(new Path("/idea"));
            System.out.println(result);

}

//hdfs上创建文件
    @Test
    public void createFile() throws IOException{
        FSDataOutputStream fsDataOutputStream =fileSystem.create(new Path("/idea/hello.txt"));
        fsDataOutputStream.write("hello,idea".getBytes());
        fsDataOutputStream.close();
    }

//查看HDFS上的文件内容/idea/hello.txt
    @Test
    public  void  readFromHDFS() throws  IOException{
        FSDataInputStream fsDataInputStream= fileSystem.open(new Path("/idea/hello.txt"));
        //打印到控制台
        IOUtils.copyBytes(fsDataInputStream,System.out,1024);
        fsDataInputStream.close();
    }

//文件重命名
    @Test
    public void rename() throws IOException{
        Path oldFilePath=new Path("/idea/hello.txt");
        Path newFilePath=new Path("/idea/h.txt");
        fileSystem.rename(oldFilePath,newFilePath);
    }

//上传文件到hdfs
    @Test
    public  void  uploadToHDFS() throws IOException{
        Path localPath=new Path("E:/abc.txt");
        Path hdfsPath=new Path("/idea/");
        fileSystem.copyFromLocalFile(localPath,hdfsPath);

}

//下载HDFS到本地
    @Test
    public  void downloadToLocal() throws IOException{

Path hdfsPath=new Path("/idea/h.txt");
        Path localPath=new Path("E:/hello.txt");
        fileSystem.copyToLocalFile(hdfsPath,localPath);
    }

//查询目录下的所有文件
    @Test
    public  void  list() throws IOException{
        Path distPath=new Path("/");
        FileStatus[] fileStatuses=fileSystem.listStatus(distPath);
        for(FileStatus fileStatus:fileStatuses){
            String path= fileStatus.getPath().toString();
            String  status=fileStatus.isDirectory()?"目录":"文件";
            System.out.println(path);
            System.out.println(status);
        }
    }

//删除hdfs上的文件
    @Test
    public void  deleteFile() throws IOException{
        Path path=new Path("/idea/h.txt");
        fileSystem.delete(path,true);
    }

//带进度条文件上传
    @Test
    public void uploadFileByProcessbar() throws IOException{
        InputStream inputStream=new BufferedInputStream(new FileInputStream("E:/feiq/feiq/Recv Files/javaHDFS.wmv"));
        FSDataOutputStream fsDataOutputStream=fileSystem.create(new Path("/idea/javaHDFS.wmv "), new Progressable() {
            @Override
            public void progress() {
                System.out.print(".");
            }
        });
        IOUtils.copyBytes(inputStream,fsDataOutputStream,4096);
    }
 
    @After
    public void destory(){

}
}

学习了MapReduce

分布式计算框架MapReduce

1.MapReduce概述

MapReduce优点:海量数据离线处理&易开发&易运行

MapReduce缺点:无法实时流式计算

  1. MapReduce编程模型

3.案例:TopN问题

词频统计wordcount

cat.txt内容如下:

hadoop  welcome

hadoop  hdfs mapreduce

hadoop hdfs

需求:统计每个单词出现的次数

MapReduce编程模型之Map阶段和Reduce阶段

将作业拆分成Map阶段和Reduce阶段

Map阶段:Map Tasks

Reduce阶段:Reduce Tasks

MapReduce编程模型之执行步骤

1,通过InputFormat讲文件读入并拆分成split

2,通过RecordReaders将split中的数据读入,并交给map处理。

3,map处理后的结果按照partitioner进行分区,然后将数据发送到对应的reduce上处理

4,reduce处理完成后,由outputFomat将结果写到文件系统

核心概念

Split:交由MapReduce作业来处理的数据块,是MapReduce中最小的计算单元。

InputFormat:将输入数据进行分片(split):InputSplit[] getSplits(JobConf job)

TextInputFormat:处理文本格式数据

OutputFormat:输出

Combiner

Partitioner

3.MapReduce架构

MapReduce架构之MapReduce1.x

JobTracker:JT

作业的管理者,将作业分解成一堆任务:Task(MapTask和ReduceTask),将任务分派给TaskTracker运行

作业的监控、容错处理(task作业挂了,重启task的机制)

在一定的时间间隔内,JT没有收到TT的心跳信息,TT可能挂了,TT上运行的任务会被指派到其它TT上去执行

TaskTracker:TT

任务的执行者  干活的

在TT上执行我们的Task(MapTask和ReduceTask)

MapTask

自己开发的map任务交给Task

解析每条记录的数据,交个自己的map方法处理

将map的输出结果写到本地磁盘(有些作业仅有map没有reduce====>HDFS)

ReduceTask

将MapTask输出的数据进行读取

按照数据进行分组传给我们自己编写的reduce方法处理

输出结果到HDFS

MapReduce架构之MapReduce2.x

  1. MapReduce

练习了wordcount的计算。

又学习了倒排索引。

遇到的问题汇总

  1. 对于hdfs的文件输入输出还不是很熟悉要多加练习。
  2. Wordcount是MapReduce方法中的基础计算,要熟悉代码的书写才可以。

3.掌握了基本的单词个数统计,对于更难一点的key,value.也要能熟悉它的数据流动分析过程才可以。

学习技能思维导图

7月17号day9总结的更多相关文章

  1. 2014年11月17号------html起始

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 8月17日 Power-BI关于全国房地产开发投资情况分析 QQ群视频交流开课啦

    <ignore_js_op> 数读|中国的经济只剩下房地产了么? 引言: 近日一则标题为“房奴们又立功啦,7月份新增贷款几乎都来自房贷!”的报道吸引了大众的目光.该报道指出在央行8月13日 ...

  3. 《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本

    1.Genesis-3D开源游戏引擎主要面向哪些用户人群?有限制吗? 1.我们的引擎没有限制,只要您想了解和使用我们的引擎,就可以加入Genesis-3D的大家庭.2.我们的主要用户群是各个相关的企业 ...

  4. 西安Uber优步司机奖励政策(1月11日~1月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  5. 关于我在17号“一个查询任意年份中任意月份的天数”程序编写中的代码&第二种方法!

    PS:下面的代码是我对于17号的练习题的一些新的看法(其实就是从另一个角度思考问题) package day20180917;import java.util.Scanner;//导包public c ...

  6. 成都Uber优步司机奖励政策(4月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. 北京Uber优步司机奖励政策(4月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  8. 优步UBER司机全国各地奖励政策汇总 (4月11日-4月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. 全国Uber优步司机奖励政策 (1月11日-1月17日)

    本周已经公开奖励整的城市有:北 京.成 都.重 庆.上 海.深 圳.长 沙.佛 山.广 州.苏 州.杭 州.南 京.宁 波.青 岛.天 津.西 安.武 汉.厦 门,可按CTRL+F,搜城市名快速查找. ...

随机推荐

  1. Java+Selenium3方法篇24-单选和多选按钮操作

    Java+Selenium3方法篇24-单选和多选按钮操作 本篇介绍 webdriver处理前端单选按钮的操作.单选按钮一般叫raido button,就像我们在电子版的单选答题过程一样,单选只能点击 ...

  2. 对bluebird的理解

    前言 Promise:把原来的回调写法分离出来,在异步操作执行完后,用链式调用的方式执行回调函数. 在公众号的开发里面用的const Promise = require('bluebird');con ...

  3. (数据科学学习手札09)系统聚类算法Python与R的比较

    上一篇笔者以自己编写代码的方式实现了重心法下的系统聚类(又称层次聚类)算法,通过与Scipy和R中各自自带的系统聚类方法进行比较,显然这些权威的快捷方法更为高效,那么本篇就系统地介绍一下Python与 ...

  4. R语言学习笔记(五):零碎知识点(11-15)

    11--which.min(), which.max()和which() which(x, arr.ind = FALSE, useNames = TRUE) x 是一个向量或者数组,可以是NA,但会 ...

  5. LI 标签中让文章标题左对齐,日期右对齐的方法

    希望实现标题在左对齐,日期在右对齐,当直接给日期的span加上float:right时,IE8和FF都OK,但IE6/7则会换行,下面给出一个简单有效的解决办法. <!DOCTYPE html  ...

  6. 深度学习(deep learning)优化调参细节(trick)

    https://blog.csdn.net/h4565445654/article/details/70477979

  7. PostgreSQL 数据库升级

    PostgreSQL软件版本升级后,需要使用pg_upgrade迁移旧版本的数据库,具体的操作参数可以参考官方文档,在此记录一下操作过程中出现的细节问题: 新版本软件在initdb的时候要保证loca ...

  8. 《数据结构与算法分析:C语言描述》读书笔记

    我们数据结构的课用了这本英文教材,作者是Mark Allen Weiss.总体来说比<算法导论>简单很多,但内容上交集非常大.其实是因为去掉了大多数证明和数学,对于没有耐心看符号和公式的人 ...

  9. android中接入twitter进行第三方登录

    在应用中接入Twitter进行第三方登录时,开发人员遇到了一点问题,主要是概念有点混乱,这里把经验记录一下,帮助遇到同样问题的朋友. 一.注册应用并配置登录权限 这一步比较简单,就不多说了,直接去官网 ...

  10. C++怎么用二维数组作为形参传入

    原文地址:http://blog.csdn.net/xuleicsu/article/details/919801 如何将二维数组作为函数的参数传递 今天写程序的时候要用到二维数组作参数传给一个函数, ...