Mapreduce工作机制(一)框架

来源:互联网 发布:java bufferstring 编辑:程序博客网 时间:2024/06/06 18:43


1.JobTracker是一个皇帝,在一个集群中只有一个,他有个太子是secondnamenode,在皇帝宕机的时候,需要人为去启用secondnamenode这个太子,下面那些节点就是皇帝的官员,可以有很多个,TaskTracker是这些官员的指挥中心,一边跟皇帝联系一边指挥自己节点执行任务,DataNode主要是放每个节点里面要处理的数据。。。mapreduce程序可以在任何节点上面提交给JobTracker。

2.JobClient相当一个太监总管,在有任务mapreduce程序执行的时候,在皇帝那里申请了一个ID,因为皇帝本来是有很多任务需要处理所以要用ID区别开。

3.太监申请到了ID之后就在HDFS文件系统里面建一个以这个ID为目录,将这个mapreduce任务需要用到的资源(jar包,数据等)放到这个目录下面,数据是计算好的inputsplit一个块一个块的形式存放进去。

4.然后太监跟皇帝提交了任务。

5.皇帝自己有个作业调度器job scheduler,把这个任务交由他进行调度,并对其进行初始化。

6.这个调度器为了创建任务列表,把任务细化了,就去HDFS文件系统中获取已经计算好的InputSplit的信息,然后为每个InputSplit创建人物。

7.这个heartbeat是官员隔几分钟就要向皇帝报告他的运行情况,官员是死是活,忙不忙,任务执行的怎么样,然后皇帝时刻监控下面每个官员的情况。因为知道他们的情况就可以把任务分配出去给哪些官员去执行。

8.有分配到任务的官员就去HDFS文件系统里面将这个小任务需要的程序跟数据从文件系统中下载到节点。

9.官员为这个任务新建一个本地工作目录,将JAR文件中的内容解压到这个文件夹下。

10.官员新建一个TaskRunner实例来运行该任务,TaskRunner启动一个新的JVM虚拟机来运行每个任务。


学习了一周我对我自己的要求就是要用自己的语言来表达处理,最好是这种形象化的,有趣又好记,可能里面很多举例不是很对,很多细节也没有说清楚,接下来我会继续完善

原创粉丝点击