linux - Hadoop 集群中 tasktracker 上的 UnknownHostException

标签 linux hadoop

我已经按照教程说明设置了一个伪分布式 Hadoop 集群(jobtracker、tasktracker 和 namenode 都在同一个盒子上)并且运行良好。我现在正尝试将第二个节点作为另一个 tasktracker 添加到该集群。

当我检查节点 2 上的日志时,除了 tasktracker 之外,所有日志看起来都很好。我收到下面列出的错误消息的无限循环。任务跟踪器似乎正在尝试使用主机名 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)

最佳答案

这篇博文可能会有帮助:

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 服务器。

关于linux - Hadoop 集群中 tasktracker 上的 UnknownHostException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4730148/

相关文章:

hadoop - 通过Hive,如何获取最近的记录?

hadoop - 通过 hive 将数据插入 hbase 时,reducer 卡在 99%

c++ - 在 Linux 守护进程中使用用户空间驱动程序

linux - oracle 一致性段错误

c++ - glibc sprintf 可以在可重入函数中使用吗?

linux - SSH : Copy files without password when using public key authentication.

hadoop - 未指定LOCATION创建托管表时,表数据的数据位置在哪里?

apache-spark - 将 Uber Jar 提交到 Google Dataproc 时如何解决 Guava 依赖问题

linux - 如何使用 :arga in vim? 添加文件而不是子目录到 args 列表

java - 使用 getter/setter 方法将 java 对象包装/解包为 Writable 对象是个好主意吗?