第 3 章 Yarn ResourceManger HA

3.1 介绍

Yarn ResourceManger(RM)负责追踪集群中的资源, 并且调度应用(比如: MapReduce jobs).

在 Hadoop 2.4 之前, Yarn ResourceManager 也是存在单点失效的(single point of faiilure).

RM 的 HA 特性添加了冗余, 以 Active RM 和 Standby RM 的形式在工作.


3.2 架构

由于 RM 基本不涉及到数据的存储, 所以它的 HA 实现相对于 HDFS HA 要简单的多.


3.3 RM Failover

ResourceManger HA 依赖 Active/Standby 架构, 在任何时间, 只有一个 RM 是 Active, 其他的 RM 都是 Standby.

和 HDFS HA 类似, RM HA 即可以手动备灾, 也可以自动备灾.

3.3.1 手动备灾

如果没有启动自动备灾, 管理员必须手动把一个 Standby RM 变成 Active RM.

如果想要手动备灾, 必须先把 Active RM 变成 Standby RM, 然后再把其他的 Standby RM 变成 Active RM.

所有这些操作都可以使用 yarn rmadmin CLI

3.3.2 自动备灾

RMs 有选项可以使用基于 Zookeeper 的 ActiveStandbyElector 来决定哪个 RM 应该是活动的.

当活动的 RM 挂了, 或者没有响应了, 另外一个 RM 就会自动被选举成 Active RM.

有一定需要注意的是, 没有必须去想 HDFS HA 那样去运行一个单独的 ZKFC, 因为 ActiveStandbyElector 已经做到了失败检测和领导选举来替换 ZKFC

3.3.3 客户端, ApplicationMaster 和 NodeManger

当有多个 ResourceManager 的时候, 客户端和节点要求配置文件(yarn-site.xml) 列出所有的 ResourceManager .

客户端, ApplicationMasters(AMs)和 NodeManagers(NMs) 会试图以循环的方式连接 ResourceManagers, 知道他们连上 Active RM.

如果 Active RM 挂了, 他们就一直循环的去连, 直到产生新的 Active RM.

默认的重试的逻辑是由这个类提供的:org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvide

3.4 RM HA 部署

3.4.1 配置 yarn-site.xml

所有的关于 Yarn ResourceManger 的配置都在这个文件中.

下面是 RM HA 的最小配置.

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!--启用resourcemanager ha-->
<property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
</property>

<!--指定一个集群. 由选民使用, 确保 RM 不会接管其他集群的活动-->
<property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>cluster-yarn1</value>
</property>

<!-- 列举多个 RM 的逻辑 ID -->
<property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
</property>

<!-- RM1 的主机地址 -->
<property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>hadoop201</value>
</property>

<!-- RM2 的主机地址 -->
<property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>hadoop202</value>
</property>

<!--指定zookeeper集群的地址--> 
<property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>hadoop201:2181,hadoop202:2181,hadoop203:2181</value>
</property>

<!--启用自动备灾功能--> 
<property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
</property>

<!--指定resourcemanager的状态信息存储在zookeeper集群--> 
<property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>

3.4.2 启动

步骤1: 分发配置文件yarn-site.xml到其他节点

步骤2: 在 hadoop201启动 yarn

sbin/start-yarn.sh

步骤3: 在 hadoop202单独启动 ResourceManager

sbin/yarn-daemon.sh start resourcemanager

步骤4: 查看 ResourceManger状态

bin/yarn rmadmin -getServiceState rm1

步骤5: 自动备灾

Copyright © 尚硅谷大数据 & 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-11-11 09:38:54

results matching ""

    No results matching ""