大数据之hadoop YARN 高可用性 HA 架构 Active/Standby ResourceManager 部署

大数据阿木 发布于 4 天前 1 次阅读


Hadoop YARN 高可用性(HA)架构部署详解

随着大数据时代的到来,Hadoop 作为一款开源的大数据处理框架,在国内外得到了广泛的应用。Hadoop 的核心组件之一是 YARN(Yet Another Resource Negotiator),它负责资源管理和作业调度。为了确保 Hadoop 集群的稳定性和可靠性,YARN 高可用性(HA)架构应运而生。本文将围绕 YARN HA 架构的部署进行详细讲解。

YARN HA 架构概述

YARN HA 架构主要针对 ResourceManager(RM)进行冗余设计,通过将 RM 资源管理功能拆分为两个独立的组件:Active ResourceManager(Active RM)和 Standby ResourceManager(Standby RM)。当 Active RM 出现故障时,Standby RM 可以迅速接管资源管理功能,保证集群的持续运行。

YARN HA 架构主要包括以下组件:

1. Active ResourceManager(Active RM):负责集群的资源管理和作业调度。

2. Standby ResourceManager(Standby RM):作为 Active RM 的备份,当 Active RM 出现故障时,Standby RM 可以接管资源管理功能。

3. ResourceManager High Availability Service(RMHA):负责 Active RM 和 Standby RM 之间的状态同步和故障转移。

4. ZooKeeper:作为 RMHA 的协调服务,负责 RMHA 中的状态同步和故障转移。

YARN HA 架构部署步骤

1. 环境准备

在部署 YARN HA 架构之前,需要准备以下环境:

1. Hadoop 集群:包括 NameNode、DataNode、ResourceManager、NodeManager 等组件。

2. ZooKeeper 集群:负责 RMHA 的状态同步和故障转移。

3. Java 环境:Hadoop 需要运行在 Java 环境中。

2. 配置文件修改

1. 修改 `hadoop-env.sh` 文件,设置 Java 环境变量。

bash

export JAVA_HOME=/usr/local/java


2. 修改 `yarn-env.sh` 文件,设置 Java 环境变量。

bash

export JAVA_HOME=/usr/local/java


3. 修改 `core-site.xml` 文件,配置 ZooKeeper 集群地址。

xml

<configuration>


<property>


<name>fs.defaultFS</name>


<value>hdfs://namenode1:8020</value>


</property>


<property>


<name>ha.zookeeper.quorum</name>


<value>zookeeper1:2181,zookeeper2:2181,zookeeper3:2181</value>


</property>


</configuration>


4. 修改 `hdfs-site.xml` 文件,配置 NameNode 高可用性。

xml

<configuration>


<property>


<name>dfs.ha.namenodes</name>


<value>nn1,nn2</value>


</property>


<property>


<name>dfs.namenode.rpc-address.nn1</name>


<value>namenode1:8020</value>


</property>


<property>


<name>dfs.namenode.rpc-address.nn2</name>


<value>namenode2:8020</value>


</property>


<property>


<name>dfs.namenode.http-address.nn1</name>


<value>namenode1:50070</value>


</property>


<property>


<name>dfs.namenode.http-address.nn2</name>


<value>namenode2:50070</value>


</property>


<property>


<name>dfs.client.failover.proxy.provider.nn1</name>


<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>


</property>


<property>


<name>dfs.client.failover.proxy.provider.nn2</name>


<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>


</property>


</configuration>


5. 修改 `yarn-site.xml` 文件,配置 ResourceManager 高可用性。

xml

<configuration>


<property>


<name>yarn.resourcemanager.ha.enabled</name>


<value>true</value>


</property>


<property>


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


<value>rm1,rm2</value>


</property>


<property>


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


<value>rm1:8032</value>


</property>


<property>


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


<value>rm2:8032</value>


</property>


<property>


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


<value>rm1:8088</value>


</property>


<property>


<name>yarn.resourcemanager.webapp.address.rm2</name>


<value>rm2:8088</value>


</property>


<property>


<name>yarn.resourcemanager.resource-tracker.address.rm1</name>


<value>rm1:8031</value>


</property>


<property>


<name>yarn.resourcemanager.resource-tracker.address.rm2</name>


<value>rm2:8031</value>


</property>


<property>


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


<value>rm1:8030</value>


</property>


<property>


<name>yarn.resourcemanager.admin.address.rm2</name>


<value>rm2:8030</value>


</property>


<property>


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


<value>rm1:8033</value>


</property>


<property>


<name>yarn.resourcemanager.scheduler.address.rm2</name>


<value>rm2:8033</value>


</property>


<property>


<name>yarn.resourcemanager.recovery-secret-manager.address.rm1</name>


<value>rm1:8034</value>


</property>


<property>


<name>yarn.resourcemanager.recovery-secret-manager.address.rm2</name>


<value>rm2:8034</value>


</property>


<property>


<name>yarn.resourcemanager.recovery-addr.rm1</name>


<value>rm1:8035</value>


</property>


<property>


<name>yarn.resourcemanager.recovery-addr.rm2</name>


<value>rm2:8035</value>


</property>


<property>


<name>yarn.resourcemanager.ha.zookeeper.quorum</name>


<value>zookeeper1:2181,zookeeper2:2181,zookeeper3:2181</value>


</property>


<property>


<name>yarn.resourcemanager.ha.zookeeper.session-timeout</name>


<value>6000</value>


</property>


</configuration>


6. 修改 `mapred-site.xml` 文件,配置 ResourceManager 高可用性。

xml

<configuration>


<property>


<name>mapreduce.framework.name</name>


<value>yarn</value>


</property>


<property>


<name>mapreduce.jobhistory.address</name>


<value>jobhistory:10020</value>


</property>


<property>


<name>mapreduce.jobhistory.webapp.address</name>


<value>jobhistory:19888</value>


</property>


</configuration>


3. 启动服务

1. 启动 ZooKeeper 集群。

2. 启动 HDFS 集群。

3. 启动 YARN 集群。

bash

start-dfs.sh


start-yarn.sh


4. 验证 HA 架构

1. 查看 ResourceManager 状态。

bash

yarn rmadmin -list-active-alive-rms


2. 停止 Active RM。

bash

stop-yarn.sh


3. 查看 ResourceManager 状态,确认 Standby RM 已接管。

bash

yarn rmadmin -list-active-alive-rms


4. 启动 Active RM。

bash

start-yarn.sh


5. 查看ResourceManager状态,确认 Active RM 已恢复。

bash

yarn rmadmin -list-active-alive-rms


总结

本文详细介绍了 YARN HA 架构的部署过程,包括环境准备、配置文件修改、服务启动和验证。通过 YARN HA 架构,可以确保 Hadoop 集群的稳定性和可靠性,提高大数据处理效率。在实际应用中,可以根据具体需求对 YARN HA 架构进行优化和调整。