首先我们都知道jps查看节点是否起来了
,如果namenode或者datanode没有起来,那么
cd ~/bigdata/hadoop-2.7.7/logs
rm *
然后重新复现之前的问题,
./dfs-start.sh
--------------------------namenode故障-------------------------------------------------------
如果是namenode启动不了,那么就打开
hadoop-appleyuchi-namenode-ubuntu.log
查询error字样
例如出现:
There appears to be a gap in the edit log. We expected txid 1, but got txid
解决方案:
hadoop namenode -recover
一路选择c,一般就OK了
-------------------------------Datanode故障--------------------------------------------------
如果是datanode启动不了,
同样查看logs下面的文件
hadoop-appleyuchi-datanode-ubuntu.log
这里我们会发现,当我们修复完namenode以后,datanode就故障了,不能启动了
解决方案:
查看hdfs-site.xml,从里面的定义我们看到namenode和datanode的具体位置
<name>dfs.namenode.name.dir</name>
<value>file:/home/appleyuchi/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/appleyuchi/dfs/data</value>
</property>
</configuration>
用namenode文件夹中的VERSION文件中clusterID
替换
用datanode文件夹中的VERSION文件中的clusterID
即可.
-------------------------------------------------
最后切记:千万不要动不动就格式化,格式化以后hdfs上面的数据就全部没了!!!
今天再次碰到这个问题,来翻看自己记录的文章,却没有解决,
原因是想从集群配置改为伪分布式配置,datanode一直起不来,后来知道怎么回事了,
在
$HADOOP_HOME/etc/hadoop下面的slave文件中写入localhost即可.
因为,伪分布式的含义是,在一台机子上有master也有slave,所以要在slaves文件中写入ip地址(这里我写成localhost)
当然localhost要在/etc/hosts中做好映射.