【Hadoop离线基础总结】Yarn集群的资源调度

Yarn集群的资源调度


介绍

  • 概述
    YarnHadoop 2.x 引入的新的资源管理系统模块,主要用于管理集群当中的资源(主要是服务器的各种硬件资源,比如内存CPU等),它不光管理硬件资源,还管理运行的一些任务信息等。

  • Yarn调度资源可以分为两个层级
    一级管理调度:管理计算机的资源、运行job任务的生命周期
    二级管理调度:任务的计算模型(maptask,reducetask的代码)、多样化的计算模型(spark,storm)

  • yarn集群当中各个组件的作用
    ResourceManager:主节点,主要用于接受用户请求,分配资源
    NodeManager:从节点,主要用于处理任务的计算
    ApplicationMaster:每提交一个任务,启动一个appmaster,它全权负责管理我们任务的执行。
               主要职责:申请资源,分配资源(分配Container),监控任务执行的进度状况,回收资源,和resourceManager通信,报告任务的执行状况“自杀”
    Container:资源分配的单位,所有的资源都是以caontainer的形式来进行划分的,便于资源的分配和回收
    JobHistoryServer:历史完成的任务信息
    TimeLineServer:2.4版本之后出来的新特性,查看正在执行任务的信息


调度器

  • 概述
    调度器解决任务先后提交如何保证任务最快执行的一种策略,研究的是任务之间如何一起执行的问题

  • Hadoop当中的调度器主要有三种
    第一种fifo 队列调度器(first in first out)(没人用)
    运行规则:第一个任务来了,先执行,第二个任务来了,等着
    弊端:如果有一个很大的计算任务先来,需要执行两个小时,再来一个小任务,需要两分钟,第二个任务必须要等第一个完成。
    第二种capacity scheduler 容量调度器(apache的hadoop版本默认使用的调度器)
    运行规则:将集群的资源,划分成好几个队列,任务提交的时候,可以选择不同的队列进行提交。
    优点:根据提交任务需要资源的大小不同,可以将任务划分到不同给的队列下面去。
    第三种fair scheduler 公平调度器(CDH版本的hadoop默认的调度规则)
    运行规则:如果没有任务提交,收到第一个任务,将进群当中所有的资源全部给第一个任务,如果此时收到第二个任务,就会将第一个任务的资源划分一点出来给第二个任务,让第二个任务也可以执行,以此类推,保证每一个任务都可以公平地一起执行

  一般调度器不改


Yarn常用参数设置

  • yarn.nodemanager.resource.memory-mb
    定义每台机器的内存使用大小,默认8192M

  • yarn.nodemanager.resource.cpu-vcores
    定义每台机器的虚拟内核使用大小,默认8个

  • yarn.nodemanager.vmem-pmem-ratio 2.1
    定义交换区空间可以使用的大小(交换区空间就是讲一块硬盘拿出来做内存使用)
    这里指定的是nodemanager的n内存的2.1倍


tips

yarn的发展历程以及详细介绍:https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/

原文地址:https://www.cnblogs.com/zzzsw0412/p/12772484.html