概述
YARN的资源管理器支持高可用
体系结构
RM故障转移
RM HA是主从结构,任何时候只有一个主,多个从。转移通过admin客户端或者集成的故障转移控制器自动故障转移。
手动事务和故障转移
没有配置自动故障转移的情况下,管理员可以手动的进行故障转移,使用yarn rmadmin
自动故障转移
RM可以通过参数继承zookeeper的主从选举器来决定性的主。当主下线或者无法响应,另外一个RM就会自动被选举成为新的主。这里不需要单独的运行ZKFC(比如HDFS),因为选举器已经被嵌入在了RM中。
客户端,AM,NM的RM故障转移
当有多个RM,客户端和node被列在所有的RM中。客户端,AM,NM以轮训的方式尝试连接到一个活动的RM。如果活动的RM下线,它们会恢复轮训机制直到一个新的活动RM出现。轮训机制通过
yarn.client.failover-proxy-provider配置。
恢复之前的活动RM状态
如果配置了ResourceManager重启,RM可以加载RM内部状态并且恢复之前的执行推进到活动状态。为每个之前提交到RM的管理应用创建一个重试。应用可以定期的checkpoint避免丢失工作。状态存储必须对主从RM都可见。目前有2种RMStateStore:
1.永久的FileSystemRMStateStore
2.ZKRMStateStore.
ZKRMStateStore同时只能由一个用户写入。当使用ZKRMStateStore时不需要在为脑裂问题才用其他的保护机制。当使用ZKRMStateStore,最好关闭zookeeper.DigestAuthenticationProvider.superDigest,防止zookeeper管理员读取到YARN应用或者用户的凭据信息。
部署
配置
属性 | 值 |
---|---|
hadoop.zk.address | ZK地址 |
yarn.resourcemanager.ha.enabled | 是否启动RMHA |
yarn.resourcemanager.ha.rm-ids | RM列表啊如rm1,rm2 |
yarn.resourcemanager.hostname.rm-id | rm-id的主机名 |
yarn.resourcemanager.address.rm-id | rm-id的地址 |
yarn.resourcemanager.scheduler.address.rm-id | rm-id的调度器地址 |
yarn.resourcemanager.resource-tracker.address.rm-id | NodeManager的地址 |
yarn.resourcemanager.admin.address.rm-id | 管理性命令的地址 |
yarn.resourcemanager.webapp.address.rm-id | RM web应用的地址 |
yarn.resourcemanager.webapp.https.address.rm-id | RM https用的地址 |
yarn.resourcemanager.ha.id | ha编号 |
yarn.resourcemanager.ha.automatic-failover.enabled | 是否启动自动故障转移 |
yarn.resourcemanager.ha.automatic-failover.embedded | ZK选举器 |
yarn.resourcemanager.cluster-id | 集群id |
yarn.client.failover-proxy-provider | 轮训策略的类名 |
yarn.client.failover-max-attempts | FailoverProxyProvider最大轮训次数 |
yarn.client.failover-sleep-base-ms | 故障转移间基本sleep时间 |
yarn.client.failover-sleep-max-ms | 故障转移间最大的sleep时间 |
yarn.client.failover-retries | 尝试连接到RM的次数 |
yarn.client.failover-retries-on-socket-timeouts | 尝试连接到RM套接字超时次数 |
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>master2</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>master1:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>master2:8088</value>
</property>
<property>
<name>hadoop.zk.address</name>
<value>zk1:2181,zk2:2181,zk3:2181</value>
</property>
管理命令
使用yarn rmadmin查看状态,比如
$ yarn rmadmin -getServiceState rm1
active
$ yarn rmadmin -getServiceState rm2
standby
通过以下命令转移:
$ yarn rmadmin -transitionToStandby rm1
Automatic failover is enabled for org.apache.hadoop.yarn.client.RMHAServiceTarget@1d8299fd
Refusing to manually manage HA state, since it may cause
a split-brain scenario or other incorrect state.
If you are very sure you know what you are doing, please
specify the forcemanual flag.
ResourceManager Web UI服务
如果有从rm运行,standby会把所有的web请求重定向到活动的rm
Web 服务
如果有从rm运行,ResourceManager REST APIs调用会被重定向打气活动的RM
Load Balancer
如果有个RM集群运行在Load Balancer上,可以通过/isactive到http端查看健康情况如,
http://RM_HOSTNAME/isActive如果为200表示RM是active的,否则405.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2018-06-28 firewall防火墙使用