Ubuntu Hadoop:java.net.UnknownHostException:Hadoop-slave-2

Ubuntu Hadoop:java.net.UnknownHostException:Hadoop-slave-2,ubuntu,hadoop,openstack,Ubuntu,Hadoop,Openstack,我创建了一个hadoop集群,其中有1个主集群和2个从集群。我在*-site.xml文件中以最低规格运行它 core-site.xml fs.defaultFS hdfs://10.0.0.51:9000 hfds-site.xml dfs.datanode.name.dir ~/dn文件 mapred-site.xml mapreduce.framework.name 纱线 web-site.xml 纱线.节点管理器.辅助服务 mapreduce_shuffle warn.res

我创建了一个hadoop集群,其中有1个主集群和2个从集群。我在*-site.xml文件中以最低规格运行它

core-site.xml


fs.defaultFS
hdfs://10.0.0.51:9000
hfds-site.xml


dfs.datanode.name.dir
~/dn文件
mapred-site.xml


mapreduce.framework.name
纱线
web-site.xml


纱线.节点管理器.辅助服务
mapreduce_shuffle
warn.resourcemanager.resource-tracker.address
10.0.0.51:8025
warn.resourcemanager.scheduler.address
10.0.0.51:8030
.resourcemanager.address
10.0.0.51:8050
问题是我能够格式化namenode,将文件放入hfs,但当我运行一个简单的示例时,我得到以下错误

Container launch failed for container_1455133326738_0002_02_000007 : java.lang.IllegalArgumentException: java.net.UnknownHostException: hadoop-slave-2 at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:377)
    at org.apache.hadoop.security.SecurityUtil.setTokenService(SecurityUtil.java:356)
    at org.apache.hadoop.yarn.util.ConverterUtils.convertFromYarn(ConverterUtils.java:238)
at org.apache.hadoop.yarn.client.api.impl.ContainerManagementProtocolProxy$ContainerManagementProtocolProxyData.newProxy(ContainerManagementProtocolProxy.java:266)
 at org.apache.hadoop.yarn.client.api.impl.ContainerManagementProtocolProxy$ContainerManagementProtocolProxyData.<init>(ContainerManagementProtocolProxy.java:244)
    at org.apache.hadoop.yarn.client.api.impl.ContainerManagementProtocolProxy.getProxy(ContainerManagementProtocolProxy.java:129)
    at org.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl.getCMProxy(ContainerLauncherImpl.java:409)
    at org.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$Container.launch(ContainerLauncherImpl.java:138)
    at org.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$EventProcessor.run(ContainerLauncherImpl.java:375)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.UnknownHostException: hadoop-slave-2
从机的主机文件

ubuntu@hadoop-slave-1:~/hadoop-2.7.1/bin$cat/etc/hosts
127.0.0.1本地主机
10.0.0.39 hadoop-slave-1
10.0.0.51 hadoop-master-1

有人知道问题出在哪里吗?非常感谢您提供的任何帮助或可能的提示。

问题在于从属服务器的/etc/hosts文件。放置文件和格式化名称节点时没有错误的原因是主节点与所有从属节点通信,并且它具有所有从属节点的ip地址。但是,一旦在集群上运行应用程序,就会在其中一个从属服务器上创建应用程序主服务器。AM然后通过从机与其他从机通信。由于从机的主机文件没有其地址(根据从机的已发布主机文件判断),因此会出现未知主机错误


根据经验,请确保群集中的所有节点都具有群集中每个其他节点的ip地址。修复此问题,错误应该会消失。

运行Hadoop应用程序时出现未知后异常错误

在hadoop 2.7.7上测试。在ubuntu主机上创建了4个ubuntu虚拟机。 1个虚拟机作为namenode 3个虚拟机作为数据节点

当使用所有节点的ip地址更新/etc/hosts表时,UnknownHostexception被删除

例如: 192.168.2.7名称节点 192.168.2.11数据节点1 192.168.2.12数据节点2
192.168.2.13 datanode3

您是否也可以发布从属2的主机文件?这和你为slave发布的内容一样吗?谢谢你的评论。是一样的。它也有主ip地址。从属2不需要有不同的ip地址吗?这是文件。它们有不同的ip地址
ubuntu@hadoop-slave-2:~$cat/etc/hosts 127.0.0.1 localhost 10.0.0.36 hadoop-slave-2 10.0.0.51 hadoop-master-1
这有一些答案可能会有所帮助