YARN学习总结-第十一节-YARN-ResourceManagerRestart

ResourceManagerRestart

目前,资源管理器一共有两种重启类型。

Non-work-preserving RM restart、Work-preserving RM restart。

Non-work-preserving RM restart:

在这种重启模式下,RM 会保存应用元数据(应用提交上下文)和应用状态(failed,killed,finished),同时保存认证凭证,例如,安全key,token。只要这些信息保存了,当重启后,RM会从永久存储获取这些信息,然后重新提交应用。如果在关机之前,应用已经完成,则不会再次提交。

在RM宕机之后到启动之前,这段时间,NM和clients会轮询。当RM启动后,会发送一个re-sync命令给所有的NM和AM。NMs会杀死所有容器,然后重新注册。就想是重新加入的。AM会关机。当RM重新把相关数据加载到内存后,它会重新创建AM,让未完成的应用重新可用。所以,存在丢失问题,因为它们本质上是被kill掉的。

Work-preserving RM restart

在这种模式下,RM确保应用状态的持久化,然后在恢复的时候重载。这个重启主要关注重建在YARN集群中的entire running state。这种情况下,RM不会kill掉AM。

RM利用从所有NMs发送来的容器状态恢复自己的运行状态。NM不会kill掉运行的容器。但是AM需要重新发送资源请求,因为有可能RM丢失未完成的请求。使用AMRMClient的用户,不需要担心这些,因为它会自动处理。

配置

yarn.resourcemanager.recovery.enabled

yarn.resourcemanager.store.class:可以获得的存储类如下:

ZooKeeper based state-store:org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore

FileSystem based state-store:org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore

LevelDB based state-store:org.apache.hadoop.yarn.server.resourcemanager.recovery.LeveldbRMStateStore

默认值是文件系统。

配置基于文件系统的state-store

yarn.resourcemanager.fs.state-store.uri

yarn.resourcemanager.fs.state-store.retry-policy-spec:默认值是(2000,500),格式为(t0,n0)t0:sleep t0,n0:retry

配置基于ZooKeeper的state-store

hadoop.zk.address

yarn.resourcemanager.zk-state-store.parent-path:znode,默认为/rmstore

hadoop.zk.num-retries:默认为500,如果连接丢失,尝试次数。

hadoop.zk.retry-interval.ms:默认为2sec,重试间隔。

hadoop.zk.timeout-ms:ZK会话超时时间,单位为毫秒,默认为10sec

hadoop.zk.acl:默认值为:world.anyone.rwcda

配置基于LevelDB的state-store

yarn.resoucemanager.leveldb-state-store.path:

yarn.resourcemanager.work-preserving-recovery.scheduling-wait-ms:

<property>
   <description>Enable RM to recover state after starting. If true, then
   yarn.resourcemanager.store.class must be specified</description>
   <name>yarn.resourcemanager.recovery.enabled</name>
   <value>true</value>
 </property>

 <property>
   <description>The class to use as the persistent store.</description>
   <name>yarn.resourcemanager.store.class</name>
   <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
 </property>

 <property>
   <description>Comma separated list of Host:Port pairs. Each corresponds to a ZooKeeper server
   (e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002") to be used by the RM for storing RM state.
   This must be supplied when using org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
   as the value for yarn.resourcemanager.store.class</description>
   <name>hadoop.zk.address</name>
   <value>127.0.0.1:2181</value>
 </property>

猜你喜欢

转载自blog.csdn.net/qq_20995587/article/details/82148091