搭建高可用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)
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
这个错误表明高可用特性没有被启用。从你提供的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 等都已经配置好.