ResourceManager 重启

本文介绍了Yarn中ResourceManager(RM)的重启机制,包括两种重启实现方式:一种是非任务保留重启,在RM重启后会重新提交正在运行的任务;另一种是任务保留重启,在RM重启后继续执行之前的任务状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Yarn中,ResourceManager重启是可以实现正在运行中的任务不失败的,不过首先要进行配置,具体的原理和配置如下:

原理:

| 由于Hadoop不同版本的原因,RM重启有两种不同的实现,两种实现的配置是一样的,只是原理不一样,我们分别来介绍。

|

|  

第一种是在Hadoop 2.4.0版本实现的,官网称为 Non-work-preserving RM restart 即在重启过程中任务不保留。它的原理是当Client提交一个application给RM时,RM会将该application的相关信息存储起来,具体存储的位置是可以在配置文件中指定的,可以存储到本地文件系统上,也可以存储到HDFS或者是Zookeeper上,此外RM也会保存application的最终状态信息(faild,killed,finished),如果是在安全环境下运行,RM还会保存相关证书文件。

当RM被关闭后,NodeManager(以下简称NM)和Client由于发现连接不上RM,会不断的向RM发送消息,以便于能及时确认RM是否已经恢复正常,当RM重新启动后,它会发送一条re-sync(重新同步)的命令给所有的NM和ApplicationMaster(以下简称AM),NM收到重新同步的命令后会杀死所有的正在运行的

containers并重新向RM注册,从RM的角度来看,每台重新注册的NM跟一台新加入到集群中NM是一样的。AM收到重新同步的命令后会自行将自己杀掉。接下来,RM会将存储的关于application的相关信息读取出来,将在RM关闭之前最终状态为正在运行中的application重新提交运行。

第二种是在Hadoop 2.6.0版本中实现的,官网称为 Work-preserving RM restart 即在重启过程中任务是保留的。它与第一种不同的地方在于,RM会记录下container的整个生命周期的数据,包括application运行的相关数据,资源申请状况,队列资源使用状况等数据。如此一来,当RM重启之后,会读取之前存储的关于application的运行状态的数据,同时发送re-sync的命令,与第一种方式不同的是,NM在接受到重新同步的命令后并不会杀死正在运行的containers,而是继续运行containers中的任务,同时将containers的运行状态发送给RM,之后,RM根据自己所掌握的数据重构container实例和相关的application运行状态,如此一来,就实现了在RM重启之后,紧接着RM关闭时任务的执行状态继续执行。

将两种方式对比,第一种只保存了application提交的信息和最终执行状态,并不保存运行过程中的相关数据,所以RM重启后,会先杀死正在执行的任务,再重新提交,从零开始执行任务。第二种方式保存了application运行中的状态数据,所以在RM重启之后,不需要杀死之前的任务,而是接着原来执行到的进度继续执行。

配置:

配置都是写在yarn-site.xml文件中,下面是官网给出的一个简单的示例:

首先配置第一个参数 yarn.resourcemanager.recovery.enabled ,将其值设置为true,表示开启RM重启的功能。

其次,设置 yarn.resourcemanager.store.class ,该参数指RM采用哪种方式存储数据,示例中采用的是ZooKeeper存储。

第三个参数 yarn.resourcemanager.zk-address 用于指定ZooKeeper的服务的地址。

此外还有一些可选的参数可以配置,如ZooKeeper的retry policy和ACLs等参数。

其他的存储方式,如HDFS或本地文件系统,可以参考官网进行配置。

 

转载于:https://www.cnblogs.com/beautycode/p/9515680.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值