MapReduce是单个jobstracker和多个tasktracker的组合。一般jobstracker和HDFS中的namenode在同一个节点,也可配置为单独节点;tasktracker和datanode必须是同一个节点。jobstracker是整个MapReduce系统的主控节点。
1. jobstracker节点-Master节点:
(1)负责调度构成一个作业的全部任务,将之分配到不同的从属节点上。
(2)通过心跳机制监控从属节点运行状况。一旦有意外,会立刻将任务转移。2. tasktracker节点-Slave节点:
(1)负责执行主控节点分配的任务。
(2)tasktracker 和 datanode 是同一个节点,以实现移动运算达到高效性。3. MapReduce分布式运算工作流程:
我们按照WordCount的例子来讲解:
(1)首先,jobstracker按照block块数量划分出tasktracker,每个task对应一个datanode。 (2)然后,全部block块读取完毕,抽象出完整文件,再将文件分片,分片大小默认是和Block块相同的。 (3)之后,每个文件片对应一个map方法,map中执行K1V1遍历,输出K2V2。 (4)接着,由MapReduce模型执行多个shuffle操作,归并数据。输出K2[V2]。 (5)最后,每个shuffle结果输入一个reduce方法,按照我们的逻辑输出K3V3,并又以Block文件块形式保存到磁盘上。上面5个步骤是按照图示的简单讲解,其中还有一些细节没有讲到。比如分片后的序列化、map之前的归并、reduce之前的分区等等。这些在后续章节会做出讲解。
现在这部分内容会很难理解,但记无妨。在下一章节中讲到WordCount代码时回想此图就会很快明白。- end