Hadoop1.X和Hadoop2.X的运行架构详解

Hadoop1.X运行架构

Hadoop1.X和Hadoop2.X的运行架构详解

首先了解,Job Tracker和Task Tracker都是常服务

客户端先和HDFS交互,取到文件的block块信息,由客户端将block按照配置切成split切片,切片的大小完全由配置决定,可以和block块大小相等,也可以大于或者小于。因为客户端获取到的block块信息有偏移量和块的位置信息,所以产生的split切片也会有block所在的位置信息和便宜量,由此获得了文件的split切片清单。又因为split数量和map的数量是一对一的,因此在此时客户端就已经知道了需要多少个map来处理这个任务。第二点,客户端会将jar包、配置信息以及切片清单上传到HDFS的某个目录中,而且副本数为10,由此如果有很多map来拉取的时候可以到不同的节点拉取,避免多个map到一个节点读取文件信息的时候单个节点的资源受限问题。第三点,客户端会连接Job Tracker,让Job Tracker完成MapTask和ReduceTask的调度,所以Job Tracker有一个作用是调度所有作业,此外,Job Tracker会接收来自Task Tracker汇报的各个DataNode节点上的资源情况,所以Job Tracker的另一个作用就是集群的资源管理。
 所以Hadoop1.X中客户端,Job Tracker和Task Tracker的作用分别如下:
 Job Tracker:核心,主,单点
   1)调度所有作业
   2)监控集群的资源负载
 Task Tracker:从,每个节点上都有,负责该节点的资源管理
   1)向Job Tracker汇报每个节点上的资源以及从Job Tracker取回任务
   2)所在节点上的资源管理
 Client:
   1)以作业为单位,规划作业的计算分布
   2)提交作业资源到HDFS
   3)最终将作业提交到Job Tracker

1.X的弊端:
   ①JobTracker负载过重,有单点故障
   ②集群资源管理和计算调度强耦合,后续升级困难
   ③不同框架对资源不能全局管理

Hadoop2.X运行架构Hadoop1.X和Hadoop2.X的运行架构详解

因为1.X有弊端,所以在2.X中引入yarn资源管理框架,把资源管理从MapReduce切出来,未来有计算框架直接写自己的调度代码,资源可以复用yarn的资源管理。yarn是主从架构,主是ResourceManager,从是NodeManager,其角色有:Client、ResourceManager、NodeManager、ApplicationMaster。
  客户端一开始和1.X中的一样,即计算split切片清单,向HDFS上传资源信息,改变的是2.X中不再有Job Tracker,而是会连接ResourceManager,请求启动该作业的调度程序。ResourceManager是集群节点的资源管理,ResourceManager通过NodeManager在该节点上创建一个ApplicationMaster,
  而ApplicationMaster就相当于1.X中Job Tracker的任务调度那部分,而且1.X中Job Tracker是常服务,但是在这里的ApplicationMaster只要用到的时候才会被创建。创建出ApplicationMaster之后,ApplicationMaster会从HDFS中获取切片清单,根据切片清单创建map任务对象和一定数量的reduce任务对象,这里有一个小的细节:ApplicationMaster会为所有的map任务以及reduce任务向ResourceManager请求容器(Container),但是为map任务的请求会优先于reduce任务的请求,只有map任务的完成率达到百分之5之后才会为reduce任务发送容器请求。reduce任务可以运行于集群的任意位置,但是map任务会有本地读取数据的限制,即移动计算而不是移动数据。ApplicationMaster为每个map/reduce任务默认请求1024MB的内存和一个虚拟内核。一旦ResourceManager在一个节点上的一个容器中为一个任务分配了资源,ApplicationMaster与NodeManager通信,就启动容器,开始执行任务。当作业的最后一个任务完成并通知ApplicationMaster,ApplicationMaster就更改作业的状态为“successfully”。
  由此总结各个角色的主要作用:
   ①Client客户端:创建split切片清单,向HDFS上传资源信息,与ResourceManager通信请求开启任务调度;
   ②ResourceManager:框架的主(master),负责集群的资源管理
   ③NodeManager:负责向ResourceManager汇报自己节点的资源情况,开启ApplicationMaster,管理Container的生命周期
   ④ApplicationMaster:向ResourceManager申请资源,任务调度、任务监控及容错等,以作业为单位,避免了单点故障
  最后,Hadoop2.X引入的yarn(资源管理系统),将Hadoop1.X中遇到的Job Tracker负载过重,单点故障的问题利用ResourceManager(负责资源管理)和ApplicationMaster(负责任务调度)解决,解耦了资源管理和计算调度,使得yarn的资源管理能够复用,多种不同的计算框架可以在其上运行。

友情链接:阿里云分布式调度系统-伏羲