第三部分: YARN 架构,应用监控

第三部分: YARN 架构,应用监控_第1张图片

第三部分: YARN 架构,应用监控_第2张图片

MapReduce has undergone a complete overhaul in hadoop-0.23 and we now have, what we call, MapReduce 2.0 (MRv2) or YARN.

The fundamental idea of MRv2 is to split up the two major functionalities of the JobTracker, resource management and job scheduling/monitoring, into separate daemons. The idea is to have a global ResourceManager (RM) and per-application ApplicationMaster (AM). An application is either a single job in the classical sense of Map-Reduce jobs or a DAG of jobs.

The ResourceManager and per-node slave, the NodeManager (NM), form the data-computation framework. The ResourceManager is the ultimate authority that arbitrates resources among all the applications in the system.

The per-application ApplicationMaster is, in effect, a framework specific library and is tasked with negotiating resources from the ResourceManager and working with the NodeManager(s) to execute and monitor the tasks.

###YARN服务组件

  • YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager 为Master,NodeManager为Slave。
  • ResourceManager 负责对各个NodeManager上的资源进行统一管理和调度
  • 当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的。
  • ApplicationMaster,它负责向ResourceManager申请资源,并需要NodeManager启动可以占用一定资源的任务。
  • 由于不同的Application被分布到不同的节点上,因此它们之间不会相互影响

ResourceManager

  • 全局的资源管理器,整个集群只有一个,负责集群资源的统一管理和调度分配。
  • 功能
    • 处理客户端请求
    • 启动/监控ApplicationMaster
    • 监控NodeManager
    • 资源分配与调度

###NodeManager

  • 整个集群有多个,负责单节点资源管理和使用
  • 功能
  • 单个节点上的资源管理和任务管理
  • 处理来自ResourceManager的命令
  • 处理来自ApplicationMaster的命令
  • NodeManager管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。
  • 定时地向RM汇报节点上的资源使用情况和各个Container的运行状态

###Application Master

  • 管理一个在YARN内运行的应用程序的每个实例
  • 功能
  • 数据切分
  • 为应用程序申请资源,并进一步分配给内部任务
  • 任务监控与容错
  • 负责协调来自ResourceManager的资源,开通过NodeManager监视容器的执行和资源使用(CPU,内存等的资源分配)。

###Container

  • YARN中的资源抽象,封装某个节点上多维度资源,如内存,CPU,自盘,网络等,当AM想RM申请资源时,RM向AM返回的资源便是用Container表示的。
  • YARN 会为每个任务分配一个Container,且该任务只能使用Container中描述的资源。
  • 功能:
  • 对任务运行环境的抽象
  • 描述一系列信息
  • 任务运行资源(节点,内存,CPU)
  • 任务启动命令
  • 任务运行环境

###YARN 资源管理

  • 资源调度和资源隔离是YARN作为一个资源管理系统,最重要和最基础的两个功能。资源调度有ResourceManager完成,而资源隔离由各个NM实现。
  • ResourceManager将某个NodeManager上资源分配给任务(这就是所谓的“”资源调度“”)后,NodeManager需按照要求为任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运行提供基础的保证,这就是所谓的资源隔离。
  • 当谈及到资源时,我们通常指内存,CPU和IO三种资源。Hadoop YARN同时支持内存和CPU两种资源的调度。
  • 内存资源的多少会会决定任务的生死,如果内存不够,任务可能运行失败;相比之下,CPU资源则不同,它只会决定任务运行的快慢,不会对生死产生影响。

配置YARN的内存和核数:
这两个参数在yarn.default.xml文件中,默认是8G,1


        yarn.scheduler.maximum-allocation-mb
        4096
    
	
        yarn.scheduler.minimum-allocation-vcores
        2
    
    

###YARN资源管理

  • YARN允许用户配置每个节点上可用的物理内存资源,注意,这里是“可用的”,因为一个节点上的内存会被若干个服务共享,比如一部分给YARN,一部分给HDFS,一部分给HBase等,YARN配置的知识自己可以使用的,配置参数如下:

  • yarn.nodemanager.resource.memory-mb
    表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减这个值,而YARN不会只能的探测节点的物理内存总量。

  • yarn.nodemanager.vmem-pmem-ratio
    任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1

  • yarn.nodemanager.pmem-check-enabled
    是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

  • yarn.nodemanager.vmem-check-enabled
    是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

  • yarn.scheduler.minimum-allocation-mb
    单个任务可申请的最少物理内存量,默认是1024(MB),如果一个任务申请的物理内存量少于该值,则该对应的值改为这个数。

  • yarn.scheduler.maximum-allocation-mb
    单个任务可申请的最多物理内存量,默认是8192(MB).

  • 目前的CPU被划分成虚拟CPU(CPU virtual Core),这里的虚拟CPU是YARN自己引入的概念,初衷是,考虑到不同节点的CPU性能可能不同,每个CPU具有的计算能力也是不一样的,比如某个物理CPU的计算机能力可能是另外一个物理CPU的2倍,这时候,你可以通过为第一个物理CPU多配置几个虚拟CPU弥补这种差异。用户提交作业时,可硬指定没干过任务需要的虚拟CPU个数。在YARN中,CPU相关配置参数如下:

  • yarn.nodemanager.resource.cpu-vcores
    表示该节点上YANR可使用的虚拟CPU个数,默认是8,注意,目前推荐将该为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数。

  • yarn.scheduler.minimum-allocation-vcore
    单个任务可申请的最小虚拟CPU个数,默认是1,如果一个任务申请的CPU个数少于该数,则该对应的值改为这个数。

  • yarn.scheduler.maximum-allocation-vcores

###Apache Slider

懂的博客:Hadoop技术

你可能感兴趣的:(大数据-hadoop)