ITPub博客

首页 > 大数据 > Hadoop > Hadoop——MapReduce学习

Hadoop——MapReduce学习

原创 Hadoop 作者:biggerl 时间:2015-03-04 15:11:53 0 删除 编辑

MapReduce学习

分布式并行计算

MapReduce框架是由JobTracker和TaskTracker两类服务调度的(yarn模式的daemon是resourcemanager和nodemanager)。JobTracker是主控服务,只有
一个,负责调度和管理
TaskTracker,把Map任务和Reduce任务分配给空闲的TaskTracker,使这些服务并行运行,并监控任务的运行情况。TaskTracker
是从服务,可以有多个,负责执行任务。如果某个TaskTracker执行失败或者出现故障,JobTracker将这一任务分发给其他空闲的TaskTracker中。

本地计算

通常,MapReduce框架和分布式文件系统是运行在一组相同的节点上的,这样配置,允许框架在那些存储数据的节点上高效的调度任务,避免带宽的浪费。

Combine

combine过程将map任务输出的有相同key值的多个组合成一个。很多情况下,combine可以直接使用reduce函数,combine
能减少中间结果的数量,从而减少数据传输的网络流量

Partition

combine过程之后,把产生的中间结果按照key的范围划分成R份。通常采用hash函数完成,hash(key)mod R,这样保证一定范围内的key值,一定由某一个reduce任务完成,简化了Reduce过程。

读取中间结果

Map阶段的中间结果,会以文件形式保存在本地磁盘。中间结果的位置会通知给JobTracker,JobTracker再通知Reduce任务到哪一个DataNode上去取中间结
果。

MapReduce的形式化表示

以wordcount为例:MapReduce: 

{,,,}  -> {,


MapReduce致力于解决大规模数据处理的问题,因此在设计之初就考虑了数据的局部性原理,利用局部性原理将整个问题分而治之。
MapReduce集群由普通PC机构成,为无共享式架构。
在处理之前,将数据集分布至各个节点。处理时,每个节点就近读取本地存储的
数据处理(
map),将处理后的数据进行合并(combine)、排序(shuffle and sort)后再分发(至reduce节点),避免了大量
数据的传输,提高了处理效率。
无共享式架构的另一个好处是配合复制(replication)策略,集群可以具有良好的容错性,一部分节点的
down机对集群的正常工作不会造成影响。








来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29974949/viewspace-1448057/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Hadoop——HDFS学习
下一篇: Hbase学习
请登录后发表评论 登录
全部评论

注册时间:2014-10-24

  • 博文量
    39
  • 访问量
    96957