- 浏览: 275517 次
文章分类
最新评论
-
feargod:
...
ActivityGroup的子activity响应back事件的顺序问题 -
hoarhoar:
谢谢你,终于解决了,我真是受够了,总是45秒钟,真是疯了。
youku 的广告必须要屏蔽 -
lilai:
...
youku 的广告必须要屏蔽 -
aijuans2:
...
youku 的广告必须要屏蔽 -
weiwo1978:
说的非常好,mark
SELECT语句执行的顺序
前面5个任务线程一般会一直运行,而SafeModeMonitor当namenode满足一定条件就不执行检测了,在分析这个后台任务之前我们先来看下什么是safeMode,摘录《Hadoop权威指南》10.1.2安全模式的定义如下:
名称节点启动时,它所做的第一件事情是加载其镜像文件(fsimage)到内存,并应用编辑日志(edits)中的编辑
记录。一旦重新创建与文件系统元数据 一致的内存映像,它就会创建一个新的fsimage文件(自己创建一个检查点而不是
求助于第二名称节点,这样的效率更高)和一个空的编辑日志。只有在这个时候,名称节点才开始监听RPC和http请求。
如果名称节点以安全模式运行,则意味着它只向客户端提供文件系统的只读视图。
注意:
严格说来,在安全模式下,只能保证访问文件系统元数据的操作(如产生一个目录列表)能工作。只有当块在集
群的当前数据节点时,才可以进行读取文件,而且对文件进行修改(写入,删除或重命名)都是不允许的。
构想一下,系统中的块的存储位置并不是由名称节点来保存的----此信息以块列表的形式储存在数据节点中。执行
系统常规操作期间,名称节点在内存中储存块地址的分布。在安全模式下,需要给数据节点一些时间来登入名称节点及其
块列表,使名称节点能有足够多的块地址来高效运行文件系统。如果名称节点没有等到足够多的数据节点,则会启动程序
,开始复制块到新的数据节点,在大多数情况下,都不需要如此(因为它只需要等更多数据节点登入),并且这将造成集
群资源非常的紧张。事实上,在安全模式下,名称节点并不为数据节点发出任何块复制或者删除的指令。
到达最小副本条件后,再过30秒,系统便会退出安全模式。最小副本条件是指在整个文件系统中99.9%的块达到
最低复制水平(默认是1,由dfs.replication.min设定)。
启动一个新格式化的HDFS集群时,因为系统中没有数据块,所以名称节点不会进入安全模式。
针对安全模式还有一些基本配置属性:
属性名称 | 类型 | 默认值 | 描述 |
dfs.replication.min | int | 1 | 写操作成功所需要的最小副本数 |
dfs.safemode.threshold.pct | float | 0.999 | 名称节点退出安全模式之前系统中满足dfs.replication.min定义的最小副本数级别的块的百分比。将其设置成0或者更少将强制名称节点不以安全模式启动,将这个值设置成大于1,意味着名称节点永远不会退出安全模式 |
dfs.safemode.extension | int | 30000 | 满足最小副本条件dfs.safamode.threhole.pct后持续到安全模式的时间,单位是毫秒。对于小型集群(十来个节点)此属性的值可以设置为0 |
这个是官方的描述,那么我们接下来开始看代码,在进入safeModeMonitor之前先看看什么情况下会进入到safeModeMonitor中,在NameNode初始化时会新建一个SafeModeInfo对象,然后将读取到的blockMap的size传递给这个对象,在这个对象中依据threshold,blockMapSize,reached等3个属性的值来判断是否进入到safeMode,其中reached比较特殊,它的描述如下:
- /** Time when threshold was reached.
- *
- * <br>-1 safe mode is off
- * <br> 0 safe mode is on, but threshold is not reached yet
- */
- private long reached = - 1 ;
如果fsimage里没有块信息,例如是namenode第一次format时,那么safeMode默认就是关的,这样你也不会进入到safeModeMonitor,但是我们还是可以看下在safeModeMonitor里的逻辑,首先看下检测的间隔:
在monitor里检测的依据是靠canLeave定夺的,我们看下canLeave的java doc
- /**
- * Safe mode can be turned off iff
- * the threshold is reached and
- * the extension time have passed.
- * @return true if can leave or false otherwise.
- */
其实具体的实现里完全是依据处于safeblock的百分比来判断的,那么我们就要问了,什么时候这个百分比会涨,或者说这个safeblock会变,通过跟踪代码发现其实是在datanode向namenode注册时会增加safeblock的个数,同时也需要说明的是在namenode心跳datanode时如果发现损坏的节点或者说有损坏的block时,safeblock也会减少的。
下面再来看看当检测可以离开safemode时所做的操作:
第一个操作会在下一篇blog里单独分析。
这里简单说下第2个操作,它包括如下2个逻辑:
- 1 :验证文件块和文件的关系是否还存在,如果不存在对应关系则说明某个块是无效的了,然后加入到无效队列(这个
- 无效队列是干啥的,以后会分析)
- 2 :验证文件块是否到达复制因子,如果没有达到就加入到需要复制队列,如果超出了复制因子就将超出的块加入到无
- 效队列
更多信息请查看 java进阶网 http://www.javady.com
发表评论
-
hadoop FSNamesystem中的recentInvalidateSets
2012-04-20 20:28 969今天早就回来了,然后偷懒了2个小时,现在才开始分析代码, ... -
hadoop namenode后台jetty web
2012-04-20 20:28 1650现在开始分析namenode启动时开启的第2类线程, ... -
hadoop namenode format做了什么?
2012-04-18 20:58 1059一看到format就和磁盘格式化联想到一起,然后这个fo ... -
hadoop分布式配置(服务器系统为centos5,配置时使用的用户是root)
2012-04-14 21:19 1005目前我们使 ... -
hadoop系列A:多文件输出
2012-04-14 21:18 1341package org.myorg; import ... -
Hadoop 安装问题和解决方案
2012-04-10 13:21 1188前几天在Window和Linux主机安装了Hadoop, ... -
运行Hadoop遇到的问题
2012-04-10 13:19 1527运行Hadoop遇到的问题 1, 伪分布式模式 ... -
运行Hadoop遇到的问题
2012-04-10 13:19 0运行Hadoop遇到的问题 1, 伪分布式模式 ... -
hadoop使用过程中的一些小技巧
2012-04-09 10:16 1101hadoop使用过程中的一些小技巧 ------------- ... -
运行hadoop时的一些技巧
2012-04-09 10:14 729//用来给key分区的,需要实现Partitioner接口 ... -
hive相关操作文档收集
2012-04-08 10:51 0How to load data into Hive ... -
hive sql doc
2012-04-08 10:51 0记录2个常用的hive sql语法查询地 官方 ht ... -
hive Required table missing : "`DBS`" in Catalog "" Schema "
2012-04-08 10:51 0最近需要提取一些数据,故开始使用hive,本机搭建了一个hiv ... -
HDFS数据兼容拷贝
2012-04-08 10:50 0系统中使用了hadoop 19.2 20.2 2个版本,为啥有 ... -
hdfs 简单的api 读写文件
2012-04-08 10:50 0Java代码 import ... -
hbase之htable线程安全性
2012-04-22 15:22 1106在单线程环境下使用hbase的htable是没有问题,但是突然 ... -
hbase之scan的rowkey问题
2012-04-22 15:22 1689最近使用到hbase做存储,发现使用scan的时候,返回的ro ... -
datanode启动开启了那些任务线程
2012-04-22 15:22 1028今天开始分析datanode,首先看看datanode开启了哪 ... -
namenode这个类的主要功能
2012-04-22 15:22 1409今天来总看下namenode这个类的主要功能 首先看下这个类 ... -
hadoop监控
2012-04-22 15:21 1560通过从hadoop的 hadoop-metrics文件中就可以 ...
相关推荐
NameNode职责
[bigdata@namenode1 scripts]$ pwd /home/bigdata/software/hadoop/share/scripts [bigdata@namenode1 scripts]$ python configuration-utils.py -c 2 -m 8 -d 30 -k True Using cores=2 memory=8GB disks=30 hbase=...
Hadoop Namenode性能诊断及优化
hdfs的namenode的元数据管理机制,简要画出了元数据管理的流程分析
未知原因导致namenode 的fsimage等文件丢失,namenode重启失败的参考解决
NameNode及SecondaryNameNode分析
NULL 博文链接:https://snv.iteye.com/blog/1884565
王家林的“云计算分布式大数据Hadoop实战高手之路---从零开始”的第九讲Hadoop图文训练课程:剖析NameNode和Secondary NameNode的工作机制和流程. 此教程来自于王家林免费发布的3本Hadoop教程:云计算分布式大数据...
hadoop NameNode 源码解析
大家都知道HDFS的架构由NameNode,SecondaryNameNode和DataNodes组成,其源码类图如下图所示:正如上图所示,NameNode和DataNode继承了很多的protocol用于彼此间的通信,其实nameNode还实现了...实现了ClientProtocol...
今天小编就为大家分享一篇关于Hadoop之NameNode Federation图文详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
详细讲解了Hdfs中NameNode节点的配置,备份和恢复,以及secondNamenode的配置
Hadoop Namenode恢复
(1)第一次启动 NameNode 格式化后,创建 fsimage 和 edits 文件 (2)客户端对元数据进行增删改的请求 (3)NameNode 记录操作
■ NameNode 服务器线程数 ■ 用于来自客户端和DataNode 的RPC 调用的线程(心跳和元数据操作) ■ CM默认是30(非CM默认值为10) ■ 推荐:集群节点数x 20 的自然对数 ■ 设置太低的症状:DataNode 日志中的...
第5章 NameNode和SecondaryNameNode(面试开发重点) 5.1 NN和2NN工作机制 思考:NameNode中的元数据是存储在哪里的? 首先,我们做个假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应...
最新的hdfs namenode主备安装文档,详细,命令只需要copy执行即可
1. Hadoop 2.0 2. 部署在2个Ubuntu上 3. 2个namenode 2个datanode
错误:启动完后,namenode的主机上没有出现namenode进程。 原因:没有进行namenode初始化。只初始化一次,以后不要初始化了。 错误:启动完后,datanode的主机上没有出现datanode进程。或者出现了多个datanode进行...