yarn常用概念知识点汇总

问题一:集群提交任务,是什么决定任务分配到哪个节点上?
Yarn(RM,NM)

问题二:集群提交任务,偶尔成功,偶尔失败(使用外部配置文件)?
答:程序所需要的数据(配置文件)缺失。有的节点缺失,有的节点不缺失。
解决:在所有的节点上存一份程序所需要的数据(配置文件)
是谁来分配的呢? 答案:Yarn

ResourceManager:一个集群只有一个ResourceManager对外提供服务(可能有多个ResourceManager)
NodeManager:一个集群有多个NodeManager,通常每个DataNode也是NodeManager角色。

什么是Yarn?
一个通用资源管理系统和调度平台。

Yarn特点:支持多个数据计算框架,运行成本低,数据共享。

资源指的是什么? CPU 内存

Yarn的意义:
降低了企业的硬件开销(硬件成本),降低资源浪费,运行成本低,数据共享。

Yarn的内部组成
1、ResourceManager 一个集群资源的管理者
2、NodeManager 一个节点的资源管理者
3、ApplicationMaster 一个计算任务的管理者,每个计算任务都有一个APPMaster
4、Container 容器,包含内存与cpu

Yarn提交任务的流程

1、client向RM提交应用程序,其中包括启动该应用的ApplicationMaster的必须信息,例如ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
2、ResourceManager启动一个container用于运行ApplicationMaster。
3、启动中的ApplicationMaster向ResourceManager注册自己,启动成功后与RM保持心跳。
4、ApplicationMaster向ResourceManager发送请求,申请相应数目的container。
5、申请成功的container,由ApplicationMaster进行初始化。container的启动信息初始化后,AM与对应的NodeManager通信,要求NM启动container。
6、NM启动启动container。
7、container运行期间,ApplicationMaster对container进行监控。container通过RPC协议向对应的AM汇报自己的进度和状态等信息。
8、应用运行结束后,ApplicationMaster向ResourceManager注销自己,并允许属于它的container被收回。

Yarn得调度器
1、FIFO Scheduler: 先进先出,谁先提交谁先执行(先来后到)。
2、Capacity Scheduler:容量调度器。以列得形式配置集群资源,每个队列可以抢占其他队列得资源。多个队列可以同时执行任务。但是一个队列内部还是FIFO
3、Fair Scheduler 公平调度器,同样以列得形式配置集群资源,每个队列可以抢占其他队列得资源。当被抢占得队列有任务时,抢占得队列奉还资源。不知指出在与奉还资源需要一段时间。

FiFo举例子
排队食堂打饭、排队买车票、医院挂号

容量调度器举例子
多窗口买火车票、多窗口排队食堂打饭、多窗口银行柜台办理业务、高速收费口

公平调度器
军人优先买车票、公交车老人坐

Capacity Scheduler(CDH默认的调度器)
Root
├── prod(生产环境) 40 %
└── dev(开发环境) 60 %
├── mapreduce 60 %的50%
└── spark 60 % 的50%

1、编辑集群内的capacity-scheduler.xml 配置文件,输入一下内容


yarn.scheduler.capacity.root.queues
prod,dev


yarn.scheduler.capacity.root.dev.queues
mapreduce,spark


yarn.scheduler.capacity.root.prod.capacity
40


yarn.scheduler.capacity.root.dev.capacity
60


yarn.scheduler.capacity.root.dev.maximum-capacity
75


yarn.scheduler.capacity.root.dev.mapreduce.capacity
50


yarn.scheduler.capacity.root.dev.spark.capacity
50

2、将更新的配置分发到集群所有的节点
scp capacity-scheduler.xml node02:/ P W D s c p c a p a c i t y − s c h e d u l e r . x m l n o d e 03 : / PWD scp capacity-scheduler.xml node03:/ PWDscpcapacityscheduler.xmlnode03:/PWD

3、重启Yarn集群
./stop-all.sh
./start-all.sh
4、验证上面创建的对列
通过mapreduce.job.queuename指定对列的名字
mapreduce.job.queuename=mapreduce

hadoop jar …/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar pi -D mapreduce.job.queuename=mapreduce 10 10

补充说明

<!—未指定对列 默认提交default队列,该对列名字为用户名 -->

yarn.scheduler.fair.user-as-default-queue
true

yarn.scheduler.fair.allow-undeclared-pools true

公平调度器
1、修改yarn-site.xml配置文件添加以下配置

yarn.resourcemanager.scheduler.class org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler yarn.scheduler.fair.allocation.file /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/fair-scheduler.xml yarn.scheduler.fair.preemption true yarn.scheduler.fair.preemption.cluster-utilization-threshold 0.8f yarn.scheduler.fair.user-as-default-queue true yarn.scheduler.fair.allow-undeclared-pools false

2、添加fair-scheduler.xml配置文件

<?xml version="1.0"?> 30 512mb,4vcores 102400mb,100vcores 100 1.0 fair
<queue name="default">
	<minResources>512mb,4vcores</minResources>
	<maxResources>30720mb,30vcores</maxResources>
	<maxRunningApps>100</maxRunningApps>
	<schedulingMode>fair</schedulingMode>
	<weight>1.0</weight>
	<!--  所有的任务如果不指定任务队列,都提交到default队列里面来 -->
	<aclSubmitApps>*</aclSubmitApps>
</queue>
<queue name="hadoop">
	<minResources>512mb,4vcores</minResources>
	<maxResources>20480mb,20vcores</maxResources>
	<maxRunningApps>100</maxRunningApps>
	<schedulingMode>fair</schedulingMode>
	<weight>2.0</weight>
	<aclSubmitApps>hadoop hadoop</aclSubmitApps>
	<aclAdministerApps>hadoop hadoop</aclAdministerApps>
</queue>

<queue name="develop">
	<minResources>512mb,4vcores</minResources>
	<maxResources>20480mb,20vcores</maxResources>
	<maxRunningApps>100</maxRunningApps>
	<schedulingMode>fair</schedulingMode>
	<weight>1</weight>
	<aclSubmitApps>develop develop</aclSubmitApps>
	<aclAdministerApps>develop develop</aclAdministerApps>
</queue>

<queue name="test1">
	<minResources>512mb,4vcores</minResources>
	<maxResources>20480mb,20vcores</maxResources>
	<maxRunningApps>100</maxRunningApps>
	<schedulingMode>fair</schedulingMode>
	<weight>1.5</weight>
	<aclSubmitApps>test1,hadoop,develop test1</aclSubmitApps>
	<aclAdministerApps>test1 group_businessC,supergroup</aclAdministerApps>
</queue>

3、分发新添加的配置文件到集群的所有节点

scp yarn-site.xml fair-scheduler.xml node02: P W D s c p y a r n − s i t e . x m l f a i r − s c h e d u l e r . x m l n o d e 03 : PWD scp yarn-site.xml fair-scheduler.xml node03: PWDscpyarnsite.xmlfairscheduler.xmlnode03:PWD

4、重启Yarn集群
stop-yarn.sh
start-yarn.sh

5、验证
a)添加验证需要的用户(在队列内配置的)
useradd hadoop
passwd hadoop

添加组
groupadd supergroup
对应用户与组的关系(supergroup)
usermod -a -G supergroup hadoop
usermod -a -G supergroup test1
usermod -a -G supergroup develop

刷新HDFS上的组
su - root -s /bin/bash -c “hdfs dfsadmin -refreshUserToGroupsMappings”

b)提交任务,查看浏览器验证
su test1
hadoop jar …/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar pi 10 10
查看界面

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值