我根据教程说明设置了一个伪分布式Hadoop集群(在同一个框中有jobtracker,一个tasktracker和namenode),并且工作正常。我现在正尝试将另一个节点添加到此群集作为另一个任务跟踪器。
当我检查节点2上的日志时,除了tasktracker之外,所有日志都很好。我正在获得下面列出的错误消息的无限循环。似乎Task Tracker正在尝试使用主机名SSP-SANDBOX-1.mysite.com而不是ip地址。这个主机名不在/ etc / hosts中,所以我猜这是问题所在。我没有root访问权限,以便将其添加到/ etc / hosts。
我是否可以更改任何属性或配置,以便它将停止尝试使用主机名进行连接?
非常感谢,
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)
答案 0 :(得分:3)
此博文可能会有所帮助:
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服务器。