0%

Hadoop学习记录(一):Hadoop集群搭建

使用jps,发现没有namenode

使用命令/opt/hadoop/sbin/start-all.sh启动hadoop,之后使用jsp,一般来讲会出现如下6个线程

1
2
3
4
5
6
55598 Jps
54490 NameNode
54684 DataNode
54931 SecondaryNameNode
55332 NodeManager
38251 ResourceManager
但是我发现我运行后没有出现namenode。仔细观察中断启动时的日志发现,namenode的日志记录在/opt/hadoop/logs/hadoop-zhangyu-namenode-a2d8c523dd0b.log中,打开它,发现在最后居然报了异常。由于Hadoop是java写的,异常很好认(我就是学java出身的)。
1
java.io.IOException: There appears to be a gap in the edit log.  We expected txid 1, but got txid 16.
百度之后发现namenode的元数据破坏,需要恢复,具体参考某csdn博客。 使用hadoop namenode -recover即可恢复。

使用jps,发现没有datanode

总结写在前: 由于意外hadoop没有创建data文件夹,执行cp -r /data/tmp/hadoop/tmp/dfs/data /data/tmp/hadoop/hdfs,并修改clusterId,clusterId在/data/tmp/hadoop/hdfs/data/current/VERSION中。

在执行上面的操作修复namenode之后,发现原来在的datanode居然不见了。还是使用老办法发现日志文件(日志文件名字太长就不写了),异常:All specified directories are failed to load。。经过百度之后发现是datanode和namenode配置文件的VERSION文件中的clusterId不一致。所以只需要将clusterId更改成一致即可。 但是我的出现的问题重点不是这个,我在修改clusterId时发现:我的namenode配置在/data/tmp/hadoop/hdfs/name中。但是检查我的datanode配置是否在/data/tmp/hadoop/hdfs/data中时,发现hadoop根本没有创建这个文件夹。于是又进行排查,发现在/data/tmp/hadoop/tmp/dfs中存在data文件夹。于是使用命令cp /data/tmp/hadoop/tmp/dfs/data /data/tmp/hadoop/hdfs,将这份data文件夹拷贝到/data/tmp/hadoop/hdfs,并更改clusterId。VERSION文件在/data/tmp/hadoop/hdfs/data/current