hadoop:java.net.unknownhostexception:hadoop-slave-2

0h4hbjxa  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(580)

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

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://10.0.0.51:9000</value>
    </property>
</configuration>

hfds-site.xml文件

<configuration>
    <property>
        <name>dfs.datanode.name.dir</name>
        <value>~/DNfiles</value>
    </property>
</configuration>

mapred-site.xml文件

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

yarn-site.xml文件

<configuration>

    <!-- Site specific YARN configuration properties -->

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>10.0.0.51:8025</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>10.0.0.51:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>10.0.0.51:8050</value>
    </property>
</configuration>

问题是我能够格式化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

虽然程序继续通过与其他从机一起工作来完成,即1个从机可以访问,但其他从机不能访问,尽管它们具有相同的配置。因为我能够格式化所有文件,所以我假设主节点中的/etc/hosts文件可以。这是它的片段。

ubuntu@hadoop-master-1:~/hadoop-2.7.1/bin$ cat /etc/hosts
127.0.0.1 localhost
10.0.0.51 hadoop-master-1
10.0.0.36 hadoop-slave
10.0.0.38 hadoop-slave-2
10.0.0.39 hadoop-slave-1
10.0.0.40 hadoop-slave-3
10.0.0.41 hadoop-slave-4

从属主机文件

ubuntu@hadoop-slave-1:~/hadoop-2.7.1/bin$ cat /etc/hosts
127.0.0.1 localhost
10.0.0.39 hadoop-slave-1
10.0.0.51 hadoop-master-1

有人知道问题出在哪里吗?任何帮助或可能的指点将不胜感激。

jk9hmnmh

jk9hmnmh1#

运行hadoop应用程序时出现未知hostexception错误
在Hadoop2.7.7上测试。在ubuntu主机上创建了4个ubuntu虚拟机。1个虚拟机作为名称节点3个虚拟机作为数据节点。
当用所有节点的ip地址更新/etc/hosts表时,unknownhostexception被删除。
示例:192.168.2.7 namenode 192.168.2.11 datanode1 192.168.2.12 datanode2 192.168.2.13 datanode3

ycggw6v2

ycggw6v22#

问题出在从机的/etc/hosts文件中。放置文件和格式化namenode时没有错误的原因是主节点与所有从节点通信,并且它拥有所有从节点的ip地址。但是,一旦在集群上运行应用程序,就会在其中一个从属服务器上创建应用程序主服务器。然后通过奴隶与其他奴隶进行通信。由于slave的主机文件没有地址(根据slave的postedhosts文件判断),这是一个未知的主机错误。
根据经验,请确保群集中的所有节点都具有指向群集中其他每个节点的ip地址。修正这个错误就会消失。

相关问题