Hadoop集群的高可用(HA):NameNode和resourcemanager高可用的搭建

文章目录


一、NameNode高可用的搭建

1、免密配置

2、三个节点都需要安装psmisc

bash 复制代码
yum install -y psmisc

3、检查三个节点是否都安装jdk以及zk

4、检查是否安装了hadoop集群

如果以前安装过了,则需要清空数据:

1.先停止集群:

bash 复制代码
stop-all.sh

2.清理集群中的data数据:

bash 复制代码
rm -rf /opt/installs/hadoop/tmp/ /opt/installs/hadoop/logs/

5、修改hadoop-env.sh

bash 复制代码
export JAVA_HOME=/opt/installs/jdk/ 

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root

6、修改core-site.xml

bash 复制代码
<!--覆盖-->
<configuration>
  <!--hdfs入口,设置虚拟地址,具体地址后面配置-->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hdfs-cluster</value>
  </property>
  <!--hdfs集群的文件位置-->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/installs/hadoop/tmp</value>
  </property>
  <!--hdfs要访问zookeeper集群-->
  <property>
    <name>ha.zookeeper.quorum</name>
    <value>node01:2181,node02:2181,node03:2181</value>
  </property>
</configuration>

7、修改hdfs-site.xml

bash 复制代码
<!--覆盖-->
<configuration>
    <!-- 副本数 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!-- 定义dhfs入口的命名服务 -->
    <property>
        <name>dfs.nameservices</name>
        <value>hdfs-cluster</value>
    </property>
    <!-- 定义hdfs入口的命名服务下虚拟ip-->
    <property>
        <name>dfs.ha.namenodes.hdfs-cluster</name>
        <value>nn1,nn2</value>
    </property>
    <!-- 虚拟ip地址1 RPC入口 -->
    <property>
        <name>dfs.namenode.rpc-address.hdfs-cluster.nn1</name>
        <value>node01:9820</value>
    </property>
    <!-- 虚拟ip地址1 HTTP入口 -->
    <property>
        <name>dfs.namenode.http-address.hdfs-cluster.nn1</name>
        <value>node01:9870</value>
    </property>
    <!-- 虚拟ip地址2 PRC入口 -->
    <property>
        <name>dfs.namenode.rpc-address.hdfs-cluster.nn2</name>
        <value>node02:9820</value>
    </property>
    <!-- 虚拟ip地址1 HTTP入口 -->
    <property>
        <name>dfs.namenode.http-address.hdfs-cluster.nn2</name>
        <value>node02:9870</value>
    </property>
    
    <!-- 定义QJN在linux中保存文件磁盘目录 -->
    <property>
        <!-- Journal Edit Files 的存储目录:() -->
        <name>dfs.journalnode.edits.dir</name>
        <value>/opt/installs/journalnode/data/</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://node01:8485;node02:8485;node03:8485/hdfs-cluster</value>
    </property>
    
    
    <!-- 是否开启故障切换 -->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    
    
    <!-- 基于zookeeper的故障切换的代码类 -->
    <property>
        <name>dfs.client.failover.proxy.provider.hdfs-cluster</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    
    
    <!-- 远程杀死namenode方式(防止namenode假死,导致双主出现) -->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <!-- 指定私钥的文件目录,使用免密登录杀死NN进程 -->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>

    <!-- 可以在hdfs上点击结果查看-->
    <property>
      <name>dfs.webhdfs.enabled</name>
      <value>true</value>
    </property>
</configuration>

8、检查workers 文件是否为三台服务

9、分发给其他两个节点

分发脚本编写地址:脚本编写链接

bash 复制代码
cd /opt/installs/hadoop/etc/hadoop

xsync.sh hadoop-env.sh core-site.xml hdfs-site.xml

10、初始化ZKFC在zk中的Znode信息

1.先启动zk

bash 复制代码
zk.sh start

2.在主节点进行即可

bash 复制代码
hdfs zkfc -formatZK

11、在三台服务器上启动journalnode

bash 复制代码
hadoop-daemon.sh start journalnode

12、对集群进行namenode的格式化

bash 复制代码
hdfs namenode -format

13、启动hdfs

14、启动第二个namenode

1.第一次需要运行如下命令,以后不需要:

bash 复制代码
hdfs namenode -bootstrapStandby

2.接着,启动第二个namenode:

bash 复制代码
hadoop-daemon.sh start namenode

15、第二次只需要正常启动zk和hadoop即可

需要先启动zk,再启动hadoop

namenode的web界面:node01:9870

二、resourcemanager高可用搭建

1、检查mapred-site.xml

里面只有yarn配置和historyServer的配置,不需要修改

2、修改yarn-site.xml

以前配置的yarn以及日志服务的配置不动,添加ha的相关配置即可:

bash 复制代码
<configuration>

  <!--配置resourcemanager的HA-->
  <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
  </property>
  <!-- RM 集群标识 -->
  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yarn-cluster</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>node01</value>
  </property>
  <!-- RM1 的主机web管理界面地址 --> 
  <property>
    <name>yarn.resourcemanager.webapp.address.rm1</name>
    <value>node01:8088</value>
  </property>
  <!-- RM2 的主机地址 -->
  <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>node02</value>
  </property> 
  <!-- RM2 的主机web管理界面地址 -->  
  <property>
    <name>yarn.resourcemanager.webapp.address.rm2</name>
    <value>node02:8088</value>
  </property>
  <!-- ZooKeeper 集群的地址 -->  
  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>node01:2181,node02:2181,node03:2181</value>
  </property> 
  <!-- 启用自动恢复 --> 
  <property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
  </property> 
  <!-- 用于yarn故障转移持久化zk的类 -->
  <property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property> 

<!-- 关闭虚拟内存检查 -->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
 </property>

</configuration>

3、分发

bash 复制代码
cd /opt/installs/hadoop/etc/hadoop/

# 只需要同步一个,因为另一个根本没有修改。
xsync.sh yarn-site.xml

4、启动yarn

5、查看是否配置成功

bash 复制代码
yarn rmadmin -getAllServiceState

resourcemanager的web界面:node01:8088

6、遇到的问题

假如你在启动过程中,发现resourcemanager有两个,但是都是standby,有可能是版本兼容问题:

hadoop3.1.6 需要兼容 zookeeper 3.4.10 hadoop3.3.1 需要兼容 zookeeper 3.6.4 ,否则就会有问题。

namenode 高可用没问题,resourcemanager的高可用有问题。

相关推荐
EDG Zmjjkk23 分钟前
Hive 查询(详细实操版)
数据仓库·hive·hadoop
Hsu_kk1 小时前
Hive 查询各类型专利 Top 10 申请人及对应的专利申请数
数据仓库·hive·hadoop
大数据编程之光2 小时前
Hive 查询各类型专利 top10 申请人及专利申请数
大数据·数据仓库·hive·hadoop
杰克逊的日记2 小时前
Hive详解
数据仓库·hive·hadoop
上辈子杀猪这辈子学IT2 小时前
【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作
linux·hadoop·zookeeper·centos·debian
Hsu_kk4 小时前
Hive 查询用户连续三天登录的所有记录
数据仓库·hive·hadoop
kakwooi7 小时前
Hadoop---MapReduce(3)
大数据·hadoop·mapreduce
windy1a8 小时前
【c知道】Hadoop工作原理。
hadoop
油头少年_w13 小时前
大数据导论及分布式存储HadoopHDFS入门
大数据·hadoop·hdfs
工业互联网专业15 小时前
Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
vue.js·hadoop·python·flask·毕业设计·源码·课程设计