【HDFS】一次备NameNode宕机过久导致的生产事故

一次备NameNode宕机过久导致的生产事故

故障描述

最近发生的一个临时故障,情况是一个启了HA的HDFS集群,在2023年9月份因为两台NameNode同时启动产生一些问题,所以当时将一台节点停止,一直没有启动,具体为什么当时有问题这个不太清楚,这次是唯一活动的NameNode节点因为硬件问题突然挂死了,需要把当初一直停止的节点拉起来做Active NameNode保证集群的服务可用。

处理流程

由于从9月到现在已经过去4个多月,这个过程中由于一直是单节点运行且没有进行人工干预,所以产生了大量的editlog,这个时候启动NameNode就会花费大量时间去做editlog的加载,这个过程不可避免,只能等,否则数据会丢失:

image-20240105114525177

可以看到,NameNode启动的大部分时间都在加载editlog,总共1400多个editlog,每个大小大概400M,花费了18个多小时才完成加载:

image-20240105114441534

产生这么多edit原因:jn是存editlogfsimage的,它的数据从nn来,但不是两个nn都发送变更信息,其产生机制是,一个主nn负责接受请求,记录所有操作到edit,备nn在一直从主nn同步这些内容,然后备nn周期性checkpoint,写给jn集群,主nn再通过jn的变换,更改自己本地的fsimageedit,完成自己fsimage的更新,这就是checkpoint,所以之前备nn停了以后,nn自动进行checkpoint的机制就停了。

NameNode启动完成后,它会自动进行一次CheckPoint,生成最新的fsimage文件:

image-20240105175425180

随后,它会告诉JournalNode,删除过期的editlog,此时查看JournalNode的日志,可以看到它正在删除旧的editlog的日志。

image-20240105134559738

这里需要注意一个地方,那就是NameNodeJournalNode进行数据更新的时候,可能发生超时的情况:

image-20240105135956541

这是因为JournalNode那边太多editlog要进行删除,结果返回可能会慢一些,问题在于一旦超过超时限制,NameNode会被停掉,所以这一点一定要注意,可以在启动NameNode前提前更改相关配置来提高容错性:

    <property><name>dfs.qjournal.select-input-streams.timeout.ms</name><value>120000</value></property><property><name>dfs.qjournal.start-segment.timeout.ms</name><value>120000</value></property><property><name>dfs.qjournal.write-txns.timeout.ms</name><value>120000</value></property>

当启动的这个NameNode变成Active状态后,我们就可以尝试拉起另一个NameNode节点了:

如果NameNode没有变成Active,那么可能需要使用命令进行手动的切换

如果在拉起另一个NameNode节点时出现以下报错,需要人工介入:

2024-01-05 16:41:40,082 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
java.io.IOException: There appears to be a gap in the edit log.  We expected txid 22959333199, but got txid 25856535422.at org.apache.hadoop.hdfs.server.namenode.MetaRecoveryContext.editLogLoaderPrompt(MetaRecoveryContext.java:94)at org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader.loadEditRecords(FSEditLogLoader.java:215)at org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader.loadFSEdits(FSEditLogLoader.java:143)at org.apache.hadoop.hdfs.server.namenode.FSImage.loadEdits(FSImage.java:843)at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:698)at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:294)at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:975)at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:681)at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:585)at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:645)at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:812)at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:796)at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1493)at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1559)
2024-01-05 16:41:40,086 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2024-01-05 16:41:40,091 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:

image-20240105171821728

执行下面的命令,尝试从当前的Active NameNode拉取最新的fsimage

hdfs namenode -bootstrapStandby

image-20240105175946751

24/01/05 17:24:05 INFO namenode.TransferFsImage: Downloaded file fsimage.ckpt_0000000025860457585 size 21353832867 bytes.
24/01/05 17:24:05 INFO util.ExitUtil: Exiting with status 0
24/01/05 17:24:05 INFO namenode.NameNode: SHUTDOWN_MSG: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/605387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跟一个学霸应该聊些什么?

与学霸聊天时&#xff0c;可以考虑以下几个方面&#xff1a; 学术兴趣和研究&#xff1a;询问他们的学术领域、研究项目&#xff0c;或者最近读到的有趣论文。这可以激发深入的学术讨论。 最新科学发现&#xff1a;谈论最新的科学和技术进展&#xff0c;尤其是与他们专业相关的…

高效的图纸管理技巧、高效的图纸管理软件

高效的图纸管理技巧包括以下几个方面&#xff1a; 分类和组织&#xff1a;首先&#xff0c;确保你有一种清晰的图纸分类和组织系统。创建不同的文件夹来储存不同类型的图纸&#xff0c;如建筑、机械、电气等。更细的分类还可以按项目或客户进行划分。命名规则&#xff1a;为图…

Java默认只有一个线程

Java默认只有一个线程 在Java中&#xff0c;默认情况下只有一个线程运行。这意味着在一个Java程序中&#xff0c;只有一个主线程可以执行代码。但是&#xff0c;有时我们也会说Java默认有两个线程&#xff0c;一个主线程负责执行代码和一个GC线程负责&#xff08;垃圾回收&…

QT:单例

单例的定义 官方定义&#xff1a;单例是指确保一个类在任何情况下都绝对只有一个实例&#xff0c;并提供一个全局访问点。 单例的写法 抓住3点&#xff1a; 构造函数私有化&#xff08;确保只有一个实例&#xff09;提供一个可以获取构造实例的接口&#xff08;提供唯一的实…

03.分支结构

分支结构 应用场景 迄今为止&#xff0c;我们写的Python代码都是一条一条语句顺序执行&#xff0c;这种代码结构通常称之为顺序结构。然而仅有顺序结构并不能解决所有的问题&#xff0c;比如我们设计一个游戏&#xff0c;游戏第一关的通关条件是玩家获得1000分&#xff0c;那…

实现珠宝业务快速扩张的关键:广东省珠宝行业ERP系统的价值

珠三角地区具备毗邻港澳及改革开放先行地的优势&#xff0c;为当地的产业发展带来技术和资金&#xff1b;同时&#xff0c;改革开放后该地区经济发展较快&#xff0c;当地居民的消费水平提高&#xff0c;消费转型&#xff0c;对珠宝首饰产品的需求也相应提高&#xff0c;逐渐形…

1080p 1k 2k 4k 8k 分辨率,2K就不应该存在。

众所周知 1K&#xff08;1080P&#xff09;&#xff1a;分辨率为19201080像素&#xff0c;2K&#xff1a;分辨率为25601440像素4K&#xff1a;分辨率为38402160像素8K&#xff1a;分辨率为76804320像素 边长比例&#xff0c;和像素比例如下&#xff1a; 2K宽高都是1k的1.333…

docker run 命令详解

一、前言 Docker容器是一个开源的应用容器引擎&#xff0c;让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何安装了Docker引擎的服务器上&#xff08;包括流行的Linux机器、Windows机器&#xff09;&#xff0c;也可以实现虚拟…

数据聚合、自动补全、数据同步、es集群

目录 数据聚合 聚合的分类 DSL实现bucket聚合 DSL实现Metrics聚合 RestAPI实现聚合 多条件聚合 带过滤条件的聚合 自动补全 安装拼音分词器 自定义分词器 completion suggester查询 修改索引库数据结构 RestAPI实现自动补全查询 实现搜索框自动补全 数据同步 数…

华为OD机试会遇到原题吗?

答案是&#xff1a;会遇到。 OD机试是有题库的&#xff0c;每半年刷新一次题库&#xff0c;题库题目在100-200到题之间&#xff0c;2024年考的是统一考试C卷&#xff0c;题库我基本已经收集全了。 学生们反馈&#xff0c;最近的考试基本会遇到2-3道原题&#xff0c;高分比较简…

【2024系统架构设计】 系统架构设计师第二版-层次式架构设计理论与实践

目录 一 表现层框架设计 二 中间层架构设计 三 数据访问层设计 四

RabbitMQ(九)死信队列

目录 一、简介1.1 定义1.2 何时进入死信队列&#xff1f;1.3 死信消息的变化1.4 死信队列的应用场景1.5 死信消息的生命周期 二、代码实现2.1 死信队列的配置步骤2.2 配置类2.3 配置文件2.4 生产者2.5 业务消费者2.6 死信消费者2.7 测试结果 三、总结 RabbitMQ 是流行的开源消息…

MySQL数据库进阶-索引

索引 索引是帮助 MySQL 高效获取数据的数据结构&#xff08;有序&#xff09;。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&#xff0c;这样就可以在这些数据结构上实现高级…

【Spring Boot 3】【数据源】自定义JDBC数据源

【Spring Boot 3】【数据源】自定义JDBC数据源 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总…

CSS3渐变属性详解

渐变属性 线性渐变 概念&#xff1a;线性渐变&#xff0c;指的是在一条直线上进行的渐变。在线性渐变过程中&#xff0c;起始颜色会沿着一条直线按顺序过渡到结束颜色 语法&#xff1a; background:linear-gradient(渐变角度&#xff0c;开始颜色&#xff0c;结束颜色);渐变…

https配置证书

HTTPS 基本原理 https 介绍 HTTPS&#xff08;全称&#xff1a;HyperText Transfer Protocol over Secure Socket Layer&#xff09;&#xff0c;其实 HTTPS 并不是一个新鲜协议&#xff0c;Google 很早就开始启用了&#xff0c;初衷是为了保证数据安全。 国内外的大型互联网…

SQL 基础知识点

1. 数据库相关术语 数据库&#xff08;database&#xff09;&#xff1a;保存有组织的数据的容器&#xff08;通常是一个文件或一组文件&#xff09;。数据表&#xff08;table&#xff09; &#xff1a;某种特定类型数据的结构化清单。模式&#xff08;schema&#xff09;&am…

springboot 房屋租赁系统

spring boot mysql mybatis 前台后端

开心自走棋:使用 Laf 云开发支撑数百万玩家

先介绍一下开心自走棋 开心自走棋是一款剑与魔法的烧脑自走棋游戏。以著名的魔幻世界观为蓝本&#xff0c;采用了轻松可爱的画面风格&#xff0c;精致细腻的动画和特效来还原魔兽之战。 现在市面上自走棋游戏多是 PvP 玩法为主&#xff0c;而开心自走棋是以 PvE 玩法为主的&a…

C语言光速入门笔记

C语言是一门面向过程的编译型语言&#xff0c;它的运行速度极快&#xff0c;仅次于汇编语言。C语言是计算机产业的核心语言&#xff0c;操作系统、硬件驱动、关键组件、数据库等都离不开C语言&#xff1b;不学习C语言&#xff0c;就不能了解计算机底层。 目录 C语言介绍C语言特…