Hadoop 高可用(HA)(二)

该文详细介绍了如何在多台服务器上安装和配置Hadoop高可用集群,包括JDK和Zookeeper的安装,Hadoop环境变量设置,配置文件修改(如core-site.xml,hdfs-site.xml,yarn-site.xml等),以及Namenode的格式化,JournalNode,Datanode,YARN的启动,最后进行了集群健康检查。重点在于HA的设置和故障转移机制的配置。
摘要由CSDN通过智能技术生成

第2关:Hadoop 高可用安装

任务描述

本关任务:完成 JDK 和Zookeeper集群安装后,安装 Hadoop 高可用并测试是否成功安装。

编程要求

根据相关知识,安装 Hadoop 高可用并启动所有服务。 注:测试后需要将服务全部启动才可以通关。 关闭所有服务: stop-all.sh

启动所有服务: start-all.sh

相关步骤

请在确认成功完成(一)后执行以下内容。

增加命令行,在master输入 ssh 172.18.0.2 ,密码 123123。slave1 输入 ssh 172.18.0.3 ,slave2 输入 ssh 172.18.0.4。

 在上一关,已经将 Hadoop 安装包已经通过 scp 发送至 mater 服务器的 /opt 目录下了。解压安装包至 /usr/local 文件夹中,并将名字修改为 hadoop :

#master
cd /opt
tar -zxvf hadoop-3.1.0.tar.gz -C /usr/local/
cd /usr/local
mv hadoop-3.1.0 hadoop

输入命令:vi /etc/profile 编辑配置文件,环境变量中配置 Hadoop

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile使刚刚的配置生效。

通过 scp 将配置文件发送至 slave1、slave2中,并使配置生效:

scp  /etc/profile root@slave1:/etc/
scp  /etc/profile root@slave2:/etc/
source /etc/profile

进入 Hadoop 配置文件夹 etc/hadoop

cd /usr/local/hadoop/etc/hadoop/

修改 hadoop-env.sh,添加以下配置:

export JAVA_HOME=/usr/local/jdk1.8.0_141
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root
export HADOOP_SHELL_EXECNAME=root

修改core-site.xml,添加以下配置:

<configuration>
  <property>
      <name>fs.defaultFS</name>
      <value>hdfs://mycluster</value>
  </property>
  <property>
      <name>hadoop.tmp.dir</name>
      <value>/usr/local/hadoop</value>
  </property>
</configuration>

修改 hdfs-site.xml,添加以下配置:

<configuration>
<!-- 1 指定名称服务名称-->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!-- 2 指定名称服务列表-->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<!--3 指定nn1 rpc通信地址和端口 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>master:8020</value>
</property>
<!--4 指定nn2 rpc通信地址和端口 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>slave1:8020</value>
</property>
<!--5 指定nn1 http地址和端口 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>master:50070</value>
</property>
<!-- 6 指定nn2 http地址和端口-->
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>slave1:50070</value>
</property>
<!-- 7 指定共享编辑日志存储的jouralnode地址-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
</property>
<!-- 8 指定共享编辑日志的存储路径-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/hadoop/tmp/journal</value>
</property>
<!--9 指定客户端故障转移代理供应类 -->
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--10 指定brain split脑裂隔离方法 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!--11 指定私钥文件路径 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 12 启用自动故障转移-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--13 指定zk服务器 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
</configuration>

修改 mapred-site.xml,添加以下配置:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

修改 yarn-site.xml,添加以下配置

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
</property>
<property>
  <name>yarn.resourcemanager.cluster-id</name>
  <value>cluster1</value>
</property>
<property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>rm1,rm2</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname.rm1</name>
  <value>master</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname.rm2</name>
  <value>slave2</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address.rm1</name>
  <value>master:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address.rm2</name>
  <value>slave2:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>master:2181,slave1:2181,slave2:2181</value>
</property>
</configuration>

修改 workers 文件,将文件内容修改为

master
slave1
slave2

/hadoop/sbin路径下: cd /usr/local/hadoop/sbin。 将start-dfs.shstop-dfs.sh两个文件顶部添加以下参数

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.shstop-yarn.sh顶部也需添加以下:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

将hadoop 文件夹发送至另外两台机。(发送前请确认已经输入ssh)

scp -r /usr/local/hadoop/ slave1:/usr/local/
scp -r /usr/local/hadoop/ slave2:/usr/local/

启动master、slave1、slave2 三台机的 journalnode。若启动失败,重新ssh。

#master、slave1、slave2(若集群搭建成功的话,在master启动就可以了)
hadoop-daemons.sh start journalnode

格式化namenode1并启动

#master
hdfs namenode -format
hadoop-daemon.sh start namenode

同步namenode2并启动

#slave1
hdfs namenode -bootstrapStandby
hadoop-daemon.sh start namenode

初始化HA在zookeeper中的状态,并在各个 namenode 节点上启动 DFSZK Failover Controller

#master
hdfs zkfc -formatZK
#master、slave1
hadoop-daemon.sh start zkfc

启动所有的datanode

#master
hadoop-daemons.sh start datanode

若各个服务器进程都有 DataNode ,代表启动成功。

启动yarn集群

#master
start-yarn.sh

至此 Hadoop 高可用搭建成功!查看各服务器进程:

 

 

 

测试说明

平台会对你操作进行测试: 安装完成后点击评测,评测检查所有服务器进程如下:

  1. master:
  2. DFSZKFailoverController
  3. DataNode
  4. JournalNode
  5. Jps
  6. NameNode
  7. NodeManager
  8. QuorumPeerMain
  9. ResourceManager
  10. slave1:
  11. DFSZKFailoverController
  12. DataNode
  13. JournalNode
  14. Jps
  15. NameNode
  16. NodeManager
  17. QuorumPeerMain
  18. slave2:
  19. DataNode
  20. JournalNode
  21. Jps
  22. NodeManager
  23. QuorumPeerMain
  24. ResourceManager
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值