HDFS CheckPoint && SavePoint
HDFS CheckPoint && SavePoint
标签(空格分隔): Hadoop
HDFS CheckPoint
HDFS 将文件系统的元数据信息存放在 fsimage 和一系列的 edits 文件中。
在启动 HDFS 集群时,系统会先加载 fsimage,然后逐个执行所有Edits文件中的每一条操作,来获取完整的文件系统元数据。
文件
HDFS 的存储元数据是由 fsimage 和 edits 文件组成。fsimage 存放上次 checkpoint 生成的文件系统元数据(并不是Active Namenode 内存中最新的元数据状态),edits log 存放文件系统操作日志。checkpoint的过程,就是合并 fsimage 和 edits 文件,然后生成最新的 fsimage 的过程。
fsimage文件: fsimage 里保存的是 HDFS 文件系统的元数据信息。每次 checkpoint 的时候生成一个新的 fsimage 文件,fsimage 文件同步保存在 active namenode 上和 standby namenode 上。是在 standby namenode 上生成并上传到 active namenode 上的。
edits文件: active namenode 会及时把 HDFS 的修改信息(创建,修改,删除等)写入到本地目录,和 journalnode 上的 edits 文件,每一个操作以一条数据的形式存放。edits文件默认每2分钟产生一个。正在写入的Edits文件以 edits_inprogress_* 格式存在。
-rw-rw-r-- 1 hdfs hdfs 1096975 Nov 25 22:20 edits_0000000000146624442-0000000000146631836
-rw-rw-r-- 1 hdfs hdfs 158141 Nov 25 22:22 edits_0000000000146631837-0000000000146632810
-rw-rw-r-- 1 hdfs hdfs 124334 Nov 25 22:24 edits_0000000000146632811-0000000000146633587
-rw-rw-r-- 1 hdfs hdfs 152122 Nov 25 22:26 edits_0000000000146633588-0000000000146634558
-rw-rw-r-- 1 hdfs hdfs 135233 Nov 25 22:28 edits_0000000000146634559-0000000000146635440
-rw-rw-r-- 1 hdfs hdfs 110887 Nov 25 22:30 edits_0000000000146635441-0000000000146636138
-rw-rw-r-- 1 hdfs hdfs 103041 Nov 25 22:32 edits_0000000000146636139-0000000000146636786
-rw-rw-r-- 1 hdfs hdfs 110947 Nov 25 22:34 edits_0000000000146636787-0000000000146637484
-rw-rw-r-- 1 hdfs hdfs 105728 Nov 25 22:36 edits_0000000000146637485-0000000000146638157
-rw-rw-r-- 1 hdfs hdfs 139609 Nov 25 22:38 edits_0000000000146638158-0000000000146639052
-rw-rw-r-- 1 hdfs hdfs 128850 Nov 25 22:40 edits_0000000000146639053-0000000000146639920
-rw-rw-r-- 1 hdfs hdfs 106578 Nov 25 22:42 edits_0000000000146639921-0000000000146640655
-rw-rw-r-- 1 hdfs hdfs 109422 Nov 25 22:44 edits_0000000000146640656-0000000000146641383
-rw-rw-r-- 1 hdfs hdfs 128798 Nov 25 22:46 edits_0000000000146641384-0000000000146642199
-rw-rw-r-- 1 hdfs hdfs 116107 Nov 25 22:48 edits_0000000000146642200-0000000000146642928
-rw-rw-r-- 1 hdfs hdfs 96472 Nov 25 22:50 edits_0000000000146642929-0000000000146643537
-rw-rw-r-- 1 hdfs hdfs 108026 Nov 25 22:52 edits_0000000000146643538-0000000000146644212
-rw-rw-r-- 1 hdfs hdfs 97870 Nov 25 22:54 edits_0000000000146644213-0000000000146644835
-rw-rw-r-- 1 hdfs hdfs 122876 Nov 25 22:56 edits_0000000000146644836-0000000000146645629
-rw-rw-r-- 1 hdfs hdfs 151812 Nov 25 22:58 edits_0000000000146645630-0000000000146646551
-rw-rw-r-- 1 hdfs hdfs 104895 Nov 25 23:00 edits_0000000000146646552-0000000000146647205
-rw-rw-r-- 1 hdfs hdfs 146342 Nov 25 23:02 edits_0000000000146647206-0000000000146648121
-rw-rw-r-- 1 hdfs hdfs 142704 Nov 25 23:04 edits_0000000000146648122-0000000000146649036
-rw-rw-r-- 1 hdfs hdfs 1048576 Nov 25 23:04 edits_inprogress_0000000000146649037
-rw-rw-r-- 1 hdfs hdfs 13055376 Nov 25 22:01 fsimage_0000000000146603894
-rw-rw-r-- 1 hdfs hdfs 62 Nov 25 22:01 fsimage_0000000000146603894.md5
-rw-rw-r-- 1 hdfs hdfs 13043781 Nov 25 23:01 fsimage_0000000000146647205
-rw-rw-r-- 1 hdfs hdfs 62 Nov 25 23:01 fsimage_0000000000146647205.md5
-rw-rw-r-- 1 hdfs hdfs 10 Nov 25 23:04 seen_txid
-rw-rw-r-- 1 hdfs hdfs 206 Jul 27 2018 VERSION
checkpoint 过程
开启HA的HDFS,有 active 和 standby namenode 两个 namenode 节点。他们的内存中保存了一样的集群元数据信息。
因为 standby namenode 已经将集群状态存储在内存中了,所以创建检查点checkpoint的过程只需要从内存中生成新的fsimage。
这里standby namenode称为SbNN,activenamenode称为ANN
SbNN查看是否满足创建检查点的条件
检查条件
一,距离上次checkpoint的时间间隔 >= ${dfs.namenode.checkpoint.period}
二,edits中的事务条数达到 ${dfs.namenode.checkpoint.txns} 限制
Checkpoint步骤
SbNN将内存中当前的状态保存成一个新的文件,命名为fsimage.ckpt_txid。其中txid是最后一个edit中的最后一条事务的ID(transaction ID,不包括 inprogress)。然后为该fsimage文件创建一个MD5文件,并将fsimage文件重命名为fsimage_txid。
SbNN向ANN发送一条HTTP GET请求。请求中包含了SbNN的域名,端口以及新fsimage的txid。
ANN收到请求后,用获取到的信息反过来向SbNN再发送一条HTTP GET请求,获取新的fsimage文件。这个新的fsimage文件传输到ANN上后,也是先命名为fsimage.ckpt_txid,并为它创建一个MD5文件。然后再改名为fsimage_txid。fsimage过程完成。
CheckPoint 相关配置
checkpoint 相关配置
dfs.namenode.checkpoint.period
两次检查点创建之间的固定时间间隔,默认3600,即1小时
dfs.namenode.checkpoint.txns
未检查的事务数量。若没检查事务数达到这个值,也触发一次checkpoint,1,000,000
dfs.namenode.checkpoint.check.period
standby namenode检查是否满足建立checkpoint的条件的检查周期。默认60,即每1min检查一次
dfs.namenode.num.checkpoints.retained
在namenode上保存的fsimage的数目,超出的会被删除。默认保存2个
dfs.namenode.num.checkpoints.retained
最多能保存的edits文件个数,默认为1,000,000. 官方解释是为防止standby namenode宕机导致edits文件堆积的情况,设置的限制
dfs.ha.tail-edits.period
standby namenode每隔多长时间去检测新的Edits文件。只检测完成了的Edits, 不检测inprogress的文件。(不是很明白)
Fsimage回滚条件
一,fsimage会在每次checkpoint时生成一个新的fsimage
二,NN重启的时候也会生成一个新的fsimage
Edits log回滚条件
NameNode(active)周期性的检查当前的事务数是否超过了edits回滚阈值。
检查间隔周期是由dfs.namenode.edit.log.autoroll.check.interval.ms控制,默认是300000ms。也就是5min
回滚的阈值是
dfs.namenode.edit.log.autoroll.multiplier.threshold * dfs.namenode.checkpoint.txns
dfs.namenode.edit.log.autoroll.multiplier.threshold默认是2.0f
dfs.namenode.checkpoint.txns默认是 1000000
也就是5min 检查一次,一个 editlog 文件中大约有 超过200w 的事务数的时候,进行一次editlog 回滚。
在HA模式下,standby NN会周期的让active NN对edits进行回滚
间隔周期由dfs.ha.log-roll.period控制,默认是120s,也就是2min 生成一个新的 Edit_Log。
standby NN之所以周期的让active NN滚动edits log是因为standby NN不会读取inprogress的edits,只是周期(dfs.ha.tail-edits.period,默认是60s)的去检测已经完成的edits文件,并将该edits文件通过JournalNode读取到内存更新fsimage在内存中的状态。
简而言之:standby 内存中拉取 jn 的 editlog,然后合并到内存中变成最新的 镜像,镜像dump 出来名字变成 最新消费的 id的,然后再传到active nn上去。
HDFS CheckPoint && SavePoint的更多相关文章
- Update(Stage4):spark_rdd算子:第2节 RDD_action算子_分区_缓存:缓存、Checkpoint
4. 缓存 概要 缓存的意义 缓存相关的 API 缓存级别以及最佳实践 4.1. 缓存的意义 使用缓存的原因 - 多次使用 RDD 需求: 在日志文件中找到访问次数最少的 IP 和访问次数最多的 IP ...
- 3 differences between Savepoints and Checkpoints in Apache Flink
https://mp.weixin.qq.com/s/nQOxsZUZSiPi7Sx40mgwsA 20181104 3 differences between Savepoints and Chec ...
- 关于 Flink 状态与容错机制
Flink 作为新一代基于事件流的.真正意义上的流批一体的大数据处理引擎,正在逐渐得到广大开发者们的青睐.就从我自身的视角看,最近也是在数据团队把一些原本由 Flume.SparkStreaming. ...
- Giraph之SSSP(shortest path)单机伪分布运行成功
所遇问题:Exception 1: Exception in thread "main" java.lang.IllegalArgumentException: "che ...
- Flink - FlinkKafkaConsumer010
Properties properties = new Properties(); properties.setProperty("bootstrap.servers", &quo ...
- ubantu 16.4 Hadoop 完全分布式搭建
一个虚拟机 1.以 NAT网卡模式 装载虚拟机 2.最好将几个用到的虚拟机修改主机名,静态IP /etc/network/interface,这里 是 s101 s102 s103 三 ...
- CentOS7.4 + Hadoop2.7.5安装配置管理(伪分布式)
1. 规划 1.1. 机器列表 NameNode SecondaryNameNode DataNodes 192.168.1.80 192.168.1.80 192.168.1.80 1.2. ...
- CentOS7.4 + Hadoop2.9安装配置管理(分布式)
1. 规划 1.1. 机器列表 NameNode SecondaryNameNode DataNodes 192.168.1.121 192.168.1.122 192.168.1.101 192 ...
- spark-初阶①(介绍+RDD)
spark-初阶①(介绍+RDD) Spark是什么? Apache Spark 是一个快速的, 多用途的集群计算系统, 相对于 Hadoop MapReduce 将中间结果保存在磁盘中, Spark ...
随机推荐
- 8-MySQL DBA笔记-测试基础
第三部分 测试篇 测试需要掌握的知识面很广泛,本篇的关注点是数据库的性能测试和压力测试,对于其他领域的测试,由于涉猎不多,笔者就不做叙述了.DBA的工作职责之一就是评估软硬件,这往往是一项很耗时的工作 ...
- 解决低版本IE关于html5新特性的兼容性问题html5shiv.js和Respond.js,以及excanvas.js解决低版本IE不支持canvas的问题
插件:html5shiv.js 让IE9以下版本支持html5新标签,git地址https://github.com/aFarkas/html5shiv 用于解决IE9以下版本浏览器对HTML5新增标 ...
- 错误:The following error occurred attempting to run the DNX design time process (dnx-clr-win-x86.1.0.0-rc1-final)
其实这个错误很容易解决.设置一个startup工程即可.
- CPU vector operations
CPU vector operations 原文:https://blog.csdn.net/wangeen/article/details/8602028 vector operations 是现代 ...
- linux Linux入门
Linux入门 Linux学习什么? 常用命令(背会) 软件安装(熟练) 服务端的架构(开开眼界) Linux如何学习? 不要问那么多为什么,后面你就懒得问了 先尝试理解一下,不行就背下来 一个知识点 ...
- Linux学习(二)-Xshell 5和Xftp 5的安装和使用
(一)软件介绍: (1)Xshell: Xshell通过互联网可以连接到远程的服务器,然后通过模拟终端来实现对服务器的各种操作,而且这款软件可以很好的解决中文乱码问题,非常的方便快捷. (2)Xftp ...
- 使用百度地图API自动获取地址和经纬度
先上效果图,这是直接点击获取经纬度和地址的.没有做搜索的功能. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...
- MySQL间隙锁问题
间隙锁(Gap Lock):锁加在不存在的空闲空间,可以是两个索引记录之间,也可能是第一个索引记录之前或最后一个索引之后的空间. 最近用户反馈说系统老是出现insert时,等待超时了,最后发现是ins ...
- Packet for query is too large (4,544,730 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable.
修改 my.ini 加上 max_allowed_packet =6710886467108864=64M默认大小4194304 也就是4M修改完成之后要重启mysql服务,如果通过命令行修改就不用 ...
- 玩转springcloud(二):注册中心-Eureka
一.简介 注册中心 注册中心是服务发现的核心.它保存了各个可用服务实例的网络地址(IP Address和Port).服务注册中心必须要有高可用性和实时更新功能. Netflix Eureka 就是一个 ...