您的位置:首页 > Web前端 > Node.js

记一次简单的hdfs备份恢复过程

2017-11-16 13:15 288 查看
集群有段时间没人用了,重新启动时遇到无法连接到hdfs问题



jps查看命令之后发现是namenode没有启动起来,查看hdfs的日志:



找到问题的原因了,在namenode启动过程中重放hdfs的edit log时爆掉了GC,Google了一下,发现可以修改GC参数:

export HADOOP_OPTS="-XX:-UseGCOverheadLimit


重启启动namenode成功(中间恢复过程很慢很慢,跑到第二天早上,恢复失败。。。再次启动namenode又恢复成功了。。。还没明白原因。。)

感觉hdfs的edit log重放过程会有点慢,去找了一下命令,可以手动备份hdfs,生成新的fsimage,命令如下:

在namenode节点上存储工作空间:

hdfs dfsadmin -safemode enter
hdfs dfsadmin -saveNamespace
hdfs dfsadmin -safemode leave


在secondarynamenode上重新生成fsimage:

hadoop-deamon.sh stop secondarynamenode #关闭secondarynamenode
mv $HADOOP_HOME/tmp $HADOOP_HOME/tmp_bak # 备份 $hadoop.tmp.dir目录,即secondarynamenode文件存放位置
mkdir $HADOOP_HOME/tmp
hadoop secondarynamenode -checkpoint force  #手动生成fsimage备份
hadoop-deamon.sh start secondarynamenode


直接运行fsimage备份命令会遇到问题:

ERROR namenode.SecondaryNameNode: checkpoint: Inconsistent checkpoint fields.

需要手动移除hadoop.tmp.dir目录即可

参考资料:
https://community.hortonworks.com/content/supportkb/49438/how-to-manually-checkpoint.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop namenode