环境准备
修改 IP
修改主机名及主机名和 IP 地址的映射
关闭防火墙
ssh 免密登录
安装 JDK,配置环境变量等
规划集群
官方地址:http://hadoop.apache.org/
在 opt 目录下创建一个 ha 文件夹
[fancyry@hadoop102 ~]$ cd /opt
[fancyry@hadoop102 opt]$ sudo mkdir ha
[fancyry@hadoop102 opt]$ sudo chown fancyry:fancyry /opt/ha
将 /opt/module/ 下的 hadoop-3.1.3 拷贝到 /opt/ha 目录下 (记得删除 data 和 log 目录)
[fancyry@hadoop102 opt]$ cp -r /opt/module/hadoop-3.1.3 /opt/ha/
配置 core-site.xml
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://myclustervalue>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/opt/ha/hadoop-3.1.3/datavalue>
property>
configuration>
配置 hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dirname>
<value>file://${hadoop.tmp.dir}/namevalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file://${hadoop.tmp.dir}/datavalue>
property>
<property>
<name>dfs.journalnode.edits.dirname>
<value>${hadoop.tmp.dir}/jnvalue>
property>
<property>
<name>dfs.nameservicesname>
<value>myclustervalue>
property>
<property>
<name>dfs.ha.namenodes.myclustername>
<value>nn1,nn2,nn3value>
property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1name>
<value>hadoop102:8020value>
property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2name>
<value>hadoop103:8020value>
property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn3name>
<value>hadoop104:8020value>
property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1name>
<value>hadoop102:9870value>
property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2name>
<value>hadoop103:9870value>
property>
<property>
<name>dfs.namenode.http-address.mycluster.nn3name>
<value>hadoop104:9870value>
property>
<property>
<name>dfs.namenode.shared.edits.dirname>
<value>qjournal://hadoop102:8485;hadoop103:8485;hadoop104:8485/myclus tervalue>
property>
<property>
<name>dfs.client.failover.proxy.provider.myclustername>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyP rovidervalue>
property>
<property>
<name>dfs.ha.fencing.methodsname>
<value>sshfencevalue>
property>
<property>
<name>dfs.ha.fencing.ssh.private-key-filesname>
<value>/home/fancyry/.ssh/id_rsavalue>
property>
configuration>
分发配置好的 hadoop 环境到其他节点
将 HADOOP_HOME 环境变量更改到 HA 目录 (三台机器)
[fancyry@hadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh
A、将 HADOOP_HOME 部分改为如下
#HADOOP_HOME
export HADOOP_HOME=/opt/ha/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
B、去三台机器上 source 环境变量
[fancyry@hadoop102 ~]$source /etc/profile
在各个 JournalNode 节点上,输入以下命令启动 journalnode 服务
[fancyry@hadoop102 ~]$ hdfs --daemon start journalnode
[fancyry@hadoop103 ~]$ hdfs --daemon start journalnode
[fancyry@hadoop104 ~]$ hdfs --daemon start journalnode
在 [nn1] 上,对其进行格式化,并启动
[fancyry@hadoop102 ~]$ hdfs namenode -format
[fancyry@hadoop102 ~]$ hdfs --daemon start namenode
在 [nn2] 和 [nn3] 上,同步 nn1 的元数据信息
[fancyry@hadoop103 ~]$ hdfs namenode -bootstrapStandby
[fancyry@hadoop104 ~]$ hdfs namenode -bootstrapStandby
启动 [nn2] 和 [nn3]
[fancyry@hadoop103 ~]$ hdfs --daemon start namenode
[fancyry@hadoop104 ~]$ hdfs --daemon start namenode
查看 web 页面显示
在所有节点上,启动 datanode
[fancyry@hadoop102 ~]$ hdfs --daemon start datanode
[fancyry@hadoop103 ~]$ hdfs --daemon start datanode
[fancyry@hadoop104 ~]$ hdfs --daemon start datanode
将 [nn1] 切换为 Active
[fancyry@hadoop102 ~]$ hdfs haadmin -transitionToActive nn1
查看是否 Active
[fancyry@hadoop102 ~]$ hdfs haadmin -getServiceState nn1