【大数据之Hadoop】三十、HDFS故障排除

news/2024/5/20 1:15:55 标签: hadoop, hdfs, 大数据

使用3台服务器,恢复yarn快照。

1 NameNode故障处理

  出现NameNode进程挂了并且存储的数据也丢失了,怎么恢复NameNode。
在这里插入图片描述
故障模拟:

(1)kill掉NameNode的进程:

kill -9 进程ID

(2)删除NameNode的数据:/opt/module/hadooop-3.3.1/data/dfs/name

rm -rf /opt/module/hadooop-3.3.1/data/dfs/name/*

故障恢复:

(1)拷贝SecondaryNameNode中的数据到NameNode存储目录下:

scp -r liaoyanxia@hadoop104:/opt/module/hadoop-3.3.1/data/dfs/namesecondary/* ./name/

(2)重启NameNode:

hdfs --daemon start namenode

(3)向集群上传一个文件,成功!

2 集群安全模式&磁盘修复

安全模式的状态:文件系统只能进行读操作,不能删除、修改等。
进入安全模式的场景:
(1)NameNode在加载镜像文件和编辑日志时(集群刚启动或者系统刚启动时会进入到安全模式)。
(2)NameNode在接收DataNode注册时。

在这里插入图片描述
退出安全模式的条件:
(1)dfs.namenode.safemode.min.datanodes:最小可用datanode数量,默认0
(2)dfs.namenode.safemode.threshold-pct:副本数达到最小要求的block占系统总block数的百分比,默认0.999f。(只允许丢一个块)
(3)dfs.namenode.safemode.extension:稳定时间,默认值30000毫秒,即30秒。

基本语法:
集群处于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。

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

案例1:磁盘修复:当数据损坏进入安全模式时怎么处理:
(1)分别进入hadoop102、hadoop103、hadoop104的/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-…/current/finalized/subdir0/subdir0目录,统一删除某2个块信息(.meta后缀)。
在这里插入图片描述
删除之后集群没有任何反应的原因:
  NameNode和DataNode的工作机制:在集群启动之后,由DataNode主动向NameNode汇报,等到6小时间隔再汇报一次,当把数据块损坏时,得至少过6小时NameNode才会知道DataNode有无汇报。

修复方法:重启集群。

(2)重启集群。
(3)观察http://hadoop102:9870/dfshealth.html#tab-overview
在这里插入图片描述
  说明:安全模式已经打开,块的数量没有达到要求,且一直处于安全模式。
(4)离开安全模式:

hdfs dfsadmin -safemode get
hdfs dfsadmin -safemode leave

(5)安全模式关闭后,观察http://hadoop102:9870/dfshealth.html#tab-overview,发现丢失两个块。
在这里插入图片描述
  此时可以对集群进行工作,但下次再启动集群时还是会进入到安全模式,任何关掉安全模式后还是会提示丢失块。
  方法一:由专业人士修复丢失的块,在恢复块之前不能对集群有任何操作。
  方法二:如果该块不重要,则可以在HDFS删除元数据。
(6)用方法二在HDFS删除上述目录下的元数据。
在这里插入图片描述
(7)重启集群,观察http://hadoop102:9870/dfshealth.html#tab-overview,集群已经正常。

案例2:模拟等待安全模式,只有在安全模式退出之后才能继续进行操作。
(1)查看当前模式:

hdfs dfsadmin -safemode get

(2)先进入安全模式:

bin/hdfs dfsadmin -safemode enter

(3)在/opt/module/hadoop-3.3.1路径上创建并执行脚本safemode.sh,执行完该脚本之后数据并没有上传到HDFS中。

vim safemode.sh

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

chmod 777 safemode.sh
./safemode.sh

在这里插入图片描述
(4)在另外一个窗口执行执行安全模式退出。

bin/hdfs dfsadmin -safemode leave

(5)观察原来的窗口显示安全模式退出。

Safe mode is OFF

(6)观察到HDFS集群上数据上传成功。
在这里插入图片描述

3 慢磁盘监控

  指写入数据非常慢的磁盘。当机器运行时间长了,任务运行多,磁盘读写能力退化,严重时出现写入数据延时问题。

发现慢磁盘的办法:
  在HDFS创建一个目录,正常需要不到1s的时间,若创建目录大于1min且不是每次都是,知识偶尔慢,就可能出现慢磁盘。

找出哪块是慢磁盘的方法:
1)心跳未联系时间
  慢磁盘会影响DataNode和NameNode之间的心跳,正常心跳时间间隔是3s,超过3s则异常。

2)fio命令,测试磁盘读写性能
先下载fio:sudo yum install -y fio
(1)顺序读测试

sudo fio -filename=/home/liaoyanxia/test.log -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_r

(2)顺序写测试

sudo fio -filename=/home/liaoyanxia/test.log -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_w

(3)随机写测试

sudo fio -filename=/home/liaoyanxia/test.log -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_randw

(4)混合随机读写

sudo fio -filename=/home/liaoyanxia/test.log -direct=1 -iodeth 1 -thread -re=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_r_w -ioscheduler=noop

4 小文件归档

小文件弊端:
  因为每个文件按块存储,每个块都存储在NameNode中,大概占150Byte,所以对于100个1k的文件块和100个128m的文件块,所占的NameNode内存大小都为100*150Byte。大量小文件会占用很多NameNode内存。

解决:
  HDFS存档文件或HAR文件,把文件存入HDFS块,在减少NameNode内存使用的同时,允许对文件进行透明的访问。(即HDFS存的文件对内还是一个一个独立文件,对NameNode而言却是一个整体,减少了NameNode的内存。
在这里插入图片描述
先开启集群:

myhadoop.sh start

归档文件:
  把/input目录里面的所有文件归档成一个叫input.har的归档文件,并把归档后文件存储到/output路径下。

hadoop archive -archiveName input.har -p  /input  /output

查看归档文件:

hadoop fs -ls /output/input.har
hadoop fs -ls har:///output/input.har    可以看到归档文件里的一个个文件

解归档文件:

hadoop fs -cp har:///output/input.har/*    /

http://www.niftyadmin.cn/n/312444.html

相关文章

华为OD机试真题 Java 实现【字符串重新排序】【2023Q1 100分】

一、题目描述 给定一个字串s,s包含以空格分隔的若干个单词,请对s进行如下处理后输出: 1、单词内部调整 对每个单词字母重新按字典序排序。 2、单词间顺序调整: 统计每个单词出现的次数,并按次数降序排列;次数相同…

Android 平台应用软件开发(学习中)

Android 中的五种布局 1&#xff0c;LinearLayout(线性布局),RelativeLayout(相对布局)&#xff0c;FrameLayout&#xff08;帧布局&#xff09;,AbsoluteLayout(绝对布局),TableLayout(表格布局)。 <?xml version"1.0" encoding"utf-8"?> <L…

怎样才能尽快从开发岗转到产品经理岗位?

越来越多的开发同学随着工作年限的增长都会产生类似的想法。 当然&#xff0c;背后的原因也是多种多样&#xff0c;像薪资上的限制、行业前景的担忧等等&#xff0c;很多同学则踌躇在原地不敢转产品岗位&#xff0c;而有的同学则是通过各种不同方式顺利转岗到产品经理岗位&…

深入浅出解析 JVM 中的 Safepoint

1. 初识 Safepoint-GC 中的 Safepoint 最早接触 JVM 中的安全点概念是在读《深入理解 Java 虚拟机》那本书垃圾回收器章节的内容时。相信大部分人也一样&#xff0c;都是通过这样的方式第一次对安全点有了初步认识。不妨&#xff0c;先复习一下《深入理解 Java 虚拟机》书中安…

网络拓扑架构规划设计

小型组网架构 1.网络拓扑 终端用户接入到交换机,交换机直连防火墙构成的简单网络,防火墙连接internet,对内网的用户进行安全控制 2.特点 用户接入数量较少:小型网络应用于接入用户数量较少的场景,一般支持几个至几十个用户 网络覆盖范围小:网络覆盖范围一般也是一个…

Go语言面试题--进阶提升(7)

文章目录 1.关于 slice 或 map 操作&#xff0c;下面正确的是&#xff1f;2.下面代码输出什么&#xff1f;3.关于字符串连接&#xff0c;下面语法正确的是&#xff1f;4.下面代码能编译通过吗&#xff1f;可以的话&#xff0c;输出什么&#xff1f; 1.关于 slice 或 map 操作&a…

day44—选择题

文章目录 1. IPv4版本的因特网总共有多少有效A类地址网络&#xff08;D&#xff09;2. 下列有关Socket的说法&#xff0c;错误的是&#xff08;B&#xff09;3.下面对于cookie的描述中错误的是&#xff08;C&#xff09;4. 在以下协议中&#xff0c;那个协议与其他协议是不属于…

【持久层框架】mybatis-plus超详细讲解

文章目录 一、简介二、愿景三、特性四、支持数据库五、快速指南步骤1、创建数据库 mybatis_plus2、导入相应的依赖3、连接数据库4、编写代码5、小结 六、配置日志七、常用注解八、CRUD扩展Insert 插入参数说明主键生成策略分布式系统唯一id生成雪花算法主键自增 更新操作参数说…