hadoop源码剖析--hdfs安全模式
一、什么是安全模式
hadoop安全模式是name node的一种状态,处于该状态时有种量特性:
1.namenode不接受任何对hfds文件系统的改变操作(即此时整个文件系统处于只读状态);
2.不执行block的replica和delete动作。
二、安全模式的原理
安全模式实在name node启动时默认进入的,当然也可以手动开启或关闭安全模式。
在name node启动后自动进入安全模式,这时data nodes向name node汇报各自节点的block信息。要想自动离开安全模式需要满足三个条件:
(1)threshold of blocks blocks检查率阈值
(2)minimal replication condition 每一个块必须满足最少replicas
(3)extends time 延迟时间
具体逻辑为:name node收集到满足threshold of blocks值的block汇报信息,而这些block的备份数都必须满足minimal replication condition值,当这两个条件都满足后,name node会在extends time时间之后退出安全模式(在extends time这段时间里,name node让没汇报完的数据节点继续检查block信息)对丢失block进行replica和接收客户端请求操作。
以上三个对应的配置参数为:
dfs.safemode.threshold.pct
dfs.safemode.extension
dfs.replication.min
三、特殊设置
当dfs.safemode.threshold.pct=0时,name node启动不会进去安全模式
当dfs.safemode.threshold.pct=1时,所有的块必须有至少dfs.replication.min个replication才能自动退出安全模式
当dfs.safemode.threshold.pct>1时,name node永远不会自动退出安全模式
四、手动设置开启、退出安全模式
见org.apache.hadoop.hdfs.protocol.ClientProtocol接口的setSafeMode方法。
hadoop源码剖析--hdfs安全模式的更多相关文章
- Hadoop源码之HDFS(1)--------通信方式
说起hadoop这个东西,只能说真是个伟大的发明,而本人对cutting大神也是无比的崇拜,记得刚接触hadoop的时候,还觉得这个东西挺多余的,但是现在想想,这个想法略傻逼...... 2006-2 ...
- hadoop源码剖析--$HADOOP_HOME/bin/hadoop脚本文件分析
1. $HADOOP_HOME/bin/ hadoop #!/usr/bin/env bash# Licensed to the Apache Software Foundation (ASF) un ...
- hadoop源码剖析--RawLocalFileSystem
RawLocalFileSystem是hadoop中实现的本地文件系统,在该类中与文件元数据和目录相关的操作,都是通过适配方式适配到java.io.File的对应API来完成的,适配过程简单,代码清晰 ...
- (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)
本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...
- Hadoop源码学习笔记之NameNode启动场景流程二:http server启动源码剖析
NameNodeHttpServer启动源码剖析,这一部分主要按以下步骤进行: 一.源码调用分析 二.伪代码调用流程梳理 三.http server服务流程图解 第一步,源码调用分析 前一篇文章已经锁 ...
- Hadoop源码学习笔记之NameNode启动场景流程一:源码环境搭建和项目模块及NameNode结构简单介绍
最近在跟着一个大佬学习Hadoop底层源码及架构等知识点,觉得有必要记录下来这个学习过程.想到了这个废弃已久的blog账号,决定重新开始更新. 主要分以下几步来进行源码学习: 一.搭建源码阅读环境二. ...
- Apache Spark源码剖析
Apache Spark源码剖析(全面系统介绍Spark源码,提供分析源码的实用技巧和合理的阅读顺序,充分了解Spark的设计思想和运行机理) 许鹏 著 ISBN 978-7-121-25420- ...
- Hadoop源码编译过程
一. 为什么要编译Hadoop源码 Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通 ...
- 如何导入hadoop源码到eclipse
需要进一步学习hadoop.需要看看内部源码实现,因此需要将hadoop源码导入都eclipse中. 简单总结一下,具体步骤如下: 首先确保已经安装了git.maven3.protobuf2.5.如果 ...
随机推荐
- 编译-O 选项对性能提升作用
GCC -O 选项 这个选项控制所有的优化等级.使用优化选项会使编译过程耗费更多的时间,并且占用更多的内存,尤其是在提高优化等级的时候. -O设置一共有五种:-O0.-O1.-O2.-O3和-Os. ...
- 在SAE安装原版WORDPRESS(图文讲解)
wordpress下载:https://cn.wordpress.org/ 在Sina App Engine上搭建WordPress博客图文教程: 一.登录你的SAE账号以后.进入"我的应用 ...
- sed: -e expression #1, unknown option to `s'解决办法
报错如下: sed: -e expression #1, char 13: unknown option to `s' 需要替换的行为: monitor.url=http://192.168.25.1 ...
- Dubbo(一)Dubbo资料
这个资料绝对权威了:http://dubbo.io/user-guide/
- eclipse maven 刷新报错
问题描述: An internal error occurred during: "Loading descriptor for cmbc_wms.".java.lang.Null ...
- DB2 时间操作
1. SQL语句得到当前的日期,时间和时间戳 SELECT current date FROM sysibm.sysdummy1; SELECT current time FROM s ...
- python 基础 4.4 生成式 生成器 迭代器
一.生成式和生成器 列表生成式是python受欢迎的语法之一,通过一句简洁的语法就可以对一组元素进行过滤,还可以对得到的元素进行转换处理. #/usr/bin/python #coding=u ...
- ms人物上线
在看MS人物上线 else if(gs2ms_add_player == pkt.cmd) { PlayerChannel* pPC = new PlayerChannel(this); //加到地图 ...
- 再看GS接包过程
再看GS接包过程 bool GameServer::ProcessLoop(packet& rPkt) { if(false == m_spDataLayer->Recv(rPkt)) ...
- 五个知识体系之-SQL学习-第三天
1. sql约束作用 主键约束作用:保证插入数据的有效性.比如性别列,只能是“男”“女”,输入“abc”就是无效的,所以你可以添加约束alter table 表名add constraint chk_ ...