zoukankan      html  css  js  c++  java
  • YARN High Availablity

    1. RM Failover

     

    ResourceManager HA 由一个Active/Standby 架构实现:在任何时间点,仅有一个RM是Active,其他一个(或多个)RM节点处于Standby 模式,在Active RM发生故障后,Standby RM 取代它并接管Active的工作。触发转换成active的操作可以由管理命令完成,或是自动由内置的failover-controller完成(需要开启automatic-failover的功能)。

    2. 手动转换与failover

    当自动failover没有开启时,管理员需要手动将RM的状态转为Active。为了完成failover,首先需要将Active-RM 转换为Standby,然后将Standby-RM 转换为Active。这些均可以通过 yarn rmadmin 命令完成。

    3. 自动failover

    RMs可以配置一个内置的,基于 Zookeeper 的ActiveStandbyElector,用于决定哪个RM应该是Active的。当Active RM 出现故障下线,或者无法响应了,另一个RM会被自动推选为Active,并接管之后的工作。需要注意的是,这里没有必要像 HDFS HA 那样运行一个额外的ZKFC守护进程,因为ActiveStandbyElector 内置于RM,担任failure detector以及leader elector的角色,可以替代ZKFC守护进程

    4. 客户端,ApplicationMaster 以及 NodeManager RM failover

    当集群中有多个RM时,客户端以及节点所使用的 yarn-site.xml配置文件中,需要列出所有的RMs。客户端,AM以及NM会尝试以轮询的方式去连接RMs,直到命中Active RM。如果Active RM 下线了,则它们会重新尝试轮询,直到命中新的Active RM。默认的重试逻辑由org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider.可以通过实现org.apache.hadoop.yarn.client.RMFailoverProxyProvider类并设置参数 yarn.client.failover-proxy-provider 为实现的类名,以覆盖默认的实现。

    5. 恢复前一个active-RM 的状态

    在ResourceManager Restart的功能开启后,RM可以被提升为active 状态。加载RM的内部状态数据,并尽可能地从前一个active RM 终止的点继续工作(依赖于RM restart的功能)。对于前Active RM 管理的每个提交的application,均会发起一个新的attempt。Applications可以定期做checkpoint,以防止丢失任何工作。存储的RM 应用状态的 state-store 必须均可被Active/Standby RM 访问。对于状态数据持久化,当前有两种实现RMStateStore 的方式:FileSystemRMStateStore 和 ZKRMStateStore。ZKRMStateStore 在任何时刻仅允许一个RM 拥有写权限,所以它时在HA集群中被推荐使用的方式。在使用ZKRMStateStore时,没有必要再单独增加一个fencing机制(此机制防止可能的脑裂状态),因为多个RM可以自行assume the Active role。

    在使用ZKRMStateStore时,建议不要在Zookeeper中设置zookeeper.DigestAuthenticationProvider.superDigest 属性,以确保zookeeper admin 没有访问 yarn application/user credential 信息的权限。

    6. 部署

    下面是YARN HA 有关配置项:

    1. yarn.resourcemanager.zk-address

    ZK-quorum的地址,用于state-store以及embedded leader-election

    2. yarn.resourcemanager.ha.enabled

    Enable HA

    3. yarn.resourcemanager.rm-ids

    列出RMs的逻辑 id,如:

    <property>

        <name>yarn.resourcemanager.ha.rm-ids</name>

        <value>rm1,rm2,rm3</value>

      </property>

    4. yarn.resourcemanager.hostname.rm-id

    对每个 rm-id,设置它对应的RM hostname,如:

    <property>

        <name>yarn.resourcemanager.hostname.rm1</name>

        <value>xx.xx.xx.xx</value>

      </property>

    5. yarn.resourcemanager.address.rm-id

    对每个rm-id,指定host:port地址,用于客户端提交job。在指定后,会覆盖 yarn.resourcemanager.hostname.rm-id 里的内容,例如:

    <property>

        <name>yarn.resourcemanager.address.rm1</name>

        <value>ip-xx.xx.xx.xx:8032</value>

      </property>

    6. yarn.resourcemanager.ha.automatic-failover.enabled

    开启自动failover功能,仅当HA功能开启后才开启此功能

    7. yarn.resourcemanager.ha.automatic-failover.embedded

    使用内置的 leader-elector 选择Active RM,仅当 HA 功能开启后才开启此功能

    8. yarn.resourcemanager.cluster-id

    集群标识符,elector 使用此属性以确保某个RM不会接管另一集群的工作,例如:

    <property>

        <name>yarn.resourcemanager.cluster-id</name>

        <value>ha-rm-uri</value>

      </property>

    7. 管理命令

    yarn rmadmin 提供了部分 HA 相关的命令,用于检查RM 的健康状态,并转换某个RM的状态到Active/Standby。命令接受的 RM id为配置文件中 yarn.resourcemanager.ha.rm-ids 中指定的id。

    常规命令如:

    > yarn rmadmin -getServiceState rm1

    standby

    > yarn rmadmin -getServiceState rm3

    active

    > yarn rmadmin -getAllServiceState

    ip-x.x.x.x:8033     standby

    ip-y.y.y.y:8033     standby

    ip-z.z.z.z:8033      active

    如果开启了自动failover的功能,则无法手动做transition。不过仍可以通过加上 -forcemanual 的标识进行强制手动failover(不建议):

    > yarn rmadmin -transitionToActive rm1

    Automatic failover is enabled for org.apache.hadoop.yarn.client.RMHAServiceTarget@1ea9f6af

    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.

    也可以在zookeeper 里查看对应 active 的 RM

    > get /yarn-leader-election/ha-rm-uri/ActiveBreadCrumb

    ha-rm-uri


    rm1

    > get /yarn-leader-election/ha-rm-uri/ActiveStandbyElectorLock

    ha-rm-uri


    rm1

    8. Web Service and UI

    在 standby RM 也是正常运行的情况下,在访问standby RM 的 web UI 地址时,会自动转发请求到Active 的 RM,除了“About”页面

    对于发往standby RM 的 Yarn Web Service (如 yarn REST APIs)的请求,standby RM 也会自动重定向到Active 的 RM

    References:

    https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html

  • 相关阅读:
    苹果一体机发射Wi-Fi
    iphone 屏蔽系统自动更新,消除设置上的小红点
    data parameter is nil 异常处理
    copy与mutableCopy的区别总结
    java axis2 webservice
    mysql 远程 ip访问
    mysql 存储过程小问题
    mysql游标错误
    is not writable or has an invalid setter method错误的解决
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
  • 原文地址:https://www.cnblogs.com/zackstang/p/10812523.html
Copyright © 2011-2022 走看看