namenode是Hadoop集群HDFS的管理节点,管理着整个分布式文件系统的命名空间,以及文件与块的映射关系等,在Hadoop集群中扮演着至关重要的作用。
我之前安装的Hadoop集群中namenode和secondary namenode是在一个节点上安装的,安装的节点是在masters文件中配置的IP地址,然后在网上看了一些资料,希望将secondary namenode 分配到其他的集群节点上,做到更好的可维护性,也能够减小对namenode的压力。
网上的资料是说${HADOOP_HOME}/etc/hadoop/masters中配置的是secondary namenode运行的节点,并不是namenode的运行节点,因此在masters中将节点信息修改为希望将secondary namenode 运行的主机节点的IP地址,如图:
然后需要在 ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml中配置secondary namenode 与 namenode运行的节点的信息,如图:
<property>
<name>dfs.http.address</name>
<value>192.168.178.134:50070</value>
<description>
The address and the base port where the dfs namenode web ui will listen on.
If the port is 0 then the server will start on a free port.
</description>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.178.128:50090</value>
</property>
</configuration>
这两个第一个配置的是namenode运行的节点信息,而第二个是secondary namenode运行的节点信息。由于我之前没有配置这两个,只是配置了一个namenode默认的地址信息,如下:
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.178.134:9000</value>
</property>
然后无就把我这个删除了,只保留了上面那两个。然后进行集群的重新启动,刚开始启动是没有什么问题的,但是过了一天进行集群的启动就发现namenode无法启动,datanode正常启动。最后把我之前删掉的这一段加上就好了。
fs.defaultFS这个属性是HDFS的hadoop访问目录节点nameNode的地址和端口。
而上面的那个dfs.http.address是NameNode web管理端口以及namenode的地址信息。