【问题标题】:Failed to start namenode in hadoop?在hadoop中启动namenode失败?
【发布时间】:2016-01-19 08:28:39
【问题描述】:

我在 Windows 7 中配置 Hadoop from tutorial 它建立了一个单节点集群。 当运行 hdfs namenode -format 来格式化 namenode 时,它​​会抛出如下异常: 当start-all.cmd windows namenode 自动强制时,我可以在地址-http://localhost:50070 中打开namenode GUI。

16/01/19 15:18:58 WARN namenode.FSEditLog: No class configured for C, dfs.namenode.edits.journal-plugin.C is empty
16/01/19 15:18:58 ERROR namenode.NameNode: Failed to start namenode. java.lang.IllegalArgumentException: No class configured for C at org.apache.hadoop.hdfs.server.namenode.FSEditLog.getJournalClass(FSEditLog.java:1615) at org.apache.hadoop.hdfs.server.namenode.FSEditLog.createJournal(FSEditLog.java:1629) at org.apache.hadoop.hdfs.server.namenode.FSEditLog.initJournals(FSEditLog.java:282) at org.apache.hadoop.hdfs.server.namenode.FSEditLog.initJournalsForWrite(FSEditLog.java:247) at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:985) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1429) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1554) 16/01/19 15:18:58 INFO util.ExitUtil: Exiting with status 1 16/01/19 15:18:58 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************

核心站点.xml

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

hdfs-site.xml

<configuration>
   <property>
       <name>dfs.replication</name>
       <value>1</value>
   </property>
   <property>
       <name>dfs.namenode.name.dir</name>
       <value>C:/hadoop/data/namenode</value>
   </property>
   <property>
       <name>dfs.datanode.data.dir</name>
       <value>C:/hadoop/data/datanode</value>
   </property>
</configuration>

mapred-site.xml

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

yarn-site.xml

<configuration>
   <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
   </property>
   <property>
       <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
       <value>org.apache.hadoop.mapred.ShuffleHandler</value>
   </property>
</configuration>

【问题讨论】:

    标签: java apache hadoop


    【解决方案1】:

    更改以下属性:

    <property>
       <name>dfs.namenode.name.dir</name>
       <value>C:/hadoop/data/namenode</value>
    </property>
    <property>
       <name>dfs.datanode.data.dir</name>
       <value>C:/hadoop/data/datanode</value>
    </property>
    

    收件人:

    <property>
       <name>dfs.namenode.name.dir</name>
       <value>/hadoop/data/namenode</value>
    </property>
    <property>
       <name>dfs.datanode.data.dir</name>
       <value>/hadoop/data/datanode</value>
    </property>
    

    【讨论】:

      【解决方案2】:

      对于windows,目录应该类似于/c:/path/to/dirfile:///D:/path/to/dir这样的格式:

      我尝试使用“/hadoop/data/namenode”,由于指定的namenode目录不存在而阻止启动namenode..我发现它在使用“/hadoop/data/namenode”时将文件存储在c盘中但是在启动 dfs 时,它会解析相对于 hadoop 源所在驱动器的路径。

      我已经切换到使用以下,它工作正常:

      <property>
         <name>dfs.namenode.name.dir</name>
         <value>/d:/hadoop/data/namenode</value>
      </property>
      <property>
         <name>dfs.datanode.data.dir</name>
         <value>/d:/hadoop/data/datanode</value>
      </property>
      

      提示:不要忘记驱动器名称之前的前缀斜杠/d:/

      【讨论】:

        【解决方案3】:

        我能够通过在 hadoop 根位置添加 namenode 和 datanode 并使用来解决这个问题

        <property>
            <name>dfs.namenode.name.dir</name>
            <value>F:\hadoop-2.7.2\data\namenode</value>
        </property>
        

        不要使用反斜杠,而是使用正斜杠 F:/hadoop-2.7.2/data/namenode 或者使其成为有效的 URI file:///f:/hadoop-2.7.2/data/namenode

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-04
          • 2020-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-28
          相关资源
          最近更新 更多