MapReduce工作原理图文详解
1.Map-Reduce 工作机制剖析图:
1.首先,第一步,我们先编写好我们的map-reduce程序,然后在一个client 节点里面进行提交.(一般来说可以在Hadoop集群里里面的任意一个节点进行,只要该节点装了Hadoop并且连入了Hadoop集群)
2.job client 在收到这个请求以后呢,会找到JobTracker并且请求一个作业ID(Job ID)。(根据我们的核心配置文件,可以很轻易的找到JobTracker)
3.通过HDFS 系统把这个作业的代码散发出去,
4. 提交作业
5.在JobTracker端开始初始化工作,比方说:在其内存里建立一系列数据结构,来记录这个Job的运行情况,其放在一个作业队列里,等待作业调度器对其进行调度等等
6.JobTracker 会像HDFS的nameNode 询问有关的一些数据在哪些文件里面,然后这些文件分别散落在哪些节点里面,我们分别获知这些情况.因为这个作业,就是Map-reduce程序跟这个数据之间是 "就近运行" 的,就是程序必须要跟它所要处理的数据要放在一块,所以呢,这些信息是我们运行这个作业所必需的.
7. 通关过JobTracker 和 TaskTracker 之间每分钟进行一次的心跳联系,可以知道有哪些 TaskTracker 可以参与到我们的计算里面来.比如说:这个 TaskTracker呢首先不应该是宕掉的,它是活着的.另外它的符合应该是比较低的.那它如果正在运行其他作业的话呢.那就不大适合在它很繁忙的时候就给他加上新的作业,那最好是一个空闲的节点,
8.把那些要运行的 TaskTracker 给确定下来,就是有哪些TaskTracker可以参与我们的map-reduce计算里面去,于是呢,那些TaskTracker呢就会从HDFS里面把相关的Java代码给取过来,取过来以后呢,就开始架设这个Java的虚拟机,就是在它本地把它的Java虚拟机给跑起来.然后就运行这个作业的工作.
这个大致的流程就是这样子.
以上内容来自: 炼数成金教程.