Hadoop3教程(三十二):(生产调优篇)NameNode故障恢复与集群的安全模式

news2024/12/23 10:22:15

文章目录

  • (159)NameNode故障处理
  • (160)集群安全模式&磁盘修复
    • 集群安全模式
    • 磁盘修复
    • 等待安全模式
  • 参考文献

(159)NameNode故障处理

如果NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode?

首先,我们可以通过以下代码来模拟故障:

(1)kill -9 NameNode进程

[atguigu@hadoop102 current]$ kill -9 19886

(2)删除NameNode存储的数据(/opt/module/hadoop-3.1.3/data/tmp/dfs/name)

[atguigu@hadoop102 hadoop-3.1.3]$ rm -rf /opt/module/hadoop-3.1.3/data/dfs/name/*

接下来,我们开始解决问题:

(1)拷贝SecondaryNameNode中数据到原NameNode存储数据目录

[atguigu@hadoop102 dfs]$ scp -r atguigu@hadoop104:/opt/module/hadoop-3.1.3/data/dfs/namesecondary/* ./name/

(2)重新启动NameNode

[atguigu@hadoop102 hadoop-3.1.3]$ hdfs --daemon start namenode

(3)向集群上传一个文件

那是不是这种方式能完全保证没有数据遗漏呢?

自然是不能的,因为SecondaryNameNode备份数据不是实时的,而是每隔一段时间去备份一次NN,假如正好在这段时间里,NN写入了大量数据,那这些自然 就遗失掉了。

不过现实中一般不会用SecondaryNameNode做备份的方式,而是采用NameNode的高可用HA模式,即启用两个NameNode的方式来容灾。

所以本节的内容做简单了解下就行了。

(160)集群安全模式&磁盘修复

集群安全模式

集群在启动的时候会进入安全模式一段时间,等待数据和节点等加载到一定程度后,才会自动退出安全模式。

当集群处于安全模式中时,文件系统只接受读数据请求,而不接受删除、修改等变更请求。

所以集群启动后,一段时间内,其实是无法上传数据、删除数据的。

什么场景下会进入安全模式呢?

  • NameNode在加载镜像文件和编辑日志的时候,会处于安全模式;(就是指集群启动的时候)
  • NameNode在接收DataNode注册时,会处于安全模式;
  • 数据块的副本缺失。导致某些数据块的可用副本数量少于设置值;
  • 。。。

满足什么条件时,集群会退出安全模式呢?

主要是依赖以下三个条件:

dfs.namenode.safemode.min.datanodes:即最小可用datanode数量,默认0。换句话说,集群需要有至少一个DataNode是可用的;

dfs.namenode.safemode.threshold-pct:副本数达到最小要求的block占系统总block数的百分比,默认0.999f。就是说,只要有超过一个块丢了,集群就不能退出安全模式。

dfs.namenode.safemode.extension:稳定时间,默认值30000毫秒,即30秒。即集群处于安全模式已经超过了30s。

以上三个条件都满足时,集群才会自动退出安全模式。对应的这几个参数都是在hdfs-default.xml里进行设置的。

关于安全模式,集群支持的指令有:

(1)bin/hdfs dfsadmin -safemode get	(功能描述:查看安全模式状态)
(2)bin/hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
(3)bin/hdfs dfsadmin -safemode leave	(功能描述:离开安全模式状态)
(4)bin/hdfs dfsadmin -safemode wait	(功能描述:等待安全模式状态)

磁盘修复

接下来模拟一下,由于数据块损坏,而进入安全模式的案例。

(1)分别进入hadoop102、hadoop103、hadoop104的/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1015489500-192.168.10.102-1611909480872/current/finalized/subdir0/subdir0目录,统一删除某2个块信息

[atguigu@hadoop102 subdir0]$ pwd
/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-1015489500-192.168.10.102-1611909480872/current/finalized/subdir0/subdir0

[atguigu@hadoop102 subdir0]$ rm -rf blk_1073741847 blk_1073741847_1023.meta
[atguigu@hadoop102 subdir0]$ rm -rf blk_1073741865 blk_1073741865_1042.meta

说明:hadoop103/hadoop104重复执行以上命令

但是你删除后会发现,集群仍然还在正常工作,也没有进入安全模式。这是因为NameNode还没有发现自己少数据了 。因为默认情况下,DataNode是每隔六小时会向NameNode主动汇报自己的数据情况,只有到那时候,NameNode才知道出事了,才能启动安全模式。

所以在本次模拟中,我们可以采用重新启动集群的方式,让NameNode立马知道出事了。因为集群启动时,各个DataNode会统一向NameNode 汇报自己的数据情况。

​ (2)重新启动集群

[atguigu@hadoop102 subdir0]$ myhadoop.sh stop
[atguigu@hadoop102 subdir0]$ myhadoop.sh start

​ (3)观察http://hadoop102:9870/dfshealth.html#tab-overview

在这里插入图片描述

​ 说明:安全模式已经打开,原因是块的数量没有达到要求。

​ (4)手动离开安全模式

[atguigu@hadoop102 subdir0]$ hdfs dfsadmin -safemode get
Safe mode is ON
[atguigu@hadoop102 subdir0]$ hdfs dfsadmin -safemode leave
Safe mode is OFF

​ (5)观察http://hadoop102:9870/dfshealth.html#tab-overview

在这里插入图片描述

现在整个集群已经退出了安全模式,可以进行正常的删除和修改,只是界面最上面会一直提示你,少了两个文件块。如果你不准备修复,同时嫌弃这个提示碍眼的话,可以去到HDFS目录里,把这两个文件块对应的元数据给删掉。只要删掉对应的元数据,那么谁都不会知道这两个文件块曾经存在过。

​ (6)将元数据删除

在这里插入图片描述

在这里插入图片描述

(7)观察http://hadoop102:9870/dfshealth.html#tab-overview,集群已经正常,没有再提示缺文件块了。

等待安全模式

核心是hdfs dfsadmin -safemode wait这个命令。

它的作用是,如果检测到集群处于安全模式中,该命令就会卡住,直到其重新检测到集群已经退出安全模式后,才会退出阻塞状态,继续执行后续的命令。

所以一般用来写一些特殊的脚本,脚本里是你希望在集群退出安全模式后,立即执行的一些处理。

直接抄教程里的例子(当集群退出安全模式后,立即上传指定文件):

(1)查看当前模式

[atguigu@hadoop102 hadoop-3.1.3]$ hdfs dfsadmin -safemode get

Safe mode is OFF

(2)先进入安全模式

[atguigu@hadoop102 hadoop-3.1.3]$ bin/hdfs dfsadmin -safemode enter

(3)创建并执行下面的脚本

在/opt/module/hadoop-3.1.3路径上,编辑一个脚本safemode.sh

[atguigu@hadoop102 hadoop-3.1.3]$ vim safemode.sh

#!/bin/bash
hdfs dfsadmin -safemode wait
hdfs dfs -put /opt/module/hadoop-3.1.3/README.txt /

[atguigu@hadoop102 hadoop-3.1.3]$ chmod 777 safemode.sh
[atguigu@hadoop102 hadoop-3.1.3]$ ./safemode.sh 

脚本safemode.sh的意思是,如果检测到集群处于安全模式,则阻塞当前进程,直到集群退出安全模式,停止阻塞,然后立刻上传README.txt文件到HDFS。

(4)再打开一个窗口,执行:

[atguigu@hadoop102 hadoop-3.1.3]$ bin/hdfs dfsadmin -safemode leave

(5)再观察上一个窗口:

Safe mode is OFF

(6)HDFS集群上已经有上传的数据了

在这里插入图片描述

参考文献

  1. 【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】

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

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

相关文章

基于nodejs+vue 中小学课程辅导系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

浏览器的渲染机制

渲染机制 浏览器的渲染机制一般分为以下几个步骤 处理 HTML 并构建 DOM 树。处理 CSS 构建 CSSOM 树。将 DOM 与 CSSOM 合并成一个渲染树。根据渲染树来布局,计算每个节点的位置。调用 GPU 绘制,合成图层,显示在屏幕上。 在构建 CSSOM 树时…

【模型推理优化学习笔记】张量并行和流水线并行简介

张量并行 当每个张量被分成多个块时,就会发生张量并行性,并且张量的每个块都可以放置在单独的 GPU 上。在计算过程中,每个块在不同的 GPU 上单独并行处理,并且可以通过组合来自多个 GPU 的结果来计算结果(最终张量&am…

React环境初始化

环境初始化 学习目标: 能够独立使用React脚手架创建一个React项目 1.使用脚手架创建项目 官方文档:(https://create-react-app.bootcss.com/)    - 打开命令行窗口    - 执行命令      npx create-react-app projectName    说明&#xff1a…

Linux:权限是什么

本篇文章来简单介绍一下Linux操作系统中权限的基本概念和一些操作方法,对Linux权限有一个基本的了解,希望对大家学习Linux有所帮助。 目录 1.权限的概念 2.Linux权限管理 2.1 文件访问者的分类 2.2 文件类型与访问权限(事物属性&#xff…

(未完待续)【Netty专题】Netty实战与核心组件详解

目录 前言阅读对象阅读导航前置知识课程内容一、Netty简介1.1 Netty是什么1.2 Netty有什么优势 二、第一个Netty程序2.1 Netty简单使用示例2.2 代码解读2.3 Netty的特性2.3.1 Netty的事件 2.4 Netty线程模型 三、Netty核心组件详解(未完待续)3.1 EventLo…

learn C++ NO.11——string类模拟实现

前言 本篇文章主要是讲string类的模拟实现,模拟实现的是string类的常用接口以及成员函数。让读者对string类有更深的理解。适当的“造轮子”,有助于我们的语言学习。 简单描述string类 string类其实就是一个管理字符数组的线性表,我们可以…

常见面试题-Redis专栏(二)

theme: cyanosis typora-copy-images-to: imgsRedisson 分布式锁?在项目中哪里使用?多久会进行释放?如何加强一个分布式锁? 答: 首先入门级别的分布式锁是通过 setnx 进行实现,使用 setnx 实现有四个注意…

6.MySQL内置函数

个人主页:Lei宝啊 愿所有美好如期而遇 日期函数 current_date() 当前日期 select 可以做表达式和函数的计算。 current_time() 当前时间 current_timestamp() 当前日期加时间 注意:值得说明的是这三个函数底层调用的都是同一个函数,只不…

C语言关键字

关键字作用 关键字是 C 语言中预先保留的单词 C语言关键字 注意:在定义变量或者常量的时候,不要使用关键字

设计模式:组合模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

简介: 组合模式,它是一种用于处理树形结构、表示“部分-整体”层次结构的设计模式。它允许你将对象组合成树形结构,以表示部分和整体的关系。这种模式的主要目的是简化客户端代码,并使客户端以一致的方式处理单个对象和组合对象。…

数字图像处理实验记录五(图像的空间域增强-锐化处理)

前言: 文章目录 一、基础知识1,什么是锐化?2,为什么要锐化?3,怎么进行锐化? 二、实验要求任务1:任务2:任务3: 三、实验记录:任务1:任…

计算机网络第三章习题

1.假定1km长的CSMA/CD网络的数据率为1Gb/s。设信号在网络上的传播 速率为200000km/s。求能够使用此协议的最短帧长. 问题刨析: 逻辑链: 最短帧长数据传输率x争用期2τ(2倍端到端所需要的时间) 题目已经给出数据率为1Gb/s,所以我们要知道争用期2τ是多少. 端到端所需要的时间信…

订单 延后自动关闭,五种方案优雅搞定!

前 言 在开发中,往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务 。那么这里就会产生一个问题,这个…

画程序流程图

一。在线程序流程图。类图和时序图 Integrations | Mermaid 二。VSCODE画UML图和各种种 1.下载plantuml.jarReleases plantuml/plantuml GitHubGenerate diagrams from textual description. Contribute to plantuml/plantuml development by creating an account on GitHu…

B-tree(PostgreSQL 14 Internals翻译版)

概览 B树(作为B树访问方法实现)是一种数据结构,它使您能够通过从树的根向下查找树的叶节点中所需的元素。为了明确地标识搜索路径,必须对所有树元素进行排序。B树是为有序数据类型设计的,这些数据类型的值可以进行比较和排序。 下面的机场代…

【在英伟达nvidia的jetson-orin-nx上使用调试摄像头-初步调试USB摄像头与Camera Conn.#0/#1接口-基础测试】

【在英伟达nvidia的jetson-orin-nx上使用调试摄像头-初步调试USB摄像头与Camera Conn.#0/#1接口-基础测试】 1、概述2、实验环境3、 物品说明(0)各种各样摄像头(1)USB摄像头(2)CSI摄像头(3&…

【JavaEE】线程安全的集合类 -- 多线程篇(9)

线程安全的集合类 多线程环境使用 ArrayList多线程环境使用队列多线程环境使用哈希表 多线程环境使用 ArrayList 自己使用同步机制 (synchronized 或者 ReentrantLock)Collections.synchronizedList(new ArrayList); synchronizedList 是标准库提供的一个基于 synchronized 进…

【AIGC】百度文库文档助手之 - 一键生成PPT

百度文库文档助手之 - 一键生成PPT 引言一、文档助手:体验一键生成PPT二、文档助手:进阶用法三、其它生成PPT的方法3.1 ChatGPT3.2 文心一言 引言 就在上个月百度文库升级为一站式智能文档平台,开放四大AI能力:智能PPT、智能总结、…

正则表达式提取http和http内容

http.* 这样匹配到的就是我们要的内容 取反正则:^((?!要取反的正则表达式).)*$ 取反:^((?!http.).)$ 这样匹配到的就是我们不要的内容 提取域名 /[(http|ftp|https):\/\/]?([\w_-](?:(?:\.[\w_-])))([\w.,?^%&:\/~#-]*[\w?^%&\/~#-]…