大数据学习笔记(Map Reduce在集群上的运行架构)

MR1.X运行架构

大数据学习笔记(Map Reduce在集群上的运行架构)_第1张图片

JobTracter
核心,主,单点
调度所有的作业
监控整个集群的资源负载
TaskTracter
从,自身节点资源管理
和JobTracter心跳,汇报资源,获取Task
Client
作业为单位
最终提交作业到JobTracker

大数据学习笔记(Map Reduce在集群上的运行架构)_第2张图片
在hadoop1.x版本中,基于MapReduce框架写成的Application想要在集群上正常运行,需要有资源调度器和任务调度器的协调(Application->资源调度器->任务管理器->分布式计算)。
hadoop1.x的资源调度器也是主从结构的,主节点叫做(JobTracker),从节点叫做(TaskTracker)。当客户端需要运行程序时,会向JobTracter发出请求,JobTracter根据应用程序需要的数据向NameNode发出请求,NameNode会返回一个含有每个block块节点位置信息的列表;JobTracter会向含有数据的TaskTracter中发送消息,使TaskTracter分配资源(启动一个计算进程),以供JobTracter分发任务;JobTracter向启动进程的节点分发计算任务(map task 和 reduce task)。
JobTracter既是资源调度的主节点,又是任务调度的主节点,会造成JobTracter的负载很高,容易出现单点故障;JobTracter是MapReduce自带的资源调度器,当其他计算框架(spark)想要在集群运行,就需要自己实现一个JobTracter,而每一个JobTracter都是管理整个集群的资源,所以也会存在资源隔离以及资源抢夺问题。针对这些问题,在hadoop2.x中,使用yarn集群去进行资源调度和任务分配。

MR2.X-YARN资源调度器

ResourceManager
主,核心
集群节点资源管理
NodeManager
与RM汇报
管理Container生命周期
Container
默认NodeManager启动线程监控Container大小,超出申请资源频度,kill
支持Linux内核的Cgroup
ApplicationMaster
作业为单位,避免单点故障,负载到不同的节点
为task申请资源(Task-Container)
Client
请求资源创建AM
与AM交互
运行流程

1.Client在拿到Application所计算的文件的路径后,会找NN获取每一个block快的位置,生成一个报表。

2.Client找ResourceManager为ApplicationMaster申请资源

3.ResourceManager接收客户端的请求后,查看哪一个节点上的资源充足,如果大部分的节点的资源充足,那就随机找一台节点启动Container容器。

4.在资源充足的节点上规划出Container以后,NM会在这个容器中启动一个ApplicationMaster(负责任务调度),ApplicationMaster一旦挂掉,整个任务就停止了,此时RM会重新启动ApplicationMaster,如果其他的计算框架(Storm Spark)的任务也要运行到yarn集群,此时需要实现ApplicationMaster这个组件。

5.Client将生成的报表交给AM.

6.AM拿到报表以后,会根据报表的信息去向ResourceManager申请资源,RM会在资源充足的节点上规划container,启动yarn-child进程。

7.AM分发map task 到各个yarn-child中执行。

你可能感兴趣的:(大数据学习笔记(Map Reduce在集群上的运行架构))