Hadoop 3.x|第十七天|Yarn框架(调度器,常用命令,生产环境配置参数)

作业调度器

Hadoop作业调度器主要有三种:FIFO,容量(Capacity Scheduler)和公平(Fair Scheduler)。
Hadoop3.1.3默认的资源调度器是Capacity Scheduler
CDH框架默认调度器是Fair Scheduler
在这里插入图片描述

FIFO先进先出调度器

FIFO调度器(First In First Out):单队列,根据提交作业的先后顺序,先来先服务。
一个job里可能包含多个MapTask和多个ReduceTask,把Job分配给服务器节点资源。
在这里插入图片描述

容量调度器

多队列

每个队列可配置一定的资源量,每个队列采用FIFO调度策略。

容量保证

管理员可为每个队列设置资源最低保证和资源使用上限。

灵活性

如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其它队列借调的资源会归还给该队列。

多租户

支持多用户共享集群和多应用程序同时运行。
为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。

算法

  1. 队列资源分配:从root开始,使用深度优先算法,优先选择资源占用率最低的队列分配资源。
  2. 作业资源分配:默认按照提交作业的优先级和提交时间顺序分配资源。
  3. 容器资源分配:按照容器的优先级分配资源,如果优先级相同,按照数据本地性原则,即(1)任务和数据在同一节点 2)任务和数据在同一机架 (3)任务和数据不在同一节点也不在同一机架

在这里插入图片描述

公平调度器

同队列所有任务共享资源,在时间尺度上获得公平的资源。

和容量调度器的相同点

  1. 多队列
  2. 容量保证
  3. 灵活性
  4. 多租户

和容量调度器的不同点

  1. 核心调度策略不同,容量调度器会优先选择资源利用率低的队列,而公平调度器会优先选择对资源的缺额比例大的。
  2. 每个队列可以单独设置资源分配方式,容量调度器可以设置FIFO或DRF,而公平调度器可以设置FIFO,FAIR,DRF。

缺额

公平调度器的设计目标是:在时间尺度上,所有作业获得公平的资源。某一时刻一个作业应获资源和实际获取资源的差距叫“缺额”
所以调度器会优先为缺额大的作业分配资源。

策略

  1. 公平调度每个队列资源分配策略如果选择FIFO的话,此时公平调度器相当于上面讲过的容量调度器。
  2. Fair策略是一种基于最大最小公平算法实现的资源多路复用方式,默认情况下,每个队列内部采用该方式分配资源。就是说,加入一个队列里有两个应用程序同时运行,则每个应用程序可得到1/2的资源,如果三个应用程序同时运行,则每个程序可得到1/3的资源。具体资源分配流程和容量调度器一致:选择队列;选择作业;选择容器

资源分配方式

在这里插入图片描述
在这里插入图片描述

DRF策略

很多时候资源并不是单一标准,而是有很多种,例如内存,CPU,网络带宽等,这样我们很难衡量两个应用应该分配的资源比例。
在YARN中,可以使用DRF来决定如何调度

YARN常用命令

查看任务

1.列出所有Application

yarn application -list

2.根据Application状态过滤(ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED)

yarn application -list -appStates **FINISHED**

3.Kill掉Application

yarn application -kill application_1612577921195_0001

查看日志

1.查询Application日志
yarn logs -applicationId

yarn logs -applicationId application_1612577921195_0001

2.查询Container日志
yarn logs -applicationId -containerId

yarn logs -applicationId application_1612577921195_0001 -containerId container_1612577921195_0001_01_000001

查看尝试运行的任务

1.列出所有Application尝试的列表

arn applicationattempt -list application_1612577921195_0001

2.打印ApplicationAttemp状态

yarn applicationattempt -status <ApplicationAttemptId>

查看容器

1.列出所有Container
yarn container -list

yarn container -list appattempt_1612577921195_0001_000001

2.打印Container状态
yarn container -status

yarn container -status container_1612577921195_0001_01_000001

查看节点状态

yarn node -list -all

更新配置

yarn rmadmin -refreshQueues

查看队列

yarn queue -status <QueueName>

生产环境核心配置参数

ResourceManager相关

配置调度器,默认容量:yarn.resourcemanager.scheduler.class

ResourceManager处理调度器请求的线程数量,默认50:yarn.resourcemanager.scheduler.client.thread-count

NodeManager相关

yarn.nodemanager.resource.detect-hardware-capabilities 是否让yarn自己检测硬件进行配置,默认false

yarn.nodemanager.resource.count-logical-processors-as-cores 是否将虚拟核数当作CPU核数,默认false

yarn.nodemanager.resource.pcores-vcores-multiplier 虚拟核数和物理核数乘数,例如:4核8线程,该参数就应设为2,默认1.0

yarn.nodemanager.resource.memory-mb NodeManager使用内存,默认8G

yarn.nodemanager.resource.system-reserved-memory-mb NodeManager为系统保留多少内存

yarn.nodemanager.resource.cpu-vcores NodeManager 使用CPU核数,默认8个

yarn.nodemanager.pmem-check-enabled 是否开启物理内存检查限制container,默认打开
yarn.nodemanager.vmem-check-enabled 是否开启虚拟内存检查限制container,默认打开
yarn.nodemanager.vmem-pmem-ratio 虚拟内存物理内存比例,默认2.1

Container相关

yarn.scheduler.minimum-allocation-mb 容器最最小内存,默认1G
yarn.scheduler.maximum-allocation-mb 容器最最大内存,默认8G
yarn.scheduler.minimum-allocation-vcores 容器最小CPU核数,默认1个
yarn.scheduler.maximum-allocation-vcores 容器最大CPU核数,默认4个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值