当我启动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)
提前谢谢。
编辑:在与Chris讨论之后,我将进行有根据的猜测,即我的一位同事可能一直在使用该端口。我不知道,我会在周一看到情况是否会好转。
您可能会将mapred.job.tracker
与mapred.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
这应该排除可疑的特定端口,并说明有两个不同的端口很重要。
您很可能尝试在同一台计算机上出于不同的目的重复使用同一端口。
,重新启动从属服务器有所帮助。请确保重新启动后网络接口已启动。
就像一个魅力
<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>
如果 JobTracker 服务没有启动,你需要执行以下命令:
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
如果你还没有这样做。
(就我而言,$HADOOP_HOME
在/usr/local/hadoop
)