搭建高可用hadoop时出错:HA is not enabled for this namenode

搭建高可用hadoop时出错:HA is not enabled for this namenode

报错代码:Exception in thread "main" org.apache.hadoop.HadoopIllegalArgumentException: HA is not enabled for this namenode.
at org.apache.hadoop.hdfs.tools.DFSZKFailoverController.create(DFSZKFailoverController.java:121)
at org.apache.hadoop.hdfs.tools.DFSZKFailoverController.main(DFSZKFailoverController.java:177)

img

hdfs-site.xml 配置:


dfs.namenode.name.dir
file:///home/hadoopdir/dfs/name
hdfs元数据存存储目录


dfs.datanode.data.dir
/home/hadoopdir/dfs/data,/home/hadoopdir/dfs/data2
DataNode在本地文件系统中存放块的路径,如果是多个路径,请用逗号隔开,会自动选用多个目录进行数据存储


dfs.replication
2
备份数量,伪分布式则将其配置成1


dfs.blocksize
33554432
设置大文件系统HDFS块,默认值为64M


dfs.namenode.handler.count
100
NameNode服务器线程数,用于处理来自DataNodes的RPC


dfs.webhdfs.enabled
true
是否开通HDFS的Web接口,默认端口是50070


dfs.nameservices
master54

dfs.ha.namenodes.master54 nn1,nn2 dfs.namenode.rpc-address.master54.nn1 master54:9000 dfs.namenode.rpc-address.slave154.nn2 slave154:9000 dfs.namenode.http-address.master54.nn1 master54:50070 dfs.namenode.http-address.slave154.nn2 slave154:50070 dfs.namenode.servicerpc-address.master54.nn1 master54:53310 dfs.namenode.servicerpc-address.master54.nn2 slave154:53310 dfs.namenode.shared.edits.dir qjournal://master54:8485;slave154:8485;slave254:8485/master dfs.journalnode.edits.dir /home/hadoop/Jnode dfs.ha.automatic-failover.enabled true dfs.client.failover.proxy.provider.master54 org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence shell(true) dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.ha.fencing.ssh.connect-timeout 3000
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

这个错误表明高可用特性没有被启用。从你提供的hdfs-site.xml配置文件中可以看出,你已经配置了HA的一些参数,但是缺少一些关键的配置。你应该添加如下配置:

dfs.namenode.http-address.master54.nn1 和 dfs.namenode.http-address.master54.nn2。这是Active NameNode和Standby NameNode的HTTP地址,各自监听50070端口。
dfs.namenode.rpc-address.master54.nn1 和 dfs.namenode.rpc-address.master54.nn2。这是Active NameNode和Standby NameNode的RPC地址,各自监听9000端口。
除此之外,你应该检查以下配置是否有误:

dfs.ha.namenodes.master54是否已正确配置,其包含了所有的NameNode实例,如nn1,nn2
dfs.nameservices 是否已正确配置,如master54
如果配置文件是从其他地方复制过来的,你应该检查配置文件中的路径和主机名是否已经正确更改。

另外确保namenode service, ZKFailoverController, JournalNodes都已经启动,同时保证ssh, ssh-keygen, ssh-copy-id 等都已经配置好.