我正在尝试配置3节点Apache Hadoop集群。我已经在docker环境中做过,一切都很好。现在,我正试图转向开放星云环境。我有3个VM与Ubuntu和Hadoop。当我使用./sbin/start-dfs.sh启动hadoop时,Hadoop会在所有从属服务器上打开数据节点,直到此时一切正常。但是,如果我使用" ./ bin / hdfs dfsadmin -report",它只显示1个实时数据节点。请查看以下
以下是我主人的JPS命令的结果:
Slave上的JPS命令:
我也可以SSH所有机器。我的猜测是我的主机文件有问题,因为我的奴隶无法联系到主人。这是我的主人/ etc / hosts。
<my_ip_1> master
<my_ip_2> slave-1
<my_ip_3> slave-2
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
我没有修改我的/ etc / hostname文件,但它看起来像这样。在哪里&#34; my_ip_1&#34;表示VM的当前IP。
<my_ip_1>.cloud.<domain>.de
此外,如果我使用命令
运行hadoop PI示例./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar pi 100 10000000
我在slave-1和slave-2日志文件中收到以下错误。但是主节点自己解决了PI问题。
2015-08-25 15:27:03,249 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/<my_ip_1>:54310. Already tried 10 time(s); maxRetries=45
2015-08-25 15:27:23,270 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/<my_ip_1>:54310. Already tried 11 time(s); maxRetries=45
2015-08-25 15:27:43,290 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/<my_ip_1>:54310. Already tried 12 time(s); maxRetries=45
答案 0 :(得分:0)
好的,我设法找出了问题并找到了修复程序。
<强>问题:强>
我的从属节点没有与主节点通信。所以,我使用以下命令检查了我的机器(Ubuntu)上的防火墙设置
sudo ufw status verbose
命令的输出
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
<强>解决方案:强>
所以,我的机器拒绝任何传入的请求。所以,我禁用防火墙来验证这个假设。
sudo ufw disable
在禁用防火墙之前,telnet <my_ip_1> 54310
正在给我连接超时。但是在禁用防火墙后,它运行正常。然后我在所有机器上禁用了防火墙并再次运行了hadoop的PI示例。它奏效了。
然后我在所有机器上重新启用了防火墙
sudo ufw enable
我为来自我自己的IP地址的传入请求添加了一些防火墙规则,例如
sudo ufw allow from XXX.XXX.XXX.XXX
或者,如果您想允许IP范围为0-255,那么
sudo ufw allow from XXX.XXX.XXX.0/24
因为,我有3台机器。因此,对于每台机器,我添加了其他2台机器的IP地址。一切都很顺利。