格式化NN报错: java.io.IOException: Cannot create directory /tmp/dfs/name/current

来源:3-8 HDFS伪分布式环境搭建

Leaf_Ye

2019-03-26

搭建好了之后格式化NN报错

hdfs namenode -format
19/03/26 22:34:44 WARN namenode.NameNode: Encountered exception during format: 
java.io.IOException: Cannot create directory /home/app/tmp/dfs/name/current
	at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java:337)
	at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:548)
	at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:569)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:148)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1041)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1479)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1606)
19/03/26 22:34:44 ERROR namenode.NameNode: Failed to start namenode.
java.io.IOException: Cannot create directory /home/app/tmp/dfs/name/current
	at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java:337)
	at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:548)
	at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:569)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:148)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1041)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1479)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1606)
19/03/26 22:34:44 INFO util.ExitUtil: Exiting with status 1
19/03/26 22:34:44 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop000/192.168.0.105
************************************************************/

tmp 文件下也是完全空的 tmp是自己手动建立的

[hadoop@hadoop000 tmp]$ pwd
/home/hadoop/app/tmp
[hadoop@hadoop000 tmp]$ ll
total 0
[hadoop@hadoop000 tmp]$

core-site.xml 配置

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

hdfs-site.xml

<configuration>
	<configuration>
	    <!--副本系数 -->
	    <property>
	            <name>dfs.replication</name>
	            <value>1</value>
	    </property>

	    <!--临时文件如果不指定每次启动操作系统都会被清除-->
            <property>
                  <name>hadoop.tmp.dir</name>
                  <value>/home/app/tmp</value>
            </property>
                                                                
	</configuration>


</configuration>

hadoop-env.sh 没有改, 因为JAVA_HOME已经被设置成了环境变量了, 按道理说改不改都可以啊.
其实我也尝试过修改,结果发现问题还是重复出现。

各位大佬有遇到这种情况吗?

写回答

2回答

Michael_PK

2019-03-26

你的这个tmp目录是什么权限?

0
2
Leaf_Ye
就是权限问题。不知道在生产环境上一般的会把这个目录配置到哪儿? 还有这些临时文件有啥用? 是缓存吗?
2019-03-26
共2条回复

Leaf_Ye

提问者

2019-03-26

。 找到原因了。 

  1.   临时文件应该配置到core-site 里面不应该配到 hdfs-site 里面 

  2.   临时文件写错路径, 因为是非root用户  没有读写/home 非 hadoop目录的权限。结果死活不行。

大家以后也要注意啊。

1
0

10小时入门大数据

【毕设】大数据零基础入门必备,轻松掌握Hadoop开发核心技能

1456 学习 · 656 问题

查看课程