我正在尝试使用2.7.1设置一个3工1的主hadoop集群。当我启动集群时,主服务器运行以下守护程序:
2792 NameNode
3611 NodeManager
4362 Jps
3346 ResourceManager
2962 DataNode
3169 SecondaryNameNode
在三个工作节点中,
2163 NodeManager
2030 DataNode
2303 Jps
问题是当我查看Web UI时,群集无法识别3个工作者。它说1个实时数据节点,那就是主数据本身。请看这里:
http://master:50070/dfshealth.html#tab-overview
问题是,假设在工作节点上运行的守护进程是什么?我试着查看日志文件并没有找到任何有用的东西,因为它包含仅与运行守护进程相关的日志,并且日志文件没有任何错误或致命错误。
我认为辅助namenode应该在worker中运行,端口不允许它进行通信。所以我试图通过
在master中打开端口9000和9001sudo iptables -I INPUT -p tcp --dport 9000 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 9001 -j ACCEPT
iptables-save
但这并没有多大帮助。仍面临同样的问题。工人中的日志文件也没有帮助。
帮助你解决这个问题。
编辑1:
以下是我在core-site.xml的配置:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9001</value> <!-- slave1, 2 & 3 in position of master -->
</property>
</configuration>
这是我的/ etc / hosts文件:
127.0.0.1 localhost math2
127.0.1.1 math2
192.168.1.2 master
192.168.1.3 worker1
192.168.1.7 worker5
192.168.1.8 worker6
这是我在/ etc / network / interfaces
的配置# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
address 192.168.1.2 (3,5,6 instead of 2 for slaves)
netmask 255.255.255.0
gateway 192.168.1.1
broadcast 192.168.1.255
以下是其中一个数据节点的日志输出:
2016-02-05 17:54:12,655 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.net.BindException: Problem binding to [0.0.0.0:50010] java.net.BindException: Address already in use; For more details see: http://wiki.apache.org/hadoop/BindException
答案 0 :(得分:0)
您是否将所有节点的IP地址放在/etc/hosts
中。所有节点(主节点和从节点)的/etc/hosts
文件应包含集群中所有节点的IP地址。
例如,如果我们有三个数据节点和一个主节点,则/etc/hosts
文件应为:
192.168.0.1 master
192.168.0.2 datanode1
192.168.0.3 datanode2
192.168.0.4 datanode33
答案 1 :(得分:0)
在Datanode上,运行jps命令时可以看到以下过程
19728 DataNode 19819 Jps
,当您在Datanode上运行ps -aef | grep -i datanode时,它应该显示两个进程,一个是root用户,另一个是HDFS用户