生产调优HDFS—故障排除

生产调优HDFS—故障排除,第1张

生产调优HDFS—故障排除 生产调优HDFS—故障排除

注意:采用三台服务器即可,恢复到 Yarn 开始的服务器快照。

NameNode 故障处理


1)需求:
NameNode 进程挂了并且存储的数据也丢失了,如何恢复 NameNode
2)故障模拟
(1)kill -9 NameNode 进程
(2)删除 NameNode 存储的数据(/opt/module/hadoop-3.1.3/data/tmp/dfs/name)
rm -rf /opt/module/hadoop-3.1.3/data/dfs/name/*
3)问题解决
(1)拷贝 SecondaryNameNode 中数据到原 NameNode 存储数据目录
scp -r hadoop@hadoop104:/opt/module/hadoop-3.1.3/data/dfs/namesecondary/* ./name/
(2)重新启动 NameNode
hdfs --daemon start namenode

集群安全模式&磁盘修复

1)安全模式:文件系统只接受读数据请求,而不接受删除、修改等变更请求
2)进入安全模式场景
➢ NameNode 在加载镜像文件和编辑日志期间处于安全模式;
➢ NameNode 再接收 DataNode 注册时,处于安全模式

3)退出安全模式条件
dfs.namenode.safemode.min.datanodes:最小可用 datanode 数量,默认 0
dfs.namenode.safemode.threshold-pct:副本数达到最小要求的 block 占系统总 block 数的百分比,默认 0.999f。(只允许丢一个块)
dfs.namenode.safemode.extension:稳定时间,默认值 30000 毫秒,即 30 秒
4)基本语法
集群处于安全模式,不能执行重要 *** 作(写 *** 作)。集群启动完成后,自动退出安全模式。
(1)bin/hdfs dfsadmin -safemode get (功能描述:查看安全模式状态)
(2)bin/hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
(3)bin/hdfs dfsadmin -safemode leave(功能描述:离开安全模式状态)
(4)bin/hdfs dfsadmin -safemode wait (功能描述:等待安全模式状态)
5)案例 1:启动集群进入安全模式
(1)重新启动集群
(2)集群启动后,立即来到集群上删除数据,提示集群处于安全模式

6)案例 2:磁盘修复
需求:数据块损坏,进入安全模式,如何处理
( 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 个块信息

rm -rf blk_1073741847 blk_1073741847_1023.meta
rm -rf blk_1073741865 blk_1073741865_1042.meta
说明:hadoop103/hadoop104 重复执行以上命令
(2)重新启动集群
(3)观察 http://hadoop102:9870/dfshealth.html#tab-overview

说明:安全模式已经打开,块的数量没有达到要求。
(4)离开安全模式
hdfs dfsadmin -safemode get Safe mode is ON
hdfs dfsadmin -safemode leave Safe mode is OFF
(5)观察 http://hadoop102:9870/dfshealth.html#tab-overview

(6)将元数据删除
(7)观察 http://hadoop102:9870/dfshealth.html#tab-overview,集群已经正常

慢磁盘监控

“慢磁盘”指的时写入数据非常慢的一类磁盘。其实慢性磁盘并不少见,当机器运行时间长了,上面跑的任务多了,磁盘的读写性能自然会退化,严重时就会出现写入数据延时的问题。

如何发现慢磁盘?
正常在 HDFS 上创建一个目录,只需要不到 1s 的时间。如果你发现创建目录超过 1 分钟及以上,而且这个现象并不是每次都有。只是偶尔慢了一下,就很有可能存在慢磁盘。

可以采用如下方法找出是哪块磁盘慢:
1)通过心跳未联系时间。
一般出现慢磁盘现象,会影响到 DataNode 与 NameNode 之间的心跳。正常情况心跳时间间隔是 3s。超过 3s 说明有异常。
2)fio 命令,测试磁盘的读写性能
(1)顺序读测试
sudo yum install -y fio
sudo fio -filename=/home/xiaoqiu/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/xiaoqiu/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/xiaoqiu/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/xiaoqiu/test.log -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_r_w -ioscheduler=noop

小文件归档

1)HDFS 存储小文件弊端

每个文件均按块存储,每个块的元数据存储在 NameNode 的内存中,因此 HDFS 存储小文件会非常低效。因为大量的小文件会耗尽 NameNode 中的大部分内存。但注意,存储小文件所需要的磁盘容量和数据块的大小无关。例如,一个 1MB 的文件设置为 128MB 的块
存储,实际使用的是 1MB 的磁盘空间,而不是 128MB。
2)解决存储小文件办法之一
HDFS 存档文件或 HAR 文件,是一个更高效的文件存档工具,它将文件存入 HDFS 块,在减少 NameNode 内存使用的同时,允许对文件进行透明的访问。具体说来,HDFS 存档文件对内还是一个一个独立文件,对 NameNode 而言却是一个整体,减少了 NameNode 的内
存。

3)案例
(1)需要启动 YARN 进程
start-yarn.sh
(2)归档文件
把/input 目录里面的所有文件归档成一个叫 input.har 的归档文件,并把归档后文件存储到/output 路径下。
hadoop archive -archiveName input.har -p /input /output
(3)查看归档
hadoop fs -ls /output/input.har
hadoop fs -ls har:///output/input.har
(4)解归档文件
hadoop fs -cp har:///output/input.har/* /

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5653981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存