Hadoop 集群仅显示 1 个活动数据节点
Hadoop cluster showing only 1 live datanode
我正在尝试配置 3 节点 Apache Hadoop 集群。我已经在 docker 环境中完成了,并且一切正常。现在,我正在尝试迁移到 Open Nebula 环境。我有 3 个带有 Ubuntu 和 Hadoop 的虚拟机。当我使用 ./sbin/start-dfs.sh 启动 hadoop 时,Hadoop 在所有从站上打开数据节点,直到此时一切看起来都很好。但是如果我使用“./bin/hdfs dfsadmin -report”,它只会显示 1 个实时数据节点。查看以下内容
这是 JPS 命令在我的主机上的结果:
从机上的 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 文件,但它看起来像这样。其中 "my_ip_1" 表示 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
好的,我设法找出了问题并找到了解决方法。
问题:
我的从节点没有与主节点通信。因此,我使用以下命令检查了我机器 (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 运行ge 从 0-255 那么
sudo ufw allow from XXX.XXX.XXX.0/24
从那以后,我有 3 台机器。因此,对于每台机器,我都添加了其他 2 台机器的 IP 地址。一切顺利。
我正在尝试配置 3 节点 Apache Hadoop 集群。我已经在 docker 环境中完成了,并且一切正常。现在,我正在尝试迁移到 Open Nebula 环境。我有 3 个带有 Ubuntu 和 Hadoop 的虚拟机。当我使用 ./sbin/start-dfs.sh 启动 hadoop 时,Hadoop 在所有从站上打开数据节点,直到此时一切看起来都很好。但是如果我使用“./bin/hdfs dfsadmin -report”,它只会显示 1 个实时数据节点。查看以下内容
这是 JPS 命令在我的主机上的结果:
从机上的 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 文件,但它看起来像这样。其中 "my_ip_1" 表示 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
好的,我设法找出了问题并找到了解决方法。
问题:
我的从节点没有与主节点通信。因此,我使用以下命令检查了我机器 (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 运行ge 从 0-255 那么
sudo ufw allow from XXX.XXX.XXX.0/24
从那以后,我有 3 台机器。因此,对于每台机器,我都添加了其他 2 台机器的 IP 地址。一切顺利。