一、什么是安全模式

  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安全模式的更多相关文章

  1. Hadoop源码之HDFS(1)--------通信方式

    说起hadoop这个东西,只能说真是个伟大的发明,而本人对cutting大神也是无比的崇拜,记得刚接触hadoop的时候,还觉得这个东西挺多余的,但是现在想想,这个想法略傻逼...... 2006-2 ...

  2. hadoop源码剖析--$HADOOP_HOME/bin/hadoop脚本文件分析

    1. $HADOOP_HOME/bin/ hadoop #!/usr/bin/env bash# Licensed to the Apache Software Foundation (ASF) un ...

  3. hadoop源码剖析--RawLocalFileSystem

    RawLocalFileSystem是hadoop中实现的本地文件系统,在该类中与文件元数据和目录相关的操作,都是通过适配方式适配到java.io.File的对应API来完成的,适配过程简单,代码清晰 ...

  4. (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)

    本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...

  5. Hadoop源码学习笔记之NameNode启动场景流程二:http server启动源码剖析

    NameNodeHttpServer启动源码剖析,这一部分主要按以下步骤进行: 一.源码调用分析 二.伪代码调用流程梳理 三.http server服务流程图解 第一步,源码调用分析 前一篇文章已经锁 ...

  6. Hadoop源码学习笔记之NameNode启动场景流程一:源码环境搭建和项目模块及NameNode结构简单介绍

    最近在跟着一个大佬学习Hadoop底层源码及架构等知识点,觉得有必要记录下来这个学习过程.想到了这个废弃已久的blog账号,决定重新开始更新. 主要分以下几步来进行源码学习: 一.搭建源码阅读环境二. ...

  7. Apache Spark源码剖析

    Apache Spark源码剖析(全面系统介绍Spark源码,提供分析源码的实用技巧和合理的阅读顺序,充分了解Spark的设计思想和运行机理) 许鹏 著   ISBN 978-7-121-25420- ...

  8. Hadoop源码编译过程

    一.           为什么要编译Hadoop源码 Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通 ...

  9. 如何导入hadoop源码到eclipse

    需要进一步学习hadoop.需要看看内部源码实现,因此需要将hadoop源码导入都eclipse中. 简单总结一下,具体步骤如下: 首先确保已经安装了git.maven3.protobuf2.5.如果 ...

随机推荐

  1. 在MyEclipse上部署Tomcatserver

    我在前面的博客中介绍了在Windows下安装Tomcatserver.这篇博客将介绍在MyEclipse上部署Tomcatserver 第一步:启动MyEclipse 第二步:选项Window-> ...

  2. 【解决方法】INF file txtsetup.sif is corrupt or missing /// 使用WinSetupFromUSB来U盘安装windows2003(不使用win PE系统)

    [解决方法]INF file txtsetup.sif is corrupt or missing http://blog.csdn.net/zhyl8157121/article/details/8 ...

  3. DataTable列 基础处理

    DataTable dt=new DataTable(); 新增列: dt.Columns.Add("ColumnsName"); 删除列: dt.Columns.Remove(& ...

  4. OOA/OOD/OOP的区别

    http://javajiao.iteye.com/blog/152956这是一个故事: "工程師修了一條隧道,隧道的一端就是美麗的風景,很多人會開車通過隧道.雖然隧道內已經有燈了,但是設計 ...

  5. 字符串(string)操作的相关方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. HPE IT 的DevOps 实践分享

    原文地址:http://www.codes51.com/article/detail_3124576.html 本篇文章来自于HPE和msup共同举办的技术开放日HPE测试技术总监肖俊的分享,由壹佰案 ...

  7. linq查询去重

    通过自定义扩展方法DistinctBy实现去重 public static IEnumerable<TSource> DistinctBy<TSource, TKey> (th ...

  8. 从0开始学习 GitHub 系列汇总笔记

    本文学习自Stromzhang, 原文地址请移步:从0开始学习 GitHub 系列汇总 我的笔记: 0x00  从0开始学习GitHub 系列之[初识GitHub] GitHub 影响力 a.全球顶级 ...

  9. Web网页开发常见经典问题

    1.网络请求参数共享 转发dispatcher和重定向redirect 对于参数共享的区别 Redirect和Dispatcher 区别

  10. LRU java实现

    实现LRU缓存,用到了一个链表和 HashMap, HashMap保证了get/set的时间复杂度是O(1), 链表用来记录 最近最少使用的元素,以便用来淘汰. package lru; /** * ...