1. yarn

yarn调度之资源抢占

事件:

datax on yarn 3点出现任务失败,错误信息:[Error] DataX receive unexpected signal 15, starts to suicide。jdk还打印了stack信息。

问题分析:

signal15为外部kill,jvm打印thread dump也是由于kill产生,尤其是kill -3会thread dump。

是机器内存不足被OS kill?

到/var/log/messages寻找,无相关日志,机器内存监控显示内存充足。

yarn资源抢占,被yarn rm kill了?

集群使用fair + drf调度策略,并开启了资源抢占。不同的队列之间资源会相互竞争和抢占。定位问题,寻找rm的日志,找到对应container被kill的日志。

cat hadoop-admin-resourcemanager-atbgmaster01.log | grep Preemp
2022-08-30 03:46:45,405 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSPreemptionThread: Preempting container container_e218_1660283393121_113037_01_000002 from queue: root.project.yarn
2022-08-30 03:47:00,405 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSPreemptionThread: Killing container container_e218_1660283393121_113037_01_000002

添加yarn抢占容器数量监控

Hadoop_ResourceManager_AggregateContainersPreempted{name=”QueueMetrics”,q0=”root”, user=””,instance=”x.x.x.x:7011″}

preempted抢占

解决方式:

1、队列划分更精细,资源划分按业务,调整配比

2、关闭资源抢占

原理:

yarn 调度

FIFO Scheduler、Capacity Scheduler、Fair Scheduler

什么时候发生抢占?

Ø 最小资源抢占, 当前queue的资源无法保障时,而又有apps运行,需要向外抢占。
Ø 公平调度抢占, 当前queue的资源为达到max,而又有apps运行,需要向外抢占。

具体详见yarn源码实现。

参考:

https://cloud.tencent.com/developer/article/1195056 YARN资源调度策略

Comments to: yarn调度之资源抢占

Your email address will not be published. Required fields are marked *