| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 大数据 -> HDFS的体系结构 -> 正文阅读 |
|
|
[大数据]HDFS的体系结构 |
可以在ui上查看启动过程:
- 如果每次对文件或数据进行修改/删除/添加等操作,都直接持续化到fsimage中,也即每次对数据的读写请求都直接对数据进行操作,会造成大量的磁盘IO操作,耗时较多。
在ui中可以看到集群启动时有一个步骤是checkpoint:
?checkpoint就是fsimage和edits文件的合并策略,这个策略可以在hdfs-default.xml中配置。hdfs-default.xml文件在$HADOOP_HOME/share/hadoop/hdfs/hadoop-hdfs-2.7.5.jar目录下。 checkpoint的策略配置:
也即checkpoint遵从两种策略,一种是距离上次合并时间已经达到了$dfs.namenode.checkpoint.period$,默认是3600s,也就是1小时,这时会去执行一次合并;另一种策略是距离上次合并已经有了$dfs.namenode.checkpoint.txns$(默认是1000000次)这么多次的事务,这时就会执行一次合并,两个条件满足其一即会合并。$dfs.namenode.checkpoint.check.period$这个参数指定的是多久去检查一下距离上次合并之后的事务次数是否达到$dfs.namenode.checkpoint.txns$,也即60s会去检查一下事务次数是否达到1000000次,所以这个60s也就会造成合并的延迟,因为60s检查一次就会导致并不是事务一旦达到了1000000次就会立马合并。 合并过程: 真正的合并操作其实是由SecondaryNameNode来实现的。 1.NameNode中的name目录下有edits、edits_inprogress、fsimage文件,edits_inprogress表示正在使用的edits。当满足checkpoint的条件时,SecondaryNameNode会先将最新的fsimage文件(fsimage_0000000000000000085)通过http get方式从NameNode上拿下来,然后将正在使用中的edits(edits_inprogress_0000000000000000086)重命名为edits_xxxxxxxx-0000000000000000086,SecondaryNameNode再将edits_xxxxxxxx-0000000000000000086通过http拿过来,NameNode再重新创建一个edits_inprogress_******************来作为此次合并后的新的正在使用的edits文件,并更新seen_txid文件。
可以看到seen_txid中记录的就是edits_inprogress的id
?2.SecondaryNameNode收到这两个文件后,会先将fsimage文件加载到自己的内存中,然后将edits文件也加载到内存中,并将edits中的事务操作执行一下,形成一个新的fsimage,该fsimage文件会以.ckpt为后缀。然后将该fsimage_xxxx.ckpt文件通过http协议发送给NameNode。 可以看到SecondaryNameNode节点上是没有edits_inprogress-xxxxx文件的,因为正在进行中的事务的操作都是记录在NameNode上的,而这里的edits_xxxxx和fsimage_xxxx都是在合并时NameNode发送过来的。
3.NameNode收到返回来的fsimage_xxxx.ckpt文件,对其进行重命名,将.ckpt后缀去掉,得到最新的fsimage文件工下次合并使用。 |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/14 4:51:37- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |