集群的安全模式是集群的一个自我保护的一种模式,在集群的安全模式下
不允许用户对集群进行部分操作的。
集群什么时候会进入安全模式:
1)集群启动的时候,集群会自己进入安全模式
集群启动过程中做的事情?
启动顺序:
1)namenode 2)datanode 3)secondarynamenode
启动namenode的时候做的事情:
namenode主要作用:存储元数据
元数据:1)抽象目录树 2)数据和块的映射 3)数据块和节点的映射
元数据存储的位置:
1)硬盘上存储 /home/hadoop/data/hadoopdata/name/current
硬盘中的元数据包含:1) 2)
没有3)
2)内存中 全部的元数据
集群正常启动之后 读取的元数据信息都是内存中的
包含:1) 2) 3)
集群再启动namenode的时候:
1)将硬盘中的元数据加载到内存中
元数据信息:
hadoop-2.7.6.tar.gz 206M
1)/hadoop-2.7.6.tar.gz
2)hadoop-2.7.6.tar.gz:blk_12334:[] blk_12335:[]
启动datanode:
1)启动datanode的进程
2)启动完成向namenode进行发送心跳报告
3)datanode在发送心跳报告的时候也会发送块报告
namenode接受到这个块报告信息就会将相应的块id的节点放在
元数据的相应位置
hadoop-2.7.6.tar.gz:blk_12334:[hadoop01,hadoop02]
blk_12335:[hadoop02,hadoop03]
启动secondarynamenode
集群再整个启动过程中处于安全模式的,进行一系列的检查,符合
标准的时候,才会离开安全模式:
1)检查每一个数据块的副本个数,每一个数据块的副本个数至少为1
2)检查合乎标准的数据块占总数据块的比例
假设集群中的总的数据块的id:1000个
达到副本个数>=1的数据块的id:999 达标的数据块的比例999/1000=0.999
达到副本个数>=1的数据块的id:998 比例:0.998
3)检查存活的datanode个数
至少保证0个datanode存活的
4)整个符合上面的标准的状态持续30s之后
保证集群的稳定性
集群启动过程中,为什么进入安全模式:
1)namenode将硬盘中的元数据加载到内存中
2)namenode接受datanode的心跳报告
3)namenode接受datanode的块报告
4)namenode会进行一系列的检查
基于以上的原因 集群会进入安全模式 上面的事情都完成的情况下
集群会自动退出安全模式
2)集群运行过程中,也会进行检查
1)检查每一个数据块的副本个数,每一个数据块的副本个数至少为1
<property>
<name>dfs.namenode.replication.min</name>
<value>1</value>
<description>Minimal block replication.
</description>
</property>
2)检查合乎标准的数据块占总数据块的比例
<property>
<name>dfs.namenode.safemode.threshold-pct</name>
<value>0.999f</value>
<description>
Specifies the percentage of blocks that should satisfy
the minimal replication requirement defined by dfs.namenode.replication.min.
Values less than or equal to 0 mean not to wait for any particular
percentage of blocks before exiting safemode.
Values greater than 1 will make safe mode permanent.
</description>
</property>
假设集群中的总的数据块的id:1000个
达到副本个数>=1的数据块的id:999 达标的数据块的比例999/1000=0.999
达到副本个数>=1的数据块的id:998 比例:0.998
检查的时候发现不符合要求了 也会自动进入安全模式
如果集群处于维护或者是系统升级的时候,也可以手动进入安全模式:
命令:
hdfs dfsadmin -safemode get 获取当前集群的安全模式状态
Safe mode is OFF 离开了安全模式
Safe mode is ON 在安全模式
hdfs dfsadmin -safemode leave 强制离开安全模式
hdfs dfsadmin -safemode enter 强制进入安全模式
hdfs dfsadmin -safemode wait 等待安全模式自行离开 没有意义
在安全模式下,可以执行的操作,和不可以执行的操作:
可以执行的操作:
ls
get
cat
tail
不可以执行的操作:
-put
-mkdir
-touchz
-appendToFile
-rm
查询可以 不修改元数据信息的
增删改不可以 修改了元数据
安全模式自我保护的模式 在这个模式下不允许用户修改任何元数据的
只能查询元数据