Hadoop安全模式详解及配置
来源:互联网 发布:淘宝福袋 编辑:程序博客网 时间:2024/05/13 06:03
在《Hadoop 1.x中fsimage和edits合并实现》文章中提到,Hadoop的NameNode在重启的时候,将会进入到安全模式。而在安全模式,HDFS只支持访问元数据的操作才会返回成功,其他的操作诸如创建、删除文件等操作都会导致失败。
NameNode在重启的时候,DataNode需要向NameNode发送块的信息,NameNode只有获取到整个文件系统中有99.9%(可以配置的)的块满足最小副本才会自动退出安全模式。最小副本和那个99.9%阀值可以通过下面配置来设定:
<property>
<name>dfs.namenode.replication.min</name>
<value>
1
</value>
<description>Minimal block replication.
</description>
</property>
<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>
Hadoop中每个块的默认最小副本为1;dfs.namenode.safemode.threshold-pct参数的意思是指定达到最小副本数的数据块的百分比。这个值小等于0表示无须等待就可以退出安全模式;而如果这个值大于1表示永远处于安全模式。除了上面两个参数对安全模式有影响之外,下面几个参数也会对安全模式有影响
<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>
<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>
dfs.namenode.safemode.min.datanodes的意思指namenode退出安全模式之前有效的(活着的)datanode的数量。这个值小等于0表示在退出安全模式之前无须考虑有效的datanode节点个数,值大于集群中datanode节点总数则表示永远处于安全模式;dfs.namenode.safemode.extension表示在满足dfs.namenode.safemode.threshold-pct值之后,NameNode还需要处于安全模式的时间(单位是秒)。来看看代码是怎么弄的:
/**
* Creates SafeModeInfo when the name node enters
* automatic safe mode at startup.
*
* @param conf configuration
*/
private
SafeModeInfo(Configuration conf) {
this
.threshold = conf.getFloat(DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_KEY,
DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_DEFAULT);
if
(threshold >
1.0
) {
LOG.warn("The threshold value should't be greater
than
1
, threshold: " + threshold);
}
this
.datanodeThreshold = conf.getInt(
DFS_NAMENODE_SAFEMODE_MIN_DATANODES_KEY,
DFS_NAMENODE_SAFEMODE_MIN_DATANODES_DEFAULT);
this
.extension = conf.getInt(DFS_NAMENODE_SAFEMODE_EXTENSION_KEY,
0
);
this
.safeReplication =conf.getInt(DFS_NAMENODE_REPLICATION_MIN_KEY,
DFS_NAMENODE_REPLICATION_MIN_DEFAULT);
LOG.info(DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_KEY +
" = "
+ threshold);
LOG.info(DFS_NAMENODE_SAFEMODE_MIN_DATANODES_KEY+
"="
+datanodeThreshold);
LOG.info(DFS_NAMENODE_SAFEMODE_EXTENSION_KEY +
" = "
+ extension);
this
.replQueueThreshold =
conf.getFloat(DFS_NAMENODE_REPL_QUEUE_THRESHOLD_PCT_KEY,
(
float
) threshold);
this
.blockTotal =
0
;
this
.blockSafe =
0
;
}
上述代码从配置文件中获取dfs.namenode.safemode.min.datanodes、dfs.namenode.safemode.threshold-pct、dfs.namenode.replication.min和dfs.namenode.safemode.extension。
我们需要知道,当Resource is low时,只有Active NameNode才会进入到安全模式(HDFS-2914)。
当然,如果我们也可以手动进入安全模式
hadoop fs –safemode enter
手动进入安全模式对于集群维护或者升级的时候非常有用,因为这时候HDFS上的数据是只读的。手动退出安全模式可以用下面命令:
hadoop fs –safemode leave
如果你想获取到集群是否处于安全模式,可以用下面的命令获取:
hadoop fs –safemode get
当然,你也可以在NameNode的50070端口的WEB页面上看到集群是否处于安全模式。
- Hadoop安全模式详解及配置
- Hadoop安全模式详解及配置
- Hadoop安全模式详解及配置
- Hadoop安全模式详解及配置
- Hadoop(2.7.3)安全模式-hadoop kerberos官方配置详解
- hadoop的三种运行模式区别及配置详解
- hadoop之 安全模式及SafeModeException
- Hadoop完全分布模式配置详解
- hadoop介绍及伪分布模式配置
- hadoop safemode----hadoop安全模式
- hadoop安全模式
- hadoop的安全模式
- hadoop的安全模式
- hadoop安全模式
- hadoop的安全模式
- hadoop安全模式
- hadoop安全模式理解
- Hadoop的安全模式
- Java并发编程 05 线程通信
- 欢迎使用CSDN-markdown编辑器
- leetcode Beautiful Arrangement II 优美排列
- Codeforces Round #354 (Div. 2) B. Pyramid of Glasses(模拟)
- c语言知识点---qsort快速排序函数的使用
- Hadoop安全模式详解及配置
- 一起学Netty(十四)之 Netty生产级的心跳和重连机制
- input文本框前几个字符为默认,无法修改
- Java 基础【01】 This 用法
- 解析器
- Git图标不显示
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。
- ajax返回错误的调试方法
- 51nod 1115 最大M子段和 V3 (链表)