【问题描述】重启主机后SecondaryNameNode能启动,NameNode启动不了
【查看日志】
查找日志(日志: /hadoop/hadoop-0.20.2/logs):
Directory /tmp/hadoop-root/dfs/name is inan inconsistent state: storage directory
现在问题比较明确了,是临时目录不存在导致。/tmp/hadoop-hadoop/dfs/name是一个临时的文件夹,系统每次重启时都会进行删除,在配置文件中进行修改就可。
【分析】
1.hadoop原始文件中的主要配置文件
将hadoop-2.7.3.tar.gz解压缩后,在share/hdoop目录下关于common、HDFS 、Mapreduce、YARN的几个jar包中包含有最原始的配置文件:
core-default.xml------------->对应运行环境下的core-site.xml
hdfs-default.xml-------------> hdfs-site.xml
mapred-default.xml-------------> mapred-site.xml
yarn-default.xml-------------> yarn-site.xml-
2.使用临时目录的几个地方
在core-default.xml中可以看到
默认hadoop.tmp.dir=/tmp/hadoop-${user.name}
hdfs-default.xml中引用该临时目录的几个地方为:
以前属性均由hadoop.tmp.dir决定
dfs.namenode.name.dir=file://${hadoop.tmp.dir}/dfs/name
dfs.datanode.data.dir=file://${hadoop.tmp.dir}/dfs/data
dfs.namenode.checkpoint.dir=file://${hadoop.tmp.dir}/dfs/namesecondary
3.修改临时目录路径
(1)在namenode上
$stop-all.sh
修改:
[core-site.xml]
hadoop.tmp.dir=/home/ctr/hadoop/tmp
(2)分发文件到datanode
$ xsync.sh core-site.xml
$xcall.sh cat${HADOOP_HOME}/etc/full/core-site.xml
(3)格式化文件系统
$hadoop namenode -format //等同于hdfs namenode -format
分别查看namenode和datanode发现,格式化只对namenode的tmp目录进行了初始化。
(4)启动集群
$start-all.sh
namenode下也创建了tmp目录,在tmp目录的current子目录下的VERSION文件,namenode和datanode的集群ID一致。