Chinaunix首页 | 论坛 | 博客
  • 博客访问: 793679
  • 博文数量: 247
  • 博客积分: 166
  • 博客等级: 入伍新兵
  • 技术积分: 2199
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-15 16:10
文章分类

全部博文(247)

文章存档

2017年(1)

2015年(63)

2014年(80)

2013年(94)

2012年(9)

分类: HADOOP

2013-07-31 11:59:05

根据Hadoop++论文的描述,Hadoop执行过程分为Load、Map、Shuffle、Reduce这四个阶段,可以看成是一个由split、 itemize、map、reduce等10个函数或算子组成的DAG。其中每一个函数或算子,都可以提供自定义的实现以此来扩展Hadoop的功能或优 化性能。

1、Load阶段

输入数据经block函数,按配置的block大小切分成多个block,每个block按配置存储多个复本,Hadoop尽可能保证不同复本存储在不同结点上。

2、Map阶段

每个mapper子任务读取一个split。每个split包含一个或多个block,是一个逻辑单元。split函数决定怎么划分split。 split通过itemize函数分割成记录,框架对每条记录调用map函数。map的输出由mem函数切割成多个spill。spill中的每条记录由 sh函数决定输出到哪个reducer,为每个reducer产生一个逻辑分区。每个逻辑分区根据cmp函数排序并根据grp函数分组,再根据 combine函数进行预reduce处理后存储到文件。如果一台mapper机上对某个reducer产生了多个上述处理所得的spill文件,则进行 合并,合并时同样执行排序、分组和combine流程。

3、Shuffle阶段

每个mapper产生的spill文件再次经过sh函数分派给每个reducer。每个reducer从每个mapper接收给它的数据,如果能在内存中合并就在内存中合并,否则接收后先存储,等全部完成后再来合并。最终为每个reducer准备好一个待处理的文件。

4、Reduce阶段

每个reducer的输入文件先同样执行排序、分组和combine流程,然后根据reduce函数得到最终结果。

下面的图显示了一个有4个节点,4个mapper,2个reducer的Map Reduce程序的执行过程。

Hadoop执行过程 - 风轻扬 - 风轻扬

http:///system-analysis/20111215/316266.html
阅读(798) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~