Hadoop架构介绍——MapReduce的体系结构

来源:互联网 发布:公务员考试经验知乎 编辑:程序博客网 时间:2024/06/05 19:39
MapReduce的体系结构:

-分布式编程架构

-以数据为中心,更看重吞吐率

-分而治之(把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后整合各个节点的中间结果得到最终的输出)

-Map把一个任务分解成多个子任务

-Reduce将分解后的多任务分别处理,并将结果汇总为最终的结果

应用举例:清点图书馆藏书、统计单词的出现次数、混合辣椒酱的制作等等。


结构图:

也采用了Master-Slaver结构。

4个实体:

-Client

-JobTraker

-TaskTraker(任务节点)

-HDFS(输入、输出数据、配置信息等)



基本概念:

作业(Job):在Hadoop内部,用Job来表示运行的MapReduce程序所需要用到的所有jar文件和类的集合,这些文件最终都被整合到一个jar文件中,将此jar文件提交给JobTraker,MapReduce程序就会执行

任务(Task):MapTask和ReduceTask

键值对(key/value pair)

 Map()、Reduce()函数的输入、输出都是<key,value>的形式

HDFS存储的输入数据经过解析后,以键值对的形式,输入到MapReduce()函数中进行处理,输出一系列键值对作为中间结果,在Reduce阶段,对拥有同样Key值的中间数据进行合并形成最后结果。


生命周期:
1.提交作业

-在作业提交之前,需要对作业进行配置;

-程序代码,主要是自己编写的MapReduce程序;

-配置输入输出路径、输出是否压缩;

-配置完成后,通过JobClient来提交;


  作业调度算法:

  FIFO调度器(默认)、公平调度器、容量调度器

2.任务分配

-TaskTracker和JobTracker之间的通信与任务的分配是通过心跳机制完成的;

-TaskTracker会主动向JobTracker询问是否有作业要做,如果自己可以做,那么就会申请到作业任务,这个任务       可以使Map也可能是Reduce任务;

3.任务执行 

-TaskTraker将代码和配置信息到本地;

-分别为每一个Task启动JVM运行任务

4.状态更新

-任务在运行过程中,首先会将自己的状态汇报给TaskTracker,然后由TaskTracker汇总告之JobTracker;

-任务进度是通过计数器来实现的;

-JobTracker是在接受到最后一个任务运行完成后,才会将作业标志为成功。


0 0