Java 在hadoop中启动namenode失败?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/34871814/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Failed to start namenode in hadoop?
提问by Van Loc
I config Hadoop in windows 7 from tutorialIt setting up a Single Node Cluster.
When run hdfs namenode -format
to format namenode it throw exception like:
And when start-all.cmd
the windows namenode auto forced then I can open namenode GUI in address – http://localhost:50070.
我在 Windows 7 中配置 Hadoop 的教程It setup a Single Node Cluster。当运行hdfs namenode -format
以格式化 namenode 时,它会抛出异常,例如:当start-all.cmd
windows namenode 自动强制时,我可以在地址中打开 namenode GUI – http://localhost:50070。
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: /************************************************************
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: /************************************************************
Core-site.xml
核心站点.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml
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
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
纱线站点.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>
采纳答案by SMA
Change your following properties from:
更改您的以下属性:
<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>
To:
到:
<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>
回答by Muhammad Soliman
For windows, directories should be similar to this format /c:/path/to/dir
or file:///D:/path/to/dir
:
对于 Windows,目录应类似于此格式/c:/path/to/dir
或file:///D:/path/to/dir
:
I've tried using "/hadoop/data/namenode" which prevents starting namenode due to non existence of specified namenode directory .. I have found it is storing files in c drive when using "/hadoop/data/namenode" but while starting dfs it is gonna resolve paths relatively to the drive where hadoop source is residing.
我试过使用“/hadoop/data/namenode”阻止启动namenode由于不存在指定的namenode目录..我发现它在使用“/hadoop/data/namenode”时将文件存储在c驱动器中dfs 它将解析相对于 hadoop 源所在驱动器的路径。
I have switch to use the following and it worked fine:
我已经切换到使用以下,它工作正常:
<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>
Hint: Don't forget the prefix slash before drive name /d:/
提示:不要忘记驱动器名称前的前缀斜杠 /d:/