集群的一种自我保护模式 namenode
集群再安全模式下不允许用户的相关的操作的
什么情况下 hdfs会进入安全模式?
1)集群启动的时候进入安全模式
集群的启动顺序:
namenode---》 datanode---》 secondarynamenode
集群再启动namenode和datanode的时候一直处于安全模式的
集群启动的时候的做了哪些事情?
1)启动namenode
namenode启动的时候将磁盘中的元数据加载到内存中一份
为了快速加载 只会加载 抽象目录树 数据和块的对应关系 元数据信息
2)启动datanode
每一个启动完成datanode 这个datanode立即向namenode发送心跳 发送块报告信息
namenode接受datanode的心跳报告 统计块报告 添加上块的每一个副本的存储节点 块的存储位置
3)启动secondarynamenode
secondarynamenode 启动完成 向 namenode发送心跳
集群启动过程中 执行步骤1 步骤2 的时候 进行namenode元数据的完善阶段 这个时候集群不能对外提供服务的 处于自我保护的状态 安全模式
2)集群运行过程中也有可能进入安全模式
1)集群的块的汇报率 < 99.9%
2)datanode节点的汇报个数小于设置
3)namenode的元数据的存储目录的大小 <100m
集群什么时候会离开安全模式:
集群处于安全模式的时候 对元数据相关信息做哪一些检查
检查项目:
1)每一个数据块的最小副本个数 保证有一个可用就可用
<property>
<name>dfs.namenode.replication.min</name>
<value>1</value>
<description>Minimal block replication.
</description>
</property>
2)可用数据块的汇报率 保证集群中的99.9%的数据块是可用的(每一个数据块只保证1个副本)
集群中 总数据块(除了副本 不同blockid的)1000
进行块报告的时候 接受 0.999*1000=999个
<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>
3)可用的最小节点个数 默认0个
<property>
<name>dfs.namenode.safemode.min.datanodes</name>
<value>0</value>
<description>
Specifies the number of datanodes that must be considered alive
before the name node exits safemode.
Values less than or equal to 0 mean not to take the number of live
datanodes into account when deciding whether to remain in safe mode
during startup.
Values greater than the number of datanodes in the cluster
will make safe mode permanent.
</description>
</property>
4)安全模式的停留时长
<property>
<name>dfs.namenode.safemode.extension</name>
<value>30000</value>
<description>
Determines extension of safe mode in milliseconds
after the threshold level is reached.
</description>
</property>
5)检查元数据存储的文件夹大小 默认100m
<property>
<name>dfs.namenode.resource.du.reserved</name>
<value>104857600</value>
<description>
The amount of space to reserve/require for a NameNode storage directory
in bytes. The default is 100MB.
</description>
</property>
符合以下的要求 才会离开安全模式:
1)数据块的汇报率(每一个数据块最少保证1个副本)达到>=99.9%
2)datanode的节点个数达到配置要求的时候 默认是0个
3)当前两个条件都满足的时候 保证安全模式30s 保证集群数据汇报稳定的时候
4)保证namenode每一个元数据的文件夹的存储预留大小达到100M 以上
四个条件 同时满足的时候 才会离开安全模式
手动进入安全模式的命令:
一般情况下 集群升级的时候 hadoop2.7-->hadoop2.8 一般将集群进入安全模式或者集群维护
hdfs dfsadmin -safemode get/leave/enter/wait
hdfs dfsadmin -safemode get 获取集群的当前的安全模式的状态
Safe mode is OFF 安全模式关闭的
hdfs dfsadmin -safemode enter 进入安全模式
Safe mode is ON
hdfs dfsadmin -safemode leave 离开安全模式
hdfs dfsadmin -safemode wait 等待安全模式离开
在安全模式操作:
在安全模式下不是所有的操作都不能执行的
可以执行的操作
hadoop fs -ls /
hadoop fs -get /hadoop6 /home/hadoop/apps
hadoop fs -cat /hdfs-site.xml
hadoop fs -tail /hdfs-site.xml
这些操作查询相关的
只要不修改元数据的操作都可以执行
元数据1)目录树 2)文件--块 3)块的位置
不可以执行的操作
只要修改元数据的操作都不能执行
hadoop fs -put Local hdfs
hadoop fs -mkdir /dd
hadoop fs -touchz /rr
hadoop fs -rm -r -f
....
897



被折叠的 条评论
为什么被折叠?



