1

我在 Ubuntu 16 中安装了 hadoop 1.2.1 并配置如下:

核心站点.xml

<property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:8020</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>tmpDir/snadikop/hadoopdata</value>

hdfs-site.xml

<configuration>
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

mapred-site.xml

<configuration>
<property>
    <name>mapred.job.tracker</name>
    <value>localhost:8021</value>
</property>

当我第一次开始时,一切正常。但是当我重新启动系统时,当我尝试启动守护进程时,namenode 没有启动。

试过了

hadoop namenode -format 

命令并尝试

sudo chown snadikop tmpDir/snadikop/hadoopdata
sudo chmod 750 tmpDir/snadikop/hadoopdata

snadikop 是用户。仍然无法解决这个问题。请帮我解决这个问题?

谢谢你。

下面是我的日志文件

2017-03-02 18:07:01,185 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
java.io.IOException: NameNode is not formatted.
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:331)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:104)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:427)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:395)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:299)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:569)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1479)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1488)
2017-03-02 18:07:01,377 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.io.IOException: NameNode is not formatted.
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:331)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:104)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:427)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:395)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:299)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:569)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1479)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1488)

2017-03-02 18:07:01,411 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG: 

这就是终端中发生的事情

snadikop@satish-vb:~$ jps
11492 NameNode
11654 DataNode
11863 Jps
11818 SecondaryNameNode
snadikop@satish-vb:~$ jps
11654 DataNode
11880 Jps
11818 SecondaryNameNode
snadikop@satish-vb:~$ 

以下是“名称”和“数据”文件夹的屏幕截图位置。 'name' 文件夹路径 我对此表示怀疑,无论两者是否必须在同一个文件夹中。

“数据”文件夹路径

4

1 回答 1

0

您提供的值hadoop.tmp.dir是相对路径,每次都会根据start调用脚本的路径而改变。此hadoop.tmp.dir目录路径将是基本路径dfs.name.dirdfs.data.dir如果它们没有明确设置在hdfs-site.xml.

因此,如果tmp.dir发生更改,namenode 的名称目录会更改,从而导致Namenode is not formatted错误。

将这些属性添加到hdfs-site.xml绝对非tmp路径,

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

然后format命名节点

hadoop namenode -format

还要将 的值修改为hadoop.tmp.dir绝对路径以停止tmp随机创建目录。

于 2017-03-03T06:45:49.817 回答