HDFS元数据损坏恢复方法

南墨2年前技术文章1930

HDFS JournalNode 编辑目录(dfs.journalnode.edits.dir)下数据损坏(单节点损坏或所有节点数据损坏),如何恢复 HDFS

单节点损坏

a)      停止HDFS服务。

b)      确认editlog没有损坏的JournalNode

JournalNode的运行日志中无java.io.IOException: Can't scan a pre-transactional edit log错误日志,则为editlog没有损坏。

c)       拷贝正常JournalNode上的editlog到损坏的JournalNode节点上。

d)      查看dfs.journalnode.edits.dir的值,获取JournalNodeeditlog的存储目录

e)      备份editlog损坏的JournalNode节点上的editlog

f)       拷贝正常节点的editlog到异常节点。

g)      在异常节点修改拷贝后的文件属组。

h)      重启HDFS服务,启动成功。

所有节点损坏:

a)      找到重启前的主NameNode,进入其数据目录(查看配置项“dfs.namenode.name.dir”可获取),得到最新的FSImage文件的序号。一般如下:

1.png

b)      查看各JournalNode的数据目录(查看配置项“dfs.journalnode.edits.dir”可获取),查看序号从第一部获取到的序号开始的edits文件,看是否有不连续的情况(即前一个edits文件的最后一个序号 后一个edits文件的第一个序号 不是连续的,如下图中的edits_0000000000013259231-0000000000013259237就和后一个edits_0000000000013259239-0000000000013259246就是不连续的)。

2.png

c)       如果有这种不连续的edits文件,则需要查看其它的JournalNode的数据目录或NameNode数据目录中,有没有连续的该序号相关的连续的edits文件。

d)      如果找不到连续的edits文件,需要查看fsimage文件后的编号后的editslog文件是否连续,如连续则说明丢失的未合并部分的数据(数据较新),如以合并则需要恢复至上一个fsimage周期,此周期后的数据需要重新入

3.png

 


相关文章

使用udev配置asm

环境:centos7    1、udev介绍udev概念udev 是 Linux2.6 内核里的一个功能,它替代了原来的 devfs,成为当前 Linux 默认的设备管理工具。udev 以守护进程的形...

Ambari集群Spark3.x动态资源分配

Ambari集群Spark3.x动态资源分配

环境节点hdp01HDP3.1.5hdp02Spark3.2.4hdp03首先Spark配置History服务配置spark-defaults.confspark.master            ...

sparksql集成ranger权限测试

sparksql集成ranger权限测试

##启动thriftserver cd /opt/dtstack/spark/spark_pkg/sbin ./start-thriftserver.sh \ --master yarn \...

Hbase部署

安装前准备1.1. 设置环境变量所有hbase节点都要做vi /etc/profile export HBASE_HOME=/opt/hbaseexport PATH=$PATH:$HBASE_HOM...

apache Kyuubi部署及对接hive

apache Kyuubi部署及对接hive

1、背景客户重度使用spark sql,但是使用spark thriftserver存在各种各样的问题,我们选择使用kyuubi来替代spark thriftserver的使用2、安装包下载下载地址:...

MySQL 在线开启 GTID

MySQL 在线开启 GTID

描述生产环境上也会遇到需要开启 GTID ,有什么风险?如何在线开启?本篇 SOP 将介绍。GTID 限制由于基于 GTID 复制依赖于事务,所有开启 GTID 时,有些 MySQL 特性不支持:事务...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。