Hadoop 从属节点未连接

Hadoop 从属节点未连接

我一直在尝试建立一个 Hadoop 集群;我设法让它以伪分布式模式运行,我的一台机器统计了托尔斯泰的战争与和平大约三十秒后。

我现在正尝试向集群添加第二台机器;为了帮助设置它,我创建了一个用户组 Hadoop,并赋予其在 Hadoop 服务器上启动、停止和运行作业的权限(尽管我将编辑配置文件的权限留给了 root 用户)。我确保 hadoop 组的所有成员都可以使用他们的公钥从主节点 ssh 到从节点。我使用 dpkg 安装了 hadoop 1.0.0.3。我在主节点和从节点上正确编辑了 masters 和 slaves 文件,并更改了配置以指向正确的 NameNode 和 JobTracker:

在 core-site.xml 中:
fs.default.name=hdfs://$MASTER:9000

在 mapred-site.xml 中:
mapred.job.tracker=$MASTER:9001

其中 $MASTER 是我的主机的主机名。

我的 NN、SNN 和 JobTracker 已正确启动;但是,我的从属节点无法连接到主节点!这是我在 DataNode 日志中看到的行为:

2012-05-25 09:36:23,390 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: $MASTER/10.23.95.197:9000. Already tried 0 time(s).
2012-05-25 09:36:23,390 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: $MASTER/10.23.95.197:9000. Already tried 1 time(s).
...
...
connect to server: $MASTER/10.23.95.197:9000. Already tried 9 time(s).
2012-05-25 09:36:31,394 INFO org.apache.hadoop.ipc.RPC: Server at $MASTER/10.23.95.197:9000 not available yet, Zzzzz...

一遍又一遍。我在 TaskTracker 日志中看到同样的内容,只是那里列出的端口号是 9001。lsof 告诉我正确的进程正在监听两个端口。出了什么问题???

$MASTER 的所有日志都可以在以下位置找到http://pastebin.com/ZzyKBQVJ

谢谢;如果您有任何问题,请告诉我。

答案1

此问题通常不是由 Hadoop 配置问题引起的,而更常见的是集群的网络配置问题;就我而言,它是由这个问题。如果您看到此行为,请/etc/hosts在查看 Hadoop 文件之前检查您的路由等是否存在问题。

答案2

我在 Rackspace 上设置 5 节点集群时遇到了类似的问题。我仔细检查了我的/etc/hosts文件。问题实际上是防火墙。数据节点通过端口与主节点通信9000。您需要打开该端口进行通信。您还需要在数据节点上打开端口,50010以便主节点进行通信来管理任务跟踪器。

此外,主节点9001也应该开放端口,以便作业跟踪器进行通信。

更新所有这些的 iptables。

在主节点上:

iptables -I INPUT -p tcp --dport 9000  -j ACCEPT
iptables -I INPUT -p tcp --dport 9001  -j ACCEPT
service iptables save
service iptables reload

在每个数据节点/任务跟踪器上:

iptables -I INPUT -p tcp --dport 50010  -j ACCEPT
service iptables save
service iptables reload

答案3

在集群中运行 map Reduce 程序时我也遇到了同样的错误。有时候作业成功,有时候失败。

集群中的所有系统都是本地连接的。我通过使用以下命令禁用集群中所有机器的防火墙来解决此问题:

$ systemctl disablefirewalld 或 $ systemctl stopfirewalld

如果您没有 root 访问权限,请在命令前使用 sudo。我正在使用 fedora 20。如果您使用的是旧版本的 Linux,请检查如何在这些系统中禁用防火墙。

我希望这能帮到您。

问候,Sanjay Thakre

答案4

我也遇到过类似的问题。 (我正在使用 ubuntu 17.0) >sudo gedit /etc/hosts (在主机和从机上)

127.0.0.1  localhost
192.168.201.101 master
192.168.201.102 slave1
192.168.201.103 slave2

其次,> sudo gedit /etc/hosts.allow添加条目: ALL:192.168.201.

禁用防火墙> sudo ufw disable

让它工作了。

相关内容