Yarn集群资源规划

原创 2015年11月18日 19:19:56
一、 Yarn资源调度策略

1、hadoop1.x采用的资源调度器
(1)默认的调度器FIFO
Hadoop中默认的调度器,它先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业。


(2) 计算能力调度器Capacity Scheduler
支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略,为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。调度时,首先按以下策略选择一个合适队列:计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值最小的队列;然后按以下策略选择该队列中一个作业:按照作业优先级和提交时间顺序选择,同时考虑用户资源量限制和内存限制

(3)公平调度器Fair Scheduler
同计算能力调度器类似,支持多队列多用户,每个队列中的资源量可以配置,同一队列中的作业公平共享队列中所有资源,
公平调度器是由facebook贡献的,适合于多用户共享集群的环境的调度器,其吞吐率高于FIFO。Fair Scheduler新增在Hadoop版本是0.20.2,并在新版本(0.21.0)中,公平调度算法已经有了改进与增强。
公平调度器按资源池(pool)来组织作业,并把资源公平的分到这些资源池里。默认情况下,每一个用户拥有一个独立的资源池,以使每个用户都能获得一份等同的集群资源而不管他们提交了多少作业。按用户的 Unix 群组或作业配置(jobconf)属性来设置作业的资源池也是可以的。在每一个资源池内,会使用公平共享(fair sharing)的方法在运行作业之间共享容量(capacity)。用户也可以给予资源池相应的权重,以不按比例的方式共享集群。
除了提供公平共享方法外,公平调度器允许赋给资源池保证(guaranteed)最小共享资源,这个用在确保特定用户、群组或生产应用程序总能获取到足够的资源时是很有用的。当一个资源池包含作业时,它至少能获取到它的最小共享资源,但是当资源池不完全需要它所拥有的保证共享资源时,额外的部分会在其它资源池间进行切分。


2、DRF和相关参数


DRF: Dominant Resource Fairness,根据CPU和内存公平调度资源。CDH动态资源池默认采用的DRF计划策略。简单的理解就是内存不够的时候,多余的CPU就不会分配任务了,就让他空着;CPU不够的时候,多出来的内存也不会再启动任务了。


根据计划策略后,再查看Yarn启动任务时资源相关的参数,为保证CPU与内存资源的充分利用,则配置如下:


mapreduce.map.memory.mb ,map任务内存,cdh配置1G
mapreduce.map.cpu.vcores ,map任务虚拟CPU核数,配置1
mapreduce.reduce.memory.mb ,reduce任务内存,配置1G
mapreduce.reduce.cpu.vcores ,reduce任务虚拟CPU核数,配置1
yarn.nodemanager.resource.cpu-vcores ,容器虚拟CPU核数,根据机器内核数并修改为 24。
yarn.nodemanager.resource.memory-mb ,容器内存,配置24G
默认配置下,CPU核数和内存是1:1G的比例来启动任务的。


分配给Yarn的内存,集群为12节点,是24×12=288G,所以可用内存比可用vcores(24*12=288个),导致按照1:1G的比例下最多只能使用288个vcores,正好使用完所有的核心数。


总结:
内存是一种“决定生死”的资源

CPU是一种“影响快慢”的资源


二、  分组资源配置

相关配置文件

{"defaultMinSharePreemptionTimeout":null,"defaultQueueSchedulingPolicy":null,"fairSharePreemptionTimeout":null,"queueMaxAMShareDefault":null,"queueMaxAppsDefault":null,"queuePlacementRules":[{"create":false,"name":"primaryGroup"},{"create":false,"name":"secondaryGroupExistingQueue"},{"create":true,"name":"default"}],"queues":[{"aclAdministerApps":"*","aclSubmitApps":"*","minSharePreemptionTimeout":null,"name":"root","queues":[{"aclAdministerApps":"*","aclSubmitApps":"*","minSharePreemptionTimeout":null,"name":"bidw","queues":[],"schedulablePropertiesList":[{"impalaMaxMemory":null,"impalaMaxQueuedQueries":null,"impalaMaxRunningQueries":null,"maxAMShare":0.5,"maxResources":{"memory":110592,"vcores":108},"maxRunningApps":15,"minResources":{"memory":1024,"vcores":1},"scheduleName":"default","weight":1.0}],"schedulingPolicy":"drf"},{"aclAdministerApps":"*","aclSubmitApps":"*","minSharePreemptionTimeout":null,"name":"dam","queues":[],"schedulablePropertiesList":[{"impalaMaxMemory":null,"impalaMaxQueuedQueries":null,"impalaMaxRunningQueries":null,"maxAMShare":0.5,"maxResources":{"memory":36864,"vcores":36},"maxRunningApps":5,"minResources":{"memory":1024,"vcores":1},"scheduleName":"default","weight":1.0}],"schedulingPolicy":"drf"},{"aclAdministerApps":"*","aclSubmitApps":"*","minSharePreemptionTimeout":null,"name":"common","queues":[],"schedulablePropertiesList":[{"impalaMaxMemory":null,"impalaMaxQueuedQueries":null,"impalaMaxRunningQueries":null,"maxAMShare":0.5,"maxResources":{"memory":147456,"vcores":144},"maxRunningApps":25,"minResources":{"memory":1024,"vcores":1},"scheduleName":"default","weight":1.0}],"schedulingPolicy":"drf"}],"schedulablePropertiesList":[{"impalaMaxMemory":null,"impalaMaxQueuedQueries":null,"impalaMaxRunningQueries":null,"maxAMShare":null,"maxResources":null,"maxRunningApps":null,"minResources":null,"scheduleName":"default","weight":1.0}],"schedulingPolicy":"drf"}],"userMaxAppsDefault":null,"users":[]}

用户组权限分配

default   :288

bidw   : 108

dam    : 36

common  :  144


3、用户与组的设定

Important: Ensure that all users and groups resolve on the NameNode for ACLs to work as expected.

即在namenode的节点配置用户与组的关系


默认的权限是,用户组的名字与资源组的一致。

如果要临时生效,可以在hvie的shell命令中执行

SET mapreduce.job.queuename=root.bidw;
SET mapreduce.job.priority=HIGH;



版权声明:本文为博主原创文章,未经博主允许不得转载。

Spark的资源管理以及YARN-Cluster Vs YARN-Client

原文:http://blog.cloudera.com/blog/2014/05/apache-spark-resource-management-and-yarn-app-models/ ...

Spark on Yarn运行测试

1.启动hdfs: root@Master:/usr/local/hadoop/hadoop-2.6.0/sbin# ./start-dfs.sh 检查: root@Master:/usr/...

Ubuntu虚拟机下使用docker构建cluster运行Spark

1. 安装Docker参考https://docs.docker.com/engine/installation/linux/ubuntu/ 安装docker2. 选择基础镜像这里选择ubuntu:1...

Hadoop基础教程-第5章 YARN:资源调度平台(5.3 YARN集群配置)(草稿)

第5章 YARN:资源调度平台5.3 YARN集群配置5.3.1 yarn-site.xml yarn.scheduler.minimum-allocation-mb 1536...

Spark on yarn--几种提交集群运行spark程序的方式

今天看了spark的yarn配置,本来想着spark在hadoop集群上启动之后,还需要配置spark才能让yarn来管理和调度spark的资源,原来启动master和worker之后就会让yarn来...

spark yarn集群搭建手册

  • 2017年08月18日 10:35
  • 208KB
  • 下载

基于Hadoop分布式集群YARN模式下的TensorFlowOnSpark平台搭建

基于Hadoop分布式集群YARN模式下的TensorFlowOnSpark平台搭建 1. 介绍   在过去几年中,神经网络已经有了很壮观的进展,现在他们几乎已经是图像识别和自动翻...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Yarn集群资源规划
举报原因:
原因补充:

(最多只允许输入30个字)