mapreducer 原理(连载)-知乎

Hadoop 系列教程:mapreducer 原理(连载)

本文来源于知乎的作者“佛说”的: Hadoop 系列教程:mapreducer 原理(连载) - 知乎

1. mapreduce的主要目的

分而治之,化大为小。

2. map和reducer阶段分别解决什么样的问题

map阶段解决的问题,就是把输入变成KV结果用于reducer的输入

reducer 解决的问题的就是按分组进行汇总

3. map任务的输入文件是怎么分割的

inputSplit split默认一个block对应一个split,这个split可以自己实现成对应多个block

4. wordcount中map阶段做了什么

按一个词当key,values按1输出

输出某一个key[1,1,1,1,1,1,1,1,1,1,1,1] key2[1,1,1,1,1,1,1,1,1,1,1,1]

map运行图

5. reducer的数量是怎么决定的

reducer的数量是通过partition的数量决定的

6. reducer是怎么从map拉取计算数据的

copy merge 占整个reducer运行进度的33%。

7. 怎么减少reducer从map拉取的数据量

使用combiner可以减少reducer的输入数据量,默认是不提供的因为这个东西不是所有场景都能使用,需要自己根据需求自定义

8. reducer的输入文件是怎么排序的

9. wordcount中reducer阶段做了什么

按组累加

10. 总结shuffle的整个过程

11. mapreducer的详细过程

map: inputsplit->read->map->mapbuff->spill->combiner->sort->partition->combiner->sort->mergepartitionfile

reducer: copy->copybuff->merger->sort->mergerfile->sort->sortTotalReducerInputFile>reducer->output

12. mapreducer1和mapreducer2的区别

资源使用方式

MR1:先定义好map任务槽 recude任务槽,所以集群能跑多少个map和reducer是固定的

MR2:通过向resourceManager去申请,map和reducer可以灵活分配

系统结构:(该文章出自海牛学院大数据培训

MR1: jobtracker

作业和任务管理

资源调度

tasktarcker

任务执行计算

MR2:resourcemanager

资源调度

nodemanager

任务执行计算

资源监控

applicationmaser

作业和任务管理

13. mapreducer的配置

推测执行

计数器

14. mapreducer可以优化的地方

(1).块的大小和文件的数量这个就决定map任务的数量

(2).map buff缓冲区的大小

(3).map输入的KEY的设计

(4).reduce的个数

(5).reduce copy buff缓冲区的大小

(6).减少reduce阶段的数据输入量

(7).map的sort是使用磁盘的

reducer的个数决定最终输出文件的个数,可以通过-Dmapreduce.job.reduces参数设定

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount -Dmapreduce.job.reduces=10 /user/qingniu/input /user/qingniu/output

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。