Hadoop之 MapReduce的原理简介

近来由于工作的需要,以前学过的Hadoop又重新回顾了一遍,为以后更好的了解,特写下该文章,以留作笔记,深知操作猛如虎,先从概念来讲起。

流程简介:

1.重写 JobConfigurable.configure(JobConf)方法,这个方法需要传递一个JobConf参数,目的是完成Mapper的任务初始化工作;

2.之后框架使用IputSplit对每个键值对调用一次 map(WritableComparable, Writable, OutputCollector, Reporter)操作;

3.因为数据在hadoop上是以块为单位存储的,所以使用Partitioner控制map输出结果key的分割,产生一个个分区,分区的数目与一个作业的reduce任务的数目是一样的;

4.map已经将数据分组排好之后,shuffle为每个Reducer获得所有Mapper输出中与之相关的分块;sort按照key的值对Reducer的输入进行分组 ;

Shuffle和Sort两个阶段是同时进行的,map的输出也是一边被取回一边被合并的;

5.对每个输入键值对调用一次 reduce(WritableComparable, Iterator, OutputCollector, Reporter)方法,Reduce任务的输出通常是通过调用 OutputCollector.collect(WritableComparable, Writable)写入 文件系统的。

6.Reporter报告进度,设定应用程序级别的状态消息,更新Counters(计数器), 表明进程正常;

总结: map对数据组进行分组排序,均匀分布到每个数据节点,之后reducer调用计算任务程序,并将最终的计算结果输出;


各位看客,如果发现有何描述不准确的,定要指出哦,相互学习,个人博客https://www.onexing.cn

你可能感兴趣的:(Hadoop之 MapReduce的原理简介)