#背景
重启计算机之后,遇到了一个问题,执行start-all.sh之后,执行JPS命令,发现namenode没有启动。
每次开机都得重新格式化一下namenode才可以。
#原因:
hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。它默认的位置是在/tmp/{$user}下面,但是在/tmp路径下的存储是不安全的,默认的/tmp文件每次重新开机会被清空,与此同时namenode的格式化信息就会丢失。
#修改hdfs的存放位置
##core-site.xml修改($HADOOP_HOME/etc/hadoop)
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/tmp</alue>
</property>
##hdfs-site.xml修改($HADOOP_HOME/etc/hadoop)
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/data/dfs/name</value>
</property>
<property>
<name>dfs.namenode.edits.dir</name>
<value>${dfs.namenode.name.dir}</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/data/dfs/data</value>
</property>
路径的话也不一定需要创建,自动会创建;上述配置修改后重新格式化Namenode
hadoop namenode -format
然后启动hadoop
start-all.sh
这时候jps命令后就能看到NameNode的进程了,另外我们设置的路径下也会自动生成一个tmp文件
[hadoop@hadoop-01 hadoop-2.6.0-cdh5.7.0]$ jps
31808 Jps
31329 NameNode
31485 DataNode
31694 SecondaryNameNode
[hadoop@hadoop-01 hadoop-2.6.0-cdh5.7.0]$ ll
total 68
drwxrwxr-x 2 hadoop hadoop 4096 Apr 20 09:15 bin
drwxrwxr-x 3 hadoop hadoop 4096 Apr 29 20:37 data
drwxrwxr-x 3 hadoop hadoop 4096 Apr 20 09:15 etc
drwxrwxr-x 2 hadoop hadoop 4096 Apr 20 09:15 include
drwxrwxr-x 3 hadoop hadoop 4096 Apr 20 09:15 lib
drwxrwxr-x 2 hadoop hadoop 4096 Apr 20 09:15 libexec
-rw-rw-r-- 1 hadoop hadoop 17087 Apr 20 09:15 LICENSE.txt
drwxrwxr-x 3 hadoop hadoop 4096 Apr 29 20:42 logs
-rw-rw-r-- 1 hadoop hadoop 101 Apr 20 09:15 NOTICE.txt
-rw-rw-r-- 1 hadoop hadoop 1366 Apr 20 09:15 README.txt
drwxrwxr-x 2 hadoop hadoop 4096 Apr 20 09:15 sbin
drwxrwxr-x 4 hadoop hadoop 4096 Apr 20 09:15 share
drwxrwxr-x 3 hadoop hadoop 4096 Apr 29 20:42 tmp
[hadoop@hadoop-01 hadoop-2.6.0-cdh5.7.0]$ cd tmp