Hadoop技术内幕读书笔记-mapreduce架构

        Hadoop MapReduce也采用了Master/Slave(M/S)架构。它主要由以下几个组件组成:Client、JobTracker、 TaskTracker和Task。下面分别对这几个组件进行介绍。



(1)Client
用户编写的mapReduce程序通过client提交到JobTracker;同时可以通过Client提供的一些接口查看作业运行状态。
(2)JobTracker
JobTracker主要负责资源监控和作业调度。JobTracker监控所有TaskTracker与作业的健康状况,一旦发现失败情况后,其会将相应的任务转移到其他节点;同时,JobTracker会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合适的任务使用这些资源。
(3)TaskTracker
TaskTracker会周期性地通过Heartbeat将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)。
(4)Task
Task分为Map Task和Reduce Task两种,均由TaskTracker启动。对于MapReduce而言,其处理单位是split。split是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等。它的划分方法完全由用户自己决定。但需要注意的是,split的多少决定了Map Task的数目,因为每个split会交由一个Map Task处理。
Map Task执行过程如下:

(1)首先将对应split迭代解析为key/value对
(2)依次调用用户自定义的map()方法,最终生成的临时文件放在本地磁盘
(3)临时文件被分成若干个partition,每个patition将被一个Reduce Task处理
Reduce Task执行过程如下:

(1)从远程节点读取Map Task中间结果(shuffle阶段,洗牌)
(2)按照key对key/value对进行排序(sort阶段)
(3)依次读取<key,value list>,调用Reduce函数处理,将最终结果生成至HDFS上(reduce阶段)

猜你喜欢

转载自qicq611le.iteye.com/blog/2100985