大数据全系列 教程
1869个小节阅读:465.4k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
接下来在node1上执行:
xxxxxxxxxx
[root@node1 ~]# hdfs zkfc -formatZK
2021-10-15 13:30:20,048 INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/mycluster in ZK.
然后在node4上接着执行:
xxxxxxxxxx
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper, hadoop-ha]
[zk: localhost:2181(CONNECTED) 2] ls /hadoop-ha
[mycluster]
[z: localhost:2181(CONNECTED) 3] ls /hadoop-ha/mycluster
[]
执行到此处,还没有启动3个DataNode和2个ZKFC进程。
f) 启动hadoop集群,在node1执行
xxxxxxxxxx
[root@node1 ~]# start-dfs.sh
#出现如下错误提示
ERROR: Attempting to operate on hdfs journalnode as root
ERROR: but there is no HDFS_JOURNALNODE_USER defined. Aborting operation.
Starting ZK Failover Controllers on NN hosts [node1 node2]
ERROR: Attempting to operate on hdfs zkfc as root
ERROR: but there is no HDFS_ZKFC_USER defined. Aborting operation.
#解决办法:修改start-dfs.sh文件
[root@node1 ~]# vim /opt/hadoop-3.1.3/sbin/start-dfs.sh
#添加
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root
#为了防止关闭时出现类似的错误提示,修改stop-dfs.sh
[root@node1 ~]# vim /opt/hadoop-3.1.3/sbin/stop-dfs.sh
#添加
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root
#再次启动
[root@node1 hadoop]# start-dfs.sh
在启动zkCli.sh的节点node4上观察:
xxxxxxxxxx
[zk: localhost:2181(CONNECTED) 5] ls /hadoop-ha/mycluster
[ActiveBreadCrumb, ActiveStandbyElectorLock]
[zk: localhost:2181(CONNECTED) 6] get -s /hadoop-ha/mycluster/ActiveStandbyElectorLock
myclusternn1node1 �L(�>
cZxid = 0x600000008
ctime = Fri Oct 15 13:40:10 CST 2021
mZxid = 0x600000008
mtime = Fri Oct 15 13:40:10 CST 2021
pZxid = 0x600000008
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x300006fd40a0002
dataLength = 29
numChildren = 0
node1占用着锁,它的状态是active的。浏览器访问:http://node1:9870
node2为standby,浏览器地址栏输入:http://node2:9870
将Active NameNode对应节点node1上NameNode进程kill掉:
xxxxxxxxxx
[root@node1 hadoop]# jps
10337 Jps
7347 JournalNode
9701 DFSZKFailoverController
7689 NameNode
[root@node1 hadoop]# kill -9 7689
#或者
[root@node1 hadoop]# hdfs --daemon stop namenode
[root@node1 hadoop]# jps
7347 JournalNode
9701 DFSZKFailoverController
10381 Jps
node4上继续查看:
xxxxxxxxxx
[zk: localhost:2181(CONNECTED) 12] get -s /hadoop-ha/mycluster/ActiveStandbyElectorLock
myclusternn2node2 �L(�>
cZxid = 0x60000006c
......
但是通过浏览器访问发现Active NameNode不能自动进行切换。这是因为缺少一个rpm包:psmisc。接下来在四台节点上安装psmisc包。
xxxxxxxxxx
yum install -y psmisc
node1访问不了,node2 从Standby变为了Active。
node1上再次启动namenode:
xxxxxxxxxx
[root@node1 hadoop]# hdfs --daemon start namenode
node1变为standby,变为备机。