hadoop的安全模式,以及常用的安全模式命令

本文深入探讨了HDFS中安全模式的功能与作用,包括NameNode和DataNode在该模式下的行为,以及如何通过命令行工具控制安全模式的进出。安全模式确保了文件系统的稳定性和一致性,是HDFS维护和故障恢复的重要机制。

一、 什么是安全模式?

首先你需要了解NameNode的工作机制,请先查看这篇博客便于理解https://blog.csdn.net/qq_41813208/article/details/102722283

     安全模式在NameNode的作用:

       NameNode启动时,首先将镜像文件(Fsimage)载入内存并执行编辑日志(Edits)中的各项操作。一旦在内存中成功建立文件系统元数据的映像,则创建一个新的Fsimage文件和一个空的编辑日志。此时,NameNode开始监听DataNode请求。       这个过程期间,NameNode一直运行在安全模式,即NameNode的文件系统对于客户端来说是只读的(不允许上传删除文件)。

     安全模式在DataNode的作用:

       系统中的数据块的位置并不是由NameNode维护的,而是以块列表的形式存储在DataNode中。在系统的正常操作期间,NameNode会在内存中保留所有块的映射信息。在安全模式下,各个DataNode会向NameNode发送最新的块列表信息,NameNode了解到最后多的块信息之后,即可高效运行系统。 

判断安全模式是否退出

       如果满足"最小副本条件(指NameNode 元数据有 所有文件 至少一个副本的时候 就是最小副本)",NameNode会在30秒钟之后就会退出安全模式。

       另外:
           启动一个刚刚格式化的HDFS集群时,因为系统中还没有任何块,所以NameNode不会进入安全模式。

  1. 查看安全模式状态
    hdfs dfsadmin -safemode get
  2. 进入安全模式
    hdfs dfsadmin -safemode enter
  3. 离开安全模式
    hdfs dfsadmin -safemode leave
  4. 等待安全模式
    hdfs dfsadmin -safemode wait

案例: 

      1、首先创建一个文件用于测试 touch test.txt

      2、创建一个脚本文件vim safemodeTest.sh

hdfs dfsadmin -safemode wait
hdfs dfs -put test.txt

分两种情况执行这个脚本文件

情况一、先让集群进入安全模式

       hdfs dfsadmin -safemode enter

再执行上面的脚本

       bash ./safemodeTest.sh

此时这个命令行界面会进入等待

此时会报错

然后另外开启一个命令行,让NameNode从安全模式退出

hdfs dfsadmin -safemode leave

此时会发现test.txt文件已经上传到集群上了,并且之前进入等待的窗口退出

下面让集群离开安全模式

此时会发现文件已经上传到集群上了

如图

情况二、先让集群进入安全模式

 hdfs dfsadmin -safemode enter

然后上传上面的test.txt到集群上

hdfs dfs -put text.txt /

会如下报错

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

诗水人间

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

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

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

打赏作者

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

抵扣说明:

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

余额充值