• CH6 ResourceManager高可用


    概述

    YARN的资源管理器支持高可用

    体系结构

    0084da019cb90d1453d8f8e7079e5aa9.png

    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.

  • 相关阅读:
    集合
    网络
    File类
    laoshi
    石子合并《1》
    看球的巴士
    打鼹鼠~~线性DP
    题目分享:Wooden Sticks-线性动归
    pycharm怎么切换python版本
    Windows10下CMD输入Python没反应的解决方案
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/14943668.html
Copyright © 2020-2023  润新知