hadoop 优化之hdfs的故障排除

本篇博客主要是对hadoop hdfs的故障排除,主要包括:NameNode故障的处理,集群安全模式和磁盘修复。有不好的地方欢迎各位大佬斧正!感谢!

nn故障处理

1、情景
NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode
2、故障模拟
(1)kill -9 NameNode进程
[lqs@bdc112 current]$ kill -9 19886
(2)删除NameNode存储的数据(/home/lqs/module/hadoop-3.1.3/data/tmp/dfs/name)
[lqs@bdc112 hadoop-3.1.3]$ rm -rf /home/lqs/module/hadoop-3.1.3/data/dfs/name/*
3、解决办法
(1)拷贝SecondaryNameNode中数据到原NameNode存储数据目录
[lqs@bdc112 dfs]$ scp -rlqs@bdc114: /home/lqs/module/hadoop-3.1.3/data/dfs/namesecondary/* ./name/
(2)重新启动NameNode
[lqs@bdc112 hadoop-3.1.3]$ hdfs --daemon start namenode
(3)向集群上传一个文件

集群安全模式&磁盘修复

简介

所谓的安全模式就是文件系统只接受读数据请求,而不接受删除、修改等变更请求

哪些场景会进入到安全模式

1、nn在加载镜像文件和编辑日志的时间段里会进入安全模式
2、nn在接收dn的注册时也会处于安全模式

退出安全模式的条件

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秒

基本语法

集群处于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。
bin/hdfs dfsadmin -safemode get	
	作用:查看安全模式状态
bin/hdfs dfsadmin -safemode enter 
	作用:进入安全模式状态
bin/hdfs dfsadmin -safemode leave	
	作用:离开安全模式状态
bin/hdfs dfsadmin -safemode wait	
	作用:等待安全模式状态

实操01,启动集群进入安全模式

1、重新启动集群
[lqs@bdc112 subdir0]$ myhadoop.sh stop
[lqs@bdc112 subdir0]$ myhadoop.sh start
2、集群启动后,立即来到集群上删除数据,提示集群处于安全模式

实操02,磁盘修复

情景需求:
数据块损坏,进入安全模式,怎么解决
1、分别进入bdc112、bdc113、bdc114的/home/lqs/module/hadoop-3.1.3/data/dfs/data/current/BP-1015489500-192.168.10.102-1611909480872/current/finalized/subdir0/subdir0目录,统一删除某2个块信息.
[lqs@bdc112 subdir0]$ pwd/home/lqs/module/hadoop-3.1.3/data/dfs/data/current/BP-1015489500-192.168.10.102-1611909480872/current/finalized/subdir0/subdir0
[lqs@bdc112 subdir0]$ rm -rf blk_1073741847 blk_1073741847_1023.meta
[lqs@bdc112 subdir0]$ rm -rf blk_1073741865 blk_1073741865_1042.meta
#说明:bdc113、bdc114重复执行以上命令
2、重新启动集群
[lqs@bdc112 subdir0]$ myhadoop.sh stop
[lqs@bdc112 subdir0]$ myhadoop.sh start
3、观察http://bdc112:9870/dfshealth.html#tab-overview

在这里插入图片描述
如果出现上图的内容,说明安全模式已经打开,且块的数量没有达到要求。

4、离开安全模式

[lqs@bdc112 subdir0]$ hdfs dfsadmin -safemode get
Safe mode is ON
[lqs@bdc112 subdir0]$ hdfs dfsadmin -safemode leave
Safe mode is OFF
5、观察http://bdc112:9870/dfshealth.html#tab-overview

在这里插入图片描述

6、在web端将将元数据删除

7、观察http://bdc112:9870/dfshealth.html#tab-overview,集群已经正常

实操03

情景需求:
模拟等待安全模式



1、查看当前模式

[lqs@bdc112 hadoop-3.1.3]$ hdfs dfsadmin -safemode get
Safe mode is OFF
2、先进入安全模式
[lqs@bdc112 hadoop-3.1.3]$ bin/hdfs dfsadmin -safemode enter
3、创建并执行下面的脚本
在/home/lqs/module/hadoop-3.1.3路径上,编辑一个脚本safemode.sh
[lqs@bdc112 hadoop-3.1.3]$ vim safemode.sh
#!/bin/bash

hdfs dfsadmin -safemode wait
hdfs dfs -put /home/lqs/module/hadoop-3.1.3/README.txt /
[lqs@bdc112 hadoop-3.1.3]$ chmod 777 safemode.sh

[lqs@bdc112 hadoop-3.1.3]$ ./safemode.sh 
4、另外再打开一个窗口,执行
[lqs@bdc112 hadoop-3.1.3]$ bin/hdfs dfsadmin -safemode leave
5、再观察上一个窗口
Safe mode is OFF
6、HDFS集群上已经有上传的数据了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
INFO [upload-pool-47] c.e.d.j.DataUnitService.DataUnitService#tohiveWy[DataUnitService.java:172] /u01/tarsftp//2023070719592612007140001.txt.gz解压>>>>>>/u01/untarsftp/ 2023-07-07 20:11:54,787 WARN [Thread-4655234] o.a.h.h.DFSClient.DFSOutputStream$DataStreamer#run[DFSOutputStream.java:558] DataStreamer Exception org.apache.hadoop.ipc.RemoteException: File /dataunit/cu_access_log/10/2023070719592612007140001.txt could only be written to 0 of the 1 minReplication nodes. There are 11 datanode(s) running and no node(s) are excluded in this o peration. at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:2121) at org.apache.hadoop.hdfs.server.namenode.FSDirWriteFileOp.chooseTargetForNewBlock(FSDirWriteFileOp.java:286) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2706) at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:875) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:561) at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:524) at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1025) at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:876) at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:822) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730) at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2682)
最新发布
07-13

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小雏菊的成长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值