集群安全模式=>namenode启动过程=>Secondary namenode的作用

本文详细介绍了Hadoop HDFS集群在启动时的安全模式,包括NameNode启动过程、DataNode启动及退出安全模式的条件。在安全模式中,文件系统为只读,直到满足最小副本条件才会退出。当block损坏达到一定阈值时,集群也会进入安全模式。解决方案包括调整阈值、强制退出或修复损坏的block。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、集群启动

  首先要记住,集群启动的时候必定是处于安全模式中的。

NameNode启动

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

DataNode启动

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

退出安全模式

  只要满足“最小副本条件”,NameNode就会在30秒后退出安全模式。
  所谓的最小副本条件指的是在整个文件系统中99.9%的块满足最小副本级别(默认值:dfs.replication.min=1)
  在启动一个刚刚格式话过的集群的时候,因为系统中还没有任何块,所以NameNode不会进如安全模式。
  集群处于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。

二、异常情况block损坏

  当block异常损坏的时候,即block丢失。当NameNode发现集群中的block丢失到一定数量的阈值的时候,NameNode就会进去安全模式,不在接受客户端的数据更新要求。

解决方法

1、降低阈值
hdfs-site.xml中:
dfs.namenode.safemode.threshold-pct
0.999f
2、强制离开安全模式
hdfs dfsadmin-safemode leave
3、重新格式化集群
4、修复异常损坏的block块

三、总结

  1、安全模式中会导致NameNode的文件系统对于客户端来说是只读的。
  2、集群进入安全模式的俩种情况:
    (1)集群启动时
    (2)block异常损坏时
  3、解决办法
    (1)降低阈值
    (2)强制离开
    (3)重新格式化集群
    (4)修复损坏的block块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值