JobTracker失败了

时间:2012-06-15 16:53:49

标签: hadoop mapreduce

当我启动Hadoop时,JobTracker以外的所有内容都会启动(tasktracker,namenode,datanode,secondarynamenode)。

在JobTracker日志中,它告诉我连接到主机的端口50030时出现问题,即使我在mapred-site.xml中的端口54311处定义了mapred.job.tracker。我在这里误解了什么吗?为什么要尝试连接到端口50030?

此外,由于某种原因,它试图绑定到一个地址,该地址是主机名和主机IP的连接,后跟端口号50030.这是正常的吗?

...说实话我不是100%确定我实际上是在理解日志中的错误信息,所以我只是发布它..

2012-06-15 11:50:51,538 INFO org.apache.hadoop.mapred.JobTracker: Scheduler configured with (memSizeForMapSlotOnJT, memSizeForReduceSlotOnJT, limitMaxMemForMapTasks, limitMaxMemForReduceTasks) (-1, -1, -1, -1)
2012-06-15 11:50:51,579 INFO org.apache.hadoop.ipc.metrics.RpcMetrics: Initializing RPC Metrics with hostName=JobTracker, port=54311
2012-06-15 11:50:51,644 INFO org.mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
2012-06-15 11:50:51,753 INFO org.apache.hadoop.http.HttpServer: Port returned by webServer.getConnectors()[0].getLocalPort() before open() is -1. Opening the listener on 50030
2012-06-15 11:50:51,755 FATAL org.apache.hadoop.mapred.JobTracker: java.net.BindException: Address already in use
        at sun.nio.ch.Net.bind(Native Method)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
        at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216)
        at org.apache.hadoop.http.HttpServer.start(HttpServer.java:425)
        at org.apache.hadoop.mapred.JobTracker.<init>(JobTracker.java:1628)
        at org.apache.hadoop.mapred.JobTracker.startTracker(JobTracker.java:183)
        at org.apache.hadoop.mapred.JobTracker.startTracker(JobTracker.java:175)
        at org.apache.hadoop.mapred.JobTracker.main(JobTracker.java:3702)

提前致谢。

编辑:在与克里斯讨论之后,我将采取有根据的猜测,我的同事可能一直在使用该端口。我不知道,如果情况好转,我会在周一看到。

4 个答案:

答案 0 :(得分:0)

您可能会将mapred.job.trackermapred.job.tracker.http.address混淆。

mapred-site.xml

中试用此实验
<property>
  <name>mapred.job.tracker</name>
  <value>localhost:50031</value>
</property>
<property>
  <name>mapred.job.tracker.http.address</name>
  <value>0.0.0.0:50032</value>
</property>

然后执行start-mapred.sh并转到http://X.X.X.X:50032/jobtracker.jsp

这应该排除受到怀疑的特定端口,并说明有两个不同的端口是重要的。

您很可能尝试在同一台计算机上重复使用相同的端口以实现其他目的。

答案 1 :(得分:0)

对我来说重启奴隶服务器有帮助。请确保重启后网络接口已启动。

答案 2 :(得分:0)

这就像一个魅力

<property>
  <name>mapred.job.tracker</name>
  <value>localhost:50031</value>
</property>
<property>
  <name>mapred.job.tracker.http.address</name>
  <value>0.0.0.0:50032</value>
</property>

答案 3 :(得分:0)

如果JobTracker服务没有启动,您需要执行此操作:

$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver

如果你还没有这样做。

(就我而言,$HADOOP_HOME位于/usr/local/hadoop