【发布时间】:2014-01-13 04:53:53
【问题描述】:
我现在正在建立一个hadoop集群(4台机器,其中1台master运行namenode和jobTracker,3台slave运行dataNode和TaskTraker)。但是很遗憾所有datanode都无法连接。我运行sudo netstat -ntlp on主机,结果为:
tcp 0 0 0.0.0.0:52193 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:39267 0.0.0.0:* LISTEN 7284/rpc.mountd
tcp 0 0 0.0.0.0:33219 0.0.0.0:* LISTEN 7284/rpc.mountd
tcp 0 0 0.0.0.0:41000 0.0.0.0:* LISTEN 1539/mongos
tcp6 0 0 :::50030 :::* LISTEN 604/java
tcp6 0 0 :::57134 :::* LISTEN 32646/java
tcp6 0 0 :::111 :::* LISTEN 13786/rpcbind
tcp6 0 0 :::57428 :::* LISTEN -
tcp6 0 0 :::57173 :::* LISTEN 7284/rpc.mountd
tcp6 0 0 :::50070 :::* LISTEN 32646/java
tcp6 0 0 :::5910 :::* LISTEN 2452/Xvnc
tcp6 0 0 :::22 :::* LISTEN 32473/sshd
tcp6 0 0 :::50744 :::* LISTEN 7284/rpc.mountd
tcp6 0 0 :::55036 :::* LISTEN 14031/rpc.statd
tcp6 0 0 :::42205 :::* LISTEN 7284/rpc.mountd
tcp6 0 0 :::44289 :::* LISTEN 504/java
tcp6 0 0 :::2049 :::* LISTEN -
tcp6 0 0 :::38950 :::* LISTEN 604/java
tcp6 0 0 192.168.10.10:9000 :::* LISTEN 32646/java
tcp6 0 0 192.168.10.10:9001 :::* LISTEN 604/java
tcp6 0 0 :::50090 :::* LISTEN 504/java
我的 3 台 datanodes 机器的异常消息是相同的(当然它们有不同的 ips): datanode 192.168.10.12的错误日志:
2014-01-13 12:41:02,332 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2014-01-13 12:41:02,334 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Source name ugi already exists!
2014-01-13 12:41:03,427 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: mongodb/192.168.10.12:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
2014-01-13 12:41:04,427 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: mongodb/192.168.10.12:9000. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
2014-01-13 12:41:05,428 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: mongodb/192.168.10.12:9000. Already tried 2 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
2014-01-13 12:41:06,428 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: mongodb/192.168.10.12:9000. Already tried 3 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
那么,让我困惑的是,为什么每个datanode都在尝试连接自己?例如,datanode 192.168.10.12的错误日志显示它正在尝试在端口9000上连接192.168.10.12,并且有12 上没有这样的监听端口。
我所有集群节点的主机名相同但ips不同(master:192.168.10.10 slaves:192.168.10.11,192.168.10.12,192.168.10.13),我所有的配置文件,包括core-site.xml,hdfs-site.xml和@ 987654326@直接用ip地址,我用sudo ufw status,显示所有机器的防火墙都是**inactive**!
这4台机器的配置文件是一样的(当然ip不一样):
核心站点.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.10.12:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/var/hadoop/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/var/hadoop/data</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://192.168.10.12:9001</value>
</property>
</configuration>
/etc/hosts 在我的主人::
127.0.0.1 localhost
192.168.10.12 mongodb
192.168.10.12 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
文件/etc/hosts的第2行,mongodb是集群的主机名,其他三个slave的主机名也是mongodb(因为这些机器是用来做mongodb集群的)。
我强烈怀疑是 tcp6 引起了问题。那么,如何使用tcp网络而不是tcp6来启动hadoop呢?
所以,我的问题是:
1.hadoop是在tcp6而不是tcp下启动的好吗?
2.所有集群机器的主机名相同但局域网ip不同的hadoop可以吗?
那么,有什么建议吗?
【问题讨论】:
-
你检查你的防火墙设置了吗?
-
我使用 sudo ufw 状态,它显示:inactive,适用于所有机器。
-
重启所有四个服务(namenode、datanode、jobtracker和tasktrakcer)然后检查。你在namenode机器的主机文件中设置了什么IP?
-
@Sudz,你说的主机文件是什么意思?我已经编辑了我的问题并粘贴了我的主人的 /etc/hosts 文件。
-
主机文件的含义与您的 /etc/hosts 相同。您需要评论第一行。 localhost 已经多了一个条目
标签: hadoop