Hadoop安全模式和机架感知
安全模式
集群启动时的一个状态
- 安全模式是HDFS的一种工作状态,处于安全模式的状态下,只向客户端提供文件的只读视图,不接受对命名空间的修改;同时NameNode节点也不会进行数据块的复制或者删除
NameNode启动时
-
首先将镜像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。
-
一旦在内存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件和一个空的编辑日志。
-
NameNode开始监听RPC和Http请求。
-
此时NameNode处于安全模式,只接受客户端的读请求。
系统中的数据块的位置并不是由NameNode维护的,而是以块列表的形式存储在DataNode中。
安全模式下
- 安全模式下,各个DataNode会向NameNode发送自身的数据块列表当NameNode有足够的数据块信息后,便在30秒后退出安全模式
- NameNode发现数据节点过少会启动数据块复制过程
如果NN收集的Block信息没有达到最少副本数,就会将缺失的副本,从有的DN上拷贝到其他DN
-
dfs.replication.min=2
-
但是默认最低副本数为1
-
在拷贝的过程中系统还是处于安全模式
安全模式相关命令
hdfs dfsadmin -safemode leave 强制NameNode退出安全模式
hdfs dfsadmin -safemode enter 进入安全模式
hdfs dfsadmin -safemode get 查看安全模式状态
hdfs dfsadmin -safemode wait 等待一直到安全模式结束
HDFS的权限
HDFS对权限的控制
-
只能防止好人做错事
-
不能防止坏人做坏事
你告诉他你是谁,他就认为你是谁!(天真无邪的Hadoop)
机架感知策略
节点距离
distance(/D1/R1/H1,/D1/R1/H1)=0 相同的datanode
distance(/D1/R1/H1,/D1/R1/H3)=2 同一rack下的不同datanode
distance(/D1/R1/H1,/D1/R2/H4)=4 同一IDC下的不同datanode
distance(/D1/R1/H1,/D2/R3/H7)=6 不同IDC下的datanode
机架感知
机架感知(rack awareness)是为了保证副本在集群的安全性
我们需要将副本放在不同的DN节点上,节点也需要一定的考量
- 可靠性、可用性、带宽消耗
第一个节点
-
集群内部(优先考虑和客户端相同节点作为第一个节点)
-
集群外部(选择资源丰富且不繁忙的节点为第一个节点)
第二个节点
- 选择和第一个节点不同机架的其他节点
第三个节点
- 与第二个节点相同机架的其他节点
第N个节点
- 与前面节点不重复的其他节点