在平川直至山脉|

逆十字

园龄:3年4个月粉丝:3关注:3

HDFS HA-Yarn

YARN-HA配置

YARN-HA工作机制

配置 YARN-HA 集群

  • 环境准备

    • 修改 IP
    • 修改主机名及主机名和 IP 地址的映射
    • 关闭防火墙
    • ssh 免密登录
    • 安装 JDK,配置环境变量等
    • 配置 Zookeeper 集群
  • 规划集群

    hadoop102 hadoop103 hadoop104
    ResourceManager ResourceManager ResourceManager
    NodeManager NodeManager NodeManager
    Zookeeper Zookeeper Zookeeper
  • 核心问题

    • 如果当前 active rm 挂了,其他 rm 怎么将其他 standby rm 上位

      核心原理跟 hdfs 一样,利用了 zk 的临时节点

    • 当前 rm 上有很多的计算程序在等待运行,其他的 rm 怎么将这些程序接手过来接着跑

      rm 会将当前的所有计算程序的状态存储在 zk 中,其他 rm 上位后会去读取,然后接 着跑

  • 具体配置

    • yarn-site.xml

      <configuration>
       <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>
       <!-- 声明两台 resourcemanager 的地址 -->
       <property>
       <name>yarn.resourcemanager.cluster-id</name>
       <value>cluster-yarn1</value>
       </property>
       <!--指定 resourcemanager 的逻辑列表-->
       <property>
       <name>yarn.resourcemanager.ha.rm-ids</name>
       <value>rm1,rm2,rm3</value>
      </property>
      <!-- ========== rm1 的配置 ========== -->
      <!-- 指定 rm1 的主机名 -->
       <property>
       <name>yarn.resourcemanager.hostname.rm1</name>
       <value>hadoop102</value>
      </property>
      <!-- 指定 rm1 的 web 端地址 -->
      <property>
       <name>yarn.resourcemanager.webapp.address.rm1</name>
       <value>hadoop102:8088</value>
      </property>
      <!-- 指定 rm1 的内部通信地址 -->
      <property>
       <name>yarn.resourcemanager.address.rm1</name>
       <value>hadoop102:8032</value>
      </property>
      <!-- 指定 AM 向 rm1 申请资源的地址 -->
      <property>
       <name>yarn.resourcemanager.scheduler.address.rm1</name> 
       <value>hadoop102:8030</value>
      </property>
      <!-- 指定供 NM 连接的地址 --> 
      <property>
       <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
       <value>hadoop102:8031</value>
      </property>
      <!-- ========== rm2 的配置 ========== -->
       <!-- 指定 rm2 的主机名 -->
       <property>
       <name>yarn.resourcemanager.hostname.rm2</name>
       <value>hadoop103</value>
      </property>
      <property>
       <name>yarn.resourcemanager.webapp.address.rm2</name>
       <value>hadoop103:8088</value>
      </property>
      <property>
       <name>yarn.resourcemanager.address.rm2</name>
       <value>hadoop103:8032</value>
      </property>
      <property>
       <name>yarn.resourcemanager.scheduler.address.rm2</name>
       <value>hadoop103:8030</value>
      </property>
      <property>
       <name>yarn.resourcemanager.resource-tracker.address.rm2</name>
       <value>hadoop103:8031</value>
      </property>
      <!-- ========== rm3 的配置 ========== -->
      <!-- 指定 rm1 的主机名 -->
       <property>
       <name>yarn.resourcemanager.hostname.rm3</name>
       <value>hadoop104</value>
      </property>
      <!-- 指定 rm1 的 web 端地址 -->
      <property>
       <name>yarn.resourcemanager.webapp.address.rm3</name>
       <value>hadoop104:8088</value>
      </property>
      <!-- 指定 rm1 的内部通信地址 -->
      <property>
       <name>yarn.resourcemanager.address.rm3</name>
       <value>hadoop104:8032</value>
      </property>
      <!-- 指定 AM 向 rm1 申请资源的地址 -->
      <property>
       <name>yarn.resourcemanager.scheduler.address.rm3</name> 
       <value>hadoop104:8030</value>
      </property>
      <!-- 指定供 NM 连接的地址 --> 
      <property>
       <name>yarn.resourcemanager.resource-tracker.address.rm3</name>
       <value>hadoop104:8031</value>
      </property>
       <!-- 指定 zookeeper 集群的地址 --> 
       <property>
       <name>yarn.resourcemanager.zk-address</name>
       <value>hadoop102:2181,hadoop103:2181,hadoop104: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.ZKRMStateSt
      ore</value>
      </property>
      <!-- 环境变量的继承 -->
      <property>
       <name>yarn.nodemanager.env-whitelist</name>
       
      <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLAS
      SPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
       </property>
      </configuration>
      
    • 同步更新其他节点的配置信息,分发配置文件

      [atguigu@hadoop102 etc]xsync hadoop/
      
  • 启动 YARN

    • 在 hadoop102 或者 hadoop103 中执行

      [atguigu@hadoop102 ~]start-yarn.sh
      
    • 查看服务状态

      [atguigu@hadoop102 ~]yarn rmadmin -getServiceState rm1
      
    • 可以去 zkCli.sh 客户端查看 ResourceManager 选举锁节点内容

      [atguigu@hadoop102 ~]$ zkCli.sh
      [zk: localhost:2181(CONNECTED) 16] get -s 
      /yarn-leader-election/cluster-yarn1/ActiveStandbyElectorLock
      cluster-yarn1rm1
      cZxid = 0x100000022
      ctime = Tue Jul 14 17:06:44 CST 2020
      mZxid = 0x100000022
      mtime = Tue Jul 14 17:06:44 CST 2020
      pZxid = 0x100000022
      cversion = 0
      dataVersion = 0
      aclVersion = 0
      ephemeralOwner = 0x30000da33080005
      dataLength = 20
      numChildren = 0
      
    • web 端查看 hadoop102:8088 和 hadoop103:8088 的 YARN 的状态

HADOOP HA的最终规划

将整个 ha 搭建完成后,集群将形成以下模样

Hadoop102 Hadoop103 Hadoop104
NameNode NameNode NameNode
JournalNode JournalNode JournalNode
DataNode DataNode DataNode
Zookeeper Zookeeper Zookeeper
ZKFC ZKFC ZKFC
ResourceManager ResourceManager ResourceManager
NodeManager NodeManager NodeManager

本文作者:逆十字

本文链接:https://www.cnblogs.com/fengxiaolong/p/15862600.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   逆十字  阅读(27)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开
  1. 1 MELANCHOLY White Cherry
MELANCHOLY - White Cherry
00:00 / 00:00
An audio error has occurred.