0
点赞
收藏
分享

微信扫一扫

手动模拟NameNode故障处理以及集群的安全操作

十里一走马 2022-02-24 阅读 53


方法一:将SecondaryNameNode中的数据拷贝到namenode存储数据的目录

模拟 namenode 故障,并采用方法一,恢复 namenode 数据

模拟实现


  1. jps查看namenode进程 并 kill -9 进程号 杀死进程
  2. 删除 namenode 存储的数(/opt/module/hadoop-2.7.2/data/tmp/dfs/name)
    ​ [root@testnote01 ~]# rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/* ​
  3. 拷贝 SecondaryNameNode 中数据到原 namenode 存储数据目录
    ​ [root@testnote01 dfs]# scp -r root@testnote03:/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/* ./name/ ​

./name/ 当前的name目录下

手动模拟NameNode故障处理以及集群的安全操作_安全模式

干掉锁,

4. 重启namenode

hadoop-daemon.sh start namenode

发现namenode启动成功

手动模拟NameNode故障处理以及集群的安全操作_安全模式_02

数据仍然在

hadoop fs -put seen_txid /
上传文件

手动模拟NameNode故障处理以及集群的安全操作_安全模式_03

刚开始启动集群的时候,集群处于安全模式,等一会就好

采用importCheckpoint拷贝SecondaryNameNode数据

模拟 namenode 故障,并采用方法二,恢复 namenode 数据

修改hdfs-site.xml中的

<!--检查点时间120s-->
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>120</value>
</property>
<!--NameNode的存储路径-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp/dfs/name</value>
</property>

  1. kill -9 namenode 进程
  2. 删除 namenode 存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name)
    ​ rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/* ​
  3. 如果secondaryNameNode和NameNode不在一个主机节点上,需要将SecondaryNameNode存储数据的目录拷贝到NameNode存储数据的平级目录,并删除in_use.lock文件
    ​ [root@testnote01 dfs]# scp -r root@testnote03:/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary ./ ​

在dfs目录下

[root@testnote01 dfs]# ls
data name namesecondary
[root@testnote01 dfs]# cd namesecondary/
[root@testnote01 namesecondary]# rm -rf in_use.lock
  1. 导入检查点的数据(等待一会ctrl+c结束)
    ​ [root@testnote01 dfs]# hdfs namenode -importCheckpoint ​

手动模拟NameNode故障处理以及集群的安全操作_hdfs_04

ctr+c结束进程

  1. 启动NameNode
    ​ hadoop-daemon.sh start namenode ​

集群的安全模式操作


概述

NameNode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作,一旦内存中成功建立文件系统元数据映像,则创建一个新的fsimage文件和一个空的编辑日志,此时NameNode开始监听datanode请求,但此时NameNode处于安全模式.即NameNode的文件系统对于客户端来说是只读的

系统中的数据块的位置并不是NameNode守护的,而是按照块列表的形式存在datanode中,在系统正常操作期间,namenode会在内存中保留所有块位置的映射信息

在安全模式下,各个datanode会向namenode发送最新的块列表信息,namenode了解到足够多的块信息后,即可高效运行文件系统


如果满足"最小副本条件",namenode会在30s之后退出安全模式,

最小副本条件:整个文件系统中,99.9%的块满足最小副本级别(默认值:dfs:replication.min=1),在启动一个刚刚格式化的HDFS集群时,因为系统中还没任何块.所以namenode不会进入安全模式

2) 基本语法

集群处于安全模式下.不能执行重要(写操作),集群启动完成,自动退出安全模式

查看安全模式状态

[root@testnote01 dfs]# hdfs dfsadmin -safemode get
Safe mode is OFF

开启安全模式状态

[root@testnote01 dfs]# hdfs dfsadmin -safemode enter
Safe mode is ON

关闭安全模式状态

[root@testnote01 dfs]# hdfs dfsadmin -safemode leave
Safe mode is OFF

等待安全模式状态

[root@testnote01 dfs]# hdfs dfsadmin -safemode wait
Safe mode is OFF

什么是等待安全模式:

当系统处于安全模式状态,需要将安全模式状态关闭时,立刻执行命令

案例



先进入安全模式

[root@testnote01 dfs]# hdfs dfsadmin -safemode enter
Safe mode is ON



编写脚本并执行

#!/bin/bash
hdfs dfsadmin -safemode wait
hdfs dfs -put /abc.txt /



先开一个窗口,执行

hdfs dfsadmin -safemode leave


原窗口

[root@testnote01 /]# ./en.sh 
Safe mode is OFF

文件也上传成功了



举报

相关推荐

0 条评论