我一直在尝试建立一个 Hadoop 集群;我设法让它以伪分布式模式运行,我的一台机器在大约 30 秒内完成了托尔斯泰的《战争与和平》字数统计。
我现在正在尝试将第二台机器添加到我的集群中;为了帮助设置它,我创建了一个 Hadoop 用户组,该组具有在 Hadoop 服务器上启动、停止和运行作业的权限(尽管我只让 root 编辑配置文件)。我确保 hadoop 组的所有成员都可以使用他们的公钥从主节点到从节点进行 ssh。我使用 dpkg 安装了 hadoop 1.0.0.3。我在主节点和从节点上正确编辑了主从文件,并更改了配置以指向正确的 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找到
谢谢; 如果您有任何问题,请告诉我。
这个问题一般不是Hadoop配置的问题,更多的是集群的网络配置问题;在我的例子中,这是由这个问题引起的。如果您看到此行为,请
/etc/hosts
在查看 Hadoop 文件之前检查您的路由等是否存在问题。我在 Rackspace 上设置 5 节点集群时遇到了类似的问题。我仔细检查了我的
/etc/hosts
文件。问题实际上是防火墙。数据节点通过端口与主节点通信9000
。您将需要打开该端口进行通信。您还需要50010
在数据节点上打开端口,以便主节点进行通信以管理任务跟踪器。此外,主节点还应该
9001
为作业跟踪器通信打开端口。为所有这些更新 iptables。
在主节点上:
在每个数据节点/任务跟踪器上:
在集群中运行 map reduce 程序时,我也遇到了同样的错误。有时工作成功,有时失败。
我集群中的所有系统都是本地连接的。我通过使用以下命令在集群的所有机器中禁用防火墙解决了这个问题:
$ systemctl 禁用 firewalld 或 $ systemctl 停止 firewalld
如果您没有 root 访问权限,请在命令前使用 sudo。我使用的是 fedora 20。如果您使用的是旧版本的 linux,请检查如何在这些系统中禁用防火墙。
我希望这能帮到您。
问候,桑杰·塔克雷
我也遇到了类似的问题。(我使用的是 ubuntu 17.0)
>sudo gedit /etc/hosts
(在主机和从机中)其次,
> sudo gedit /etc/hosts.allow
添加条目:ALL:192.168.201.
禁用防火墙
> sudo ufw disable
让它工作。