Hadoop伪分布式模式 - Datanode和tasktracker无法启动

时间:2013-05-23 23:59:44

标签: hadoop hdfs redhat

我正在运行安装了Hadoop 1.1.2的Red Hat Enterprise Linux Server 6.4版(Santiago)发行版。我已经完成了所需的配置以启用伪分布式模式。但是在尝试运行hadoop时,datanode和tasktracker无法启动。

我无法将任何文件复制到hdfs。

[hduser@is-joshbloom-hadoop hadoop]$ hadoop dfs -put README.txt /input
Warning: $HADOOP_HOME is deprecated.

13/05/23 16:42:00 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /input could only be replicated to 0 nodes, instead of 1

在尝试hadoop-daemon.sh start datanode后,我收到了消息:

starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-hduser-datanode-is-joshbloom-hadoop.out

同样适用于tasktracker。但是当我为namenode,secondarynamenode,jobtracker尝试相同的命令时,它们似乎正在运行。

namenode running as process 32933. Stop it first. 

我尝试了以下解决方案:

  1. 重新格式化namenode
  2. 重新安装hadoop
  3. 安装不同版本的hadoop(1.0.4)
  4. 似乎无效。我在我的Mac和亚马逊ubuntu VM上执行了相同的安装步骤,它运行良好。

    我怎样才能让hadoop工作? 谢谢!

    *更新**

    这是namenode

    的日志条目
    2013-05-23 16:27:44,087 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG:
    /************************************************************
    STARTUP_MSG: Starting DataNode
    STARTUP_MSG:   host = java.net.UnknownHostException: is-joshbloom-hadoop: is-joshbloom-hadoop
    STARTUP_MSG:   args = []
    STARTUP_MSG:   version = 1.1.2
    STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.1 -r 1440782; compiled by 'hortonfo' on Thu Jan 31 02:03:24 UTC 2013
    ************************************************************/
    2013-05-23 16:27:44,382 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
    2013-05-23 16:27:44,432 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
    2013-05-23 16:27:44,446 ERROR org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Error getting localhost name. Using 'localhost'...
    java.net.UnknownHostException: is-joshbloom-hadoop: is-joshbloom-hadoop
            at java.net.InetAddress.getLocalHost(InetAddress.java:1438)
            at     org.apache.hadoop.metrics2.impl.MetricsSystemImpl.getHostname(MetricsSystemImpl.java:463)
            at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.configureSystem(MetricsSystemImpl.java:394)
            at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.configure(MetricsSystemImpl.java:390)
            at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.start(MetricsSystemImpl.java:152)
            at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.init(MetricsSystemImpl.java:133)
            at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.init(DefaultMetricsSystem.java:40)
            at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.initialize(DefaultMetricsSystem.java:50)
            at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1589)
            at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1608)
            at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1734)
            at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1751)
    Caused by: java.net.UnknownHostException: is-joshbloom-hadoop
            at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
            at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:866)
            at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1258)
            at java.net.InetAddress.getLocalHost(InetAddress.java:1434)
            ... 11 more
    2013-05-23 16:27:44,453 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled     snapshot period at 10 second(s).
    2013-05-23 16:27:44,453 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode     metrics system started
    2013-05-23 16:27:44,768 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
    2013-05-23 16:27:44,914 INFO org.apache.hadoop.util.NativeCodeLoader: Loaded the native-hadoop library
    2013-05-23 16:27:45,212 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:     java.net.UnknownHostException: is-joshbloom-hadoop: is-joshbloom-hadoop
            at java.net.InetAddress.getLocalHost(InetAddress.java:1438)
            at org.apache.hadoop.security.SecurityUtil.getLocalHostName(SecurityUtil.java:271)
            at org.apache.hadoop.security.SecurityUtil.login(SecurityUtil.java:289)
            at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:301)
            at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1651)
            at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1590)
            at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1608)
            at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1734)
            at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1751)
    Caused by: java.net.UnknownHostException: is-joshbloom-hadoop
            at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
            at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:866)
            at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1258)
            at java.net.InetAddress.getLocalHost(InetAddress.java:1434)
            ... 8 more
    
    2013-05-23 16:27:45,228 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
    /************************************************************
    SHUTDOWN_MSG: Shutting down DataNode at java.net.UnknownHostException: is-joshbloom-hadoop: is-joshbloom-hadoop
    ************************************************************/
    

    * UPDATE ***

    /etc/hosts

    的内容
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    

3 个答案:

答案 0 :(得分:8)

修改您的/etc/hosts以包含主机名环回映射:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.1.1   is-joshbloom-hadoop
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

您的问题是您的计算机不知道如何将主机名is-joshbloom-hadoop解析为特定的IP地址。通常有两个地方/方法解决 - 通过DNS服务器或使用本地主机文件(主机文件优先)。

对主机文件的上述修改允许您通过计算机将计算机名称is-joshbloom-hadoop解析为IP地址127.0.1.1。操作系统具有范围127.0.0.0/8的内部回送地址,因此您可以在此处命名任何地址。在我的Ubuntu笔记本电脑上,它使用127.0.1.1并且我确定它在操作系统之间发生了变化,但我的猜测是不使用127.0.0.1你不必在localhost行中搜索它,如果你将来更改您的机器名称。

答案 1 :(得分:2)

检查HADOOP_HOME / conf中的core-site.xml。它将具有 fs.default.name 属性。它应该在/etc/hosts."is-joshbloom-中指定一个主机名hadoop“hostname不在/etc/hosts.Use localhost而不是

<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:54310</value>
</property>
</configuration>

答案 2 :(得分:0)

问题似乎就像在conf / slaves下的奴隶文件中没有任何内容。

检查conf / slaves中的slaves文件。删除所有内容并在该文件中添加localhost。删除dds.name.dir中提到的名称和数据目录以及hdfs-site.xml下的dfs.data.dir属性。

格式化你的HDFS文件系统,然后再次启动你的守护进程。

相关问题