- nn故障处理
- 集群安全模式&磁盘修复
- 简介
- 哪些场景会进入到安全模式
- 退出安全模式的条件
- 基本语法
- 实操01,启动集群进入安全模式
- 实操02,磁盘修复
- 实操03
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 start2、集群启动后,立即来到集群上删除数据,提示集群处于安全模式 实操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 start3、观察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 OFF5、观察http://bdc112:9870/dfshealth.html#tab-overview
6、在web端将将元数据删除
7、观察http://bdc112:9870/dfshealth.html#tab-overview,集群已经正常
模拟等待安全模式
1、查看当前模式
[lqs@bdc112 hadoop-3.1.3]$ hdfs dfsadmin -safemode get Safe mode is OFF2、先进入安全模式
[lqs@bdc112 hadoop-3.1.3]$ bin/hdfs dfsadmin -safemode enter3、创建并执行下面的脚本
在/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.sh4、另外再打开一个窗口,执行
[lqs@bdc112 hadoop-3.1.3]$ bin/hdfs dfsadmin -safemode leave5、再观察上一个窗口
Safe mode is OFF6、HDFS集群上已经有上传的数据了



