Hadoop集群中的tasktracker上的UnknownHostException

我已经build立了一个伪分布Hadoop集群(与jobtracker,一个tasktracker和namenode所有在同一个盒子)每个教程的说明,它的工作正常。 我正在尝试将第二个节点添加到此群集中作为另一个任务跟踪器。

当我检查节点2上的日志时,除了tasktracker之外,所有日志都看起来很好。 我收到了下面列出的错误消息的无限循环。 看来,任务跟踪器正在尝试使用主机名SSP-SANDBOX-1.mysite.com,而不是IP地址。 这个主机名不在/ etc / hosts中,所以我猜这是问题来自哪里。 我没有root访问权限以便将其添加到/ etc / hosts。

是否有任何财产或configuration我可以改变,以便它会停止尝试使用主机名连接?

非常感谢,

2011-01-18 17:43:22,896 ERROR org.apache.hadoop.mapred.TaskTracker: Caught exception: java.net.UnknownHostException: unknown host: SSP-SANDBOX-1.mysite.com at org.apache.hadoop.ipc.Client$Connection.<init>(Client.java:195) at org.apache.hadoop.ipc.Client.getConnection(Client.java:850) at org.apache.hadoop.ipc.Client.call(Client.java:720) at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220) at $Proxy5.getProtocolVersion(Unknown Source) at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:359) at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:106) at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:207) at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:170) at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:82) at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1378) at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66) at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1390) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:196) at org.apache.hadoop.fs.Path.getFileSystem(Path.java:175) at org.apache.hadoop.mapred.TaskTracker.offerService(TaskTracker.java:1033) at org.apache.hadoop.mapred.TaskTracker.run(TaskTracker.java:1720) at org.apache.hadoop.mapred.TaskTracker.main(TaskTracker.java:2833) 

这篇博文可能会有帮助:

http://western-skies.blogspot.com/2010/11/fix-for-exceeded-maxfaileduniquefetches.html

简而言之,即使您在配置文件中指定了IP地址,Hadoop也会执行反向主机名查找。 在您的环境中,为了使Hadoop能够正常工作,SSP-SANDBOX-1.mysite.com必须解析为该机器的IP地址,并且该IP地址的反向查找必须解析为SSP-SANDBOX-1.mysite .COM。

所以你需要和管理这些机器的人交谈,或者欺骗主机文件,或者提供一个能够做正确事情的DNS服务器。