Hadoop集群安全模式详解
集群安全模式详解
[TOC]
一、什么是集群安全模式?
其实安全模式就是集群数据都还没准备好时候的一个保护机制!
二、什么情况下进入安全模式?
1、集群启动时必定会进入安全模式
Namenode启动时,首先将镜像文件(**fsimage**)载人内存,并执行编辑日志(**edits**)中的各项操作。一旦在內存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件和一个空的编辑日志。此时, Namenode开始监听Datanode请求。这个过程期间, Namenode一直运行在安全模式,即NameNode的文件系统对于客户端来说是只读的。
DataNode启动发生的事情
系统中的数据块的位置并不是由 NameNode维护的,而是以块列表的形式存储在 DataNode中。在系统的正常操作期间, NameNode会在内存中保留所有块位置的映射信息。在安全模式下,各个 DataNode会向NameNode发送最新的块列表信息(DN启动后第一时间向NameNode注册时会把自身块列表信息信息一并带去), NameNode了解到足够多的块位置信息之后,即可髙效运行文件系统
这个足够多是多少呢?99.9%
安全模式退出的判断
如果满足“最小副本条件”, NameNode会在30秒钟之后就退出安全模式。所谓的最小副本条件指的是在整个文件系统中99.9%的块满足最小副本级别(默认值:dfs.replication.min=1)。在启动一个刚刚格式化的HDFS集群时,因为系统中还没有任何块,所以 Namenode不会进入安全模式。
2、异常情况下导致的安全模式
原因:Block确实有丢失,当NameNode发现集群中的Block丢失的数量达到一个阈值时,NameNode就进入了安全模式的状态,不在接受客户端的数据更新请求。
三、安全模式的解决办法?
【解决办法】
调低阈值
在hdfs.xml中
1
2<name>dfs.namenode.safemode.threshold-pct</name>
<value>0.999f</value>强制离开
1
hdfs dfsadmin -safemode leave
重新格式化集群
修复损坏的块文件
【基本语法】
集群处于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!