完全分布式
hadooclu1,hadooclu2 NN、ZKFC
hadooclu1,hadooclu2 ,hadooclu3 JNN
hadooclu2,hadooclu3,hadooclu4 DN
hadooclu2,hadooclu3,hadooclu4 ZK
免密配置不再累述,参考:hadoop完全分布式中第1点
安装之前停掉所有节点的hadoop服务。
#1. zookeeper
-
配置zk脚本所在bin目录配置到系统环境中
vim /etc/profile
ZOOKEEPER_HOME=zk安装目录
在PATH追加$ZOOKEEPER_HOME\bin -
在配置文件中修改配数据存储目录
-
修改dataDir
拷贝zoo-sample.cfg 重命名为zoo.cfg,修改dataDir路径为/var/local/zookpeer -
追加如下内容
server.1=hadoopclu2:2888:3888
server.2=hadoopclu3:2888:3888
server.3=hadoopclu4:2888:3888 -
新建myid
在数据存储目录中,新建myid文件,内容为节点对应的数字,如hadoopclu2节点左侧对应的server.1,则在该节点的myid文件中写入1
echo 1 > /var/local/zookeeper/myid -
拷贝已安装的zk目录到其它节点
注意创建存储目录,并修改myid内容即可。
-启动zk
zkServer.sh start
zkServer.sh stop
zkServer.sh status


#2. 配置文件修改
配置项具体说明
###1) hdfs-site.xml
删除之前配置的dfs.namenode.secondary.http-address -
服务、NN以及NN访问完全限定名和端口设置
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>hadoopclu1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>hadoopclu2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>hadoopclu1:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>hadoopclu2:9870</value>
</property>
- JNN设置
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoopclu1:8485;hadoopclu2:8485;hadoopclu3:8485/mycluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/var/local/journal/data</value>
</property>
- ZKFC相关设置
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
- 启用自动故障转移设置
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
###2) core-site.xml
- 设置hdfs默认路径前缀
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
- 设置zk集群访问地址,以进行故障转移
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoopclu2:2181,hadoopclu3:2181,hadoopclu4:2181</value>
</property>
- 修改hadoop.tmp.dir
如果之前配置的目录已使用过,则更换为新目录。
###3) 配置其它节点
将以配置好的文件拷贝到其它节点即可。
#3. NN配置 - 启动JNN
格式化会删掉edits log日志文件,日志文件是依赖JNN的,因此先启动所有JNN节点。
hadoop-daemon.sh start journalnode - nn格式化
这里格式化hadoopclu1
hdfs namenode -format - 启动nn
hadoop-daemon.sh start namenode - 第二个NN节点格式化拷贝
从第一个nn节点拷贝
hdfs namenode -bootstrapStandby
#4.格式化zk - 在nn中格式化zk
hdfs zkfc -formatZK
-启动nn
start-dfs.sh - 随便启动一个zk节点的客户端
zkCli.sh 便于查看主模拟nn切换的结果。
ls /
###5. 测试nn切换
[hadoop@hadoopclu1 root]$ jps
14720 JournalNode
15555 DFSZKFailoverController
15655 Jps
14888 NameNode
[hadoop@hadoopclu1 root]$ kill -9 14888
结果如下:
[zk: localhost:2181(CONNECTED) 12] get /hadoop-ha/mycluster/ActiveStandbyElectorLock
myclusternn2
hadoopclu2 �>(�>
cZxid = 0x1000000d9
ctime = Fri Sep 14 17:21:36 CST 2018
mZxid = 0x1000000d9
mtime = Fri Sep 14 17:21:36 CST 2018
pZxid = 0x1000000d9
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x165d672c02b000f
dataLength = 34
numChildren = 0


###6. 问题
问:突然所有命令都找不到了,vi,ifconfig,find 等
答:如果是如下配置环境变量,每一个export PATH=后面需注意必须带上
P
A
T
H
。
采
用
‘
e
x
p
o
r
t
P
A
T
H
=
PATH。采用`export PATH=
PATH。采用‘exportPATH=PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin`该命令设置临时变量,再编辑/etc/profile可以修改此失误。
##java
export JAVA_HOME=/usr/programfile/jdk
export PATH=$PATH:$JAVA_HOME/bin
##hadoop
export HADOOP_HOME=/usr/programfile/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
##zookeeper
export ZOOKEEPER_HOME=/usr/programfile/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
问: journalnode起不来
**答:**找到日志文件(在安装目录的logs目录下),DiskChecker$DiskErrorException: Directory is not writable: /var/local/journal/data
增加写权限即可。
问: datanode起不来
答: 删掉 hadoop.tmp.dir和dfs.journalnode.edits.dir 配置的路径,重建,重新格式化

本文详细介绍了如何搭建Hadoop高可用(HA)环境,包括Zookeeper配置、核心及HDFS配置文件修改、NameNode(JournalNode)的格式化与启动,以及解决在搭建过程中可能遇到的问题,如权限错误和命令找不到等。
966

被折叠的 条评论
为什么被折叠?



