今天在Pseudodistributed mode下启动HDFS
见配置http://blog.csdn.net/norriszhang/article/details/38659321
但是在试验向HDFS里拷贝文件时,发现出错,说没有找到namenode,用jps查看,有datanode和secondary namenode都启动起来了,但NameNode没有启动起来,用netstat -anp | grep 8020查看HDFS的默认端口8020也没有被监听。
经网上查询,得知原因:引 http://blog.csdn.net/bychjzh/article/details/7830508
原来是因为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/