Hadoop之纱

  

1概述

  

纱是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。

  

2纱基本架构

  

 Hadoop之纱

  

3纱工作机制

  

 Hadoop之纱

  

工作机制详解:

  

1)先生程序提交到客户端所在的节点。

  

2) YarnRunner向ResourceManager申请一个应用程序。

  

3) RM将该应用程序的资源路径返回给YarnRunner。

  

4)该程序将运行所需资源提交到HDFS上。

  

5)程序资源提交完毕后,申请运行mrAppMaster。

  

6) RM将用户的请求初始化成一个任务。

  

7)其中一个NodeManager领取到任务任务。

  

8)该NodeManager创建容器容器,并产生MRAppmaster。

  

9)容器从HDFS上拷贝资源到本地。

  

10) MRAppmaster向RM申请运行MapTask资源。

  

11) RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。

  

12)先生向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask, MapTask对数据分区排序。

  

13) MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。

  

14) ReduceTask向MapTask获取相应分区的数据。

  

15)程序运行完毕后,先生会向RM申请注销自己。

  

4作业提交全过程

  

4.1作业提交过程之纱

  

 Hadoop之纱

  

作业提交全过程详解:

  

1)作业提交

  
      <李>客户调用job.waitForCompletion()方法,向整个集群提交MapReduce作业。   <李>客户端向RM申请一个作业id。   <李> RM给客户返回该工作资源的提交路径和作业id。   <李>客户提交jar包,切片信息和配置文件到指定的资源提交路径。   <李>客户提交完资源后,向RM申请运行MrAppMaster。   
  

2)作业初始化

  
      <李>当RM收到客户的请求后,将该工作添加到容量调度器中。   <李>某一个空闲的纳米领取到该工作。   <李>该纳米创建容器,并产生MRAppmaster。   <李>下载客户提交的资源到本地。   
  

3)任务分配

  
      <李> MrAppMaster向RM申请运行多个MapTask任务资源。   <李> RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。   
  

4)任务运行

  
      <李>先生向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask, MapTask对数据分区排序。   <李> MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。   <李> ReduceTask向MapTask获取相应分区的数据。   <李>程序运行完毕后,先生会向RM申请注销自己。   
  

5)进度和状态更新

  
      <李>中纱的任务将其进度和状态(包括计数器)返回给应用管理器,客户端每秒(通过mapreduce.client.progressmonitor。pollinterval设置)向应用管理器请求进度更新,展示给用户。   
  

6)作业完成

  
      <李>除了向应用管理器请求作业进度外,客户端每5秒都会通过调用waitForCompletion()来检查作业是否完成,时间间隔可以通过mapreduce.client.completion.pollinterval来设置。作业完成之后,应用管理器和容器会清理工作状态,作业的信息会被作业历史服务器存储以备之后用户核查。   
  

4.2作业提交过程之MapReduce

  

 Hadoop之纱

  

5资源调度器

  

目前,Hadoop作业调度器主要有三种:FIFO、容量调度器和公平Scheduler.Hadoop2.7.2默认的资源调度器调度器是能力。

  [yarn-default.xml]

  
 <代码类="语言xml "> & lt; property>
  & lt; description>类作为资源调度器。;/description>
  & lt; name> yarn.resourcemanager.scheduler.class
  & lt; value> org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

Hadoop之纱