今天在Pseudodistributed mode下启动HDFS
但是在试验向HDFS里拷贝文件时,发现出错,说没有找到namenode,用jps查看,有datanode和secondary namenode都启动起来了,但NameNode没有启动起来,用netstat -anp | grep 8020查看HDFS的默认端口8020也没有被监听。
原来是因为HDFS把namenode的格式化信息存在了系统的tmp目录下,该目录每次开机会被清空,因此每次重新启动机器,都需要重新格式化HDFS。
解决方案是配置一个新的tmp目录给hadoop
在$HADOOP_INSTALL/etc/hadoop/core-site.xml中添加一个property
<property>
<name>hadoop.tmp.dir</name>
<value>/home/norris/hadoop_tmp</value>
<description>A base for other temporary directories.</description>
</property>
这样就把hadoop的tmp目录设置到/home/norris/hadoop_tmp下面了,就不用担心下次启动会被清空了。
配置好后,先格式化namenode
%hadoop namenode -format
再启动HDFS
%start-dfs.sh
再向HDFS里放文件。
%hadoop fs -copyFromLocal /home/norris/data/hadoop/weatherdata.txt /usr/norris/weatherdata.txt
再关机,重启,再启动HDFS
%start-dfs.sh
再查看jps
有namenode被启动起来了。
查看文件:
%hadoop fs -ls /usr/norris/
Hadoop HDFS Namenode启动不成功
原文:http://blog.csdn.net/norriszhang/article/details/39204227