前面配置好hadoop后,每次开启虚拟机,启动集群后,总是有一些节点起不来。要不就是namenode,要不就是datanode。后面百度找到了原因所在: 在配置hdfs时,我们只配置了datanode的目录,而没有配置namdenode的相关信息。默认的tmp文件每次重新开机会被清空,与此同时namenode的格式化信息就会丢失。所以,每次一开机,集群找不到namenode的信息,故每次都要重新格式化集群。

解决办法: 修改hadoop/conf目录里面的core-site.xml文件,加入下面的配置

1
2
3
4
5
<property>
        <name>hadoop.tmp.dir</name>
        <value>/zoux/hadoop/Hadoop_tmp</value>
        <description>A base for other temporary directories.</description>
 </property>

我将从hadoop官网下载的Hadoop-0.20.2的安装包解压在/zoux目录下, 然后将Hadoop-0.20.2重命名了hadoop,然后再在hadoop目录下建立Hadoop_tmp目录,用于存放namenode的信息。

然后在重新格式化,重启就行! 关于如何初始化,详见我上一篇文章!