我一直尝试使用以下命令在群集上启动mapreduce作业:
bin/hadoop jar myjar.jar MainClass /user/hduser/input /user/hduser/output
但我一次又一次地出现以下错误,直到连接被拒绝:
13/08/08 00:37:16 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:54310. Already tried 5 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
然后我检查了netstat以查看服务是否正在侦听正确的端口:
~> sudo netstat -plten | grep java
tcp 0 0 10.1.1.4:54310 0.0.0.0:* LISTEN 10022 38365 11366/java
tcp 0 0 10.1.1.4:54311 0.0.0.0:* LISTEN 10022 32164 11829/java
现在我注意到,我的服务正在侦听端口10.1.1.4:54310,这是我的主服务器的ip,但似乎'hadoop jar'命令正在连接到127.0.0.1(localhost,这是同一台机器),但因此找不到服务。有没有办法强迫hadoopjar看10.1.1.4而不是127.0.0.1?
我的namenode,datanode,jobtracker,tasktracker。。。都在跑。我甚至检查了从机上的datanode和tasktracker,一切似乎都正常。我可以检查主控台上的webui,它显示我的集群是在线的。
我认为问题与dns有关,因为hadoopjar命令似乎找到了正确的端口,但总是使用127.0.0.1地址而不是10.1.1.4地址
更新
core-site.xml中的配置
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:54310</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri's authority is used to
determine the host, port, etc. for a filesystem.</description>
</property>
</configuration>
mapred-site.xml中的配置
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:54311</value>
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>
</configuration>
hdfs-site.xml中的配置
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
</configuration>
1条答案
按热度按时间vuktfyat1#
虽然这似乎是一个dns问题,但实际上是hadoop试图在代码中解析对localhost的引用。我正在部署其他人的jar,并假设它是正确的。在进一步检查后,我找到了localhost的引用,并将其更改为master,从而解决了我的问题。