一.集群规划
|
Master |
Slave1 |
Slave2 |
Slave3 |
IP |
192.168.2.131 |
192.168.2.132 |
192.168.2.133 |
192.168.2.134 |
namenode |
有 |
有 |
无 |
无 |
datanode |
有 |
有 |
有 |
有 |
resourcemanager |
无 |
无 |
有 |
有 |
nodemanager |
有 |
有 |
有 |
有 |
zookeeper |
有 |
有 |
有 |
无 |
journalnode |
有 |
有 |
有 |
无 |
zkfc |
有 |
有 |
无 |
无 |
二.搭建Hadoop(HA)
在已完成此配置的基础上执行以下。tar包链接: https://pan.baidu.com/s/1hwLPI0eUwkpGmP5ROqM6Lw 提取码: k7m3
# tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local/ 解压到对应的安装目录 # mv /usr/local/hadoop-2.7.7 /usr/local/Hadoop # vim ~/.bashrc 添加环境变量 export HADOOP_HOME=/usl/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # source ~/.bashrc 生效环境变量 # cd /usr/local/hadoop/etc/hadoop/ 转至配置文件 # vim hadoop-env.sh 配置1添加 【官网配置】 export JAVA_HOME= /usr/java/jdk1.8.0_221 # vim slaves 配置2 master slave1 slave2 slave3 # vim core-site.xml 配置3fs.defaultFS hdfs://myha01/ hadoop.tmp.dir /usr/local/hadoop/data/hadoopdata/ ha.zookeeper.quorum master:2181,slave1:2181,slave2:2181 # cp mapred-site.xml.template mapred-site.xml && vim mapred-site.xml 配置4 ha.zookeeper.session-timeout.ms 1000 ms mapreduce.framework.name yarn mapreduce.jobhistory.address master:10020 # vim hdfs-site.xml 配置5 mapreduce.jobhistory.webapp.address master:19888 dfs.replication 2 dfs.namenode.name.dir /usr/local/hadoop/data/hadoopdata/dfs/name dfs.datanode.data.dir /usr/local/hadoop/data/hadoopdata/dfs/data dfs.webhdfs.enabled true dfs.nameservices myha01 dfs.ha.namenodes.myha01 nn1,nn2 dfs.namenode.rpc-address.myha01.nn1 master:9000 dfs.namenode.http-address.myha01.nn1 master:50070 dfs.namenode.rpc-address.myha01.nn2 slave1:9000 dfs.namenode.http-address.myha01.nn2 slave1:50070 dfs.namenode.shared.edits.dir qjournal://master:8485;slave1:8485;slave2:8485/myha01 dfs.journalnode.edits.dir /usr/local/hadoop/data/journaldata dfs.ha.automatic-failover.enabled true dfs.client.failover.proxy.provider.myha01 org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence shell(/bin/true) dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.ha.fencing.ssh.connect-timeout 30000 # vim yarn-site.xml 配置6 ha.failover-controller.cli-check.rpc-timeout.ms 60000 yarn.resourcemanager.ha.enabled true yarn.resourcemanager.cluster-id yrc yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 slave2 yarn.resourcemanager.hostname.rm2 slave3 yarn.resourcemanager.zk-address master:2181,slave1:2181,slave2:2181 yarn.nodemanager.aux-services mapreduce_shuffle yarn.log-aggregation-enable true yarn.log-aggregation.retain-seconds 86400 yarn.resourcemanager.recovery.enabled true yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
三.配置→启动→验证→测试
3.1配置 # scp -r /usr/local/hadoop root@slave1:/usr/local/ 分发至slave1~3结点(这里演示一台) # scp ~/.bashrc root@slave1:/root/ 分发环境至slave1~3结点(这里演示一台) # source ~/.bashrc 生效环境(四台) # zkServer.sh start 启动zookeeper(master、slave1、slave2) # zkServer.sh status 查看角色 # hadoop-daemon.sh start journalnode 启动进程journalnode (master\slave1\slave2)
# jps 查看进程
# hadoop namenode -format 格式化namenode节点(这里选master)
此时在 core-site.xml 配置的临时目录中生成一些集群的信息,把他拷贝的第二个 namenode 相同目录下。记住:两个 namenode 节点该目录中的数据结构是一致的!hadoop.tmp.dir /usr/local/hadoop/data/hadoopdata/ // 拷贝地址 # hadoop namenode -bootstrapStandby 拷贝或在另一个namenode (slave2)上执行
上面原因是: master的namenode(格式化未启动所以连接不上) → 开启 → 在执行即可。 下面把master节点上生成的元数据 给复制到slave1上。 # scp -r /usr/local/hadoop/data/hadoopdata root@slave1:/usr/local/hadoop/data/ # hdfs zkfc -formatZK 格式化zkfc(只能在nameonde节点进行)(master,slave1)
3.2启动 # start-dfs.sh 启动集群(master) # start-yarn.sh 最好在YARN的主节点上执行,(在配置文件中设置yarn主节点在slave2)# yarn-daemon.sh start resourcemanager 启动另resourcemanager必须手动启动(slave3) yarn.resourcemanager.hostname.rm1 slave2
# jps 查看进程
进程架构图

3.3浏览器验证 a)验证1 http://192.168.2.131:50070 访问web 页面查看(master) namenode状态
Master(standby状态) b)验证2 http://192.168.2.132:50070 访问web 页面查看(slave1) namenode状态

Slave1(active状态) c)验证3 http://192.168.2.133:8088 查看yarn节点(slave2)启动情况
d)验证4 查看各主节点的状态 HDFS: # hdfs haadmin -getServiceState nn1 # hdfs haadmin -getServiceState nn2 YARN: # yarn rmadmin -getServiceState rm1 # yarn rmadmin -getServiceState rm2
启动 mapreduce 任务历史服务器 # mr-jobhistory-daemon.sh start historyserver
按照配置文件配置的历史服务器的 web 访问地址去访问: http://192.168.2.131:19888 http://192.168.2.131:19888
3.4测试
a) 干掉 active namenode看看集群有什么变化。

查看(Slave1)web有没有从standby切换成active

# hadoop-daemon.sh start namenode 为提起namenode服务命令(初次搭建备节点不需要提起) 更多测试请参考连接: https://blog.csdn.net/qq_41851454/article/details/79666066 HA高可用搭建就搭好了