我正在尝试使用 3.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
问题是,应该在works节点上运行的守护进程是什么?我尝试查看日志文件,但没有找到任何有用的内容,因为它仅包含与运行守护程序相关的日志,并且日志文件没有任何错误或致命错误。
我认为辅助名称节点应该在worker中运行,并且端口不允许它进行通信。所以我试图通过主打开端口 9000 和 9001
sudo iptables -I INPUT -p tcp --dport 9000 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 9001 -j ACCEPT
iptables-save
但这并没有多大帮助。仍然面临同样的问题。工作线程中的日志文件也没有帮助。
感谢您在解决此问题方面的帮助。
编辑 1:
以下是我在核心站点.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
节点的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
在数据节点上,运行 jps 命令时可以看到以下进程
19728 数据节点19819 日元
当你在数据节点上运行ps -aef |grep -i datanode时,它应该显示两个进程,一个是root用户,另一个是HDFS用户