HDFS核心功能与分享汇总
从HDFS0.x到HDFS3.x的跨度太大, 中间大大小小的功能已经出了不少了, 一般看新功能的原则是核心的+业务急需的, 但也有不少点是需要列一下, 方便日后补看的, 这里单独记录一下.
0x00. 查阅方式
1. 官方宝典
最完整全面的资料肯定是来自官方每个版本的变动记录和历史信息, 但是存在几个主要问题:
- 目前Hadoop的更新日志是放在一起的, 所以里面混杂了大量的
YARN
和MR
的日志 - 混杂了很多细枝末节的小更新, 有些PR缺乏直观的说明
- 有些功能可能提出来的时候是很早的版本, 完全GA(包括子任务全完成)可能都已经跨越大版本了. 从更新日志溯源麻烦
综上, 如果你不是长期跟踪社区, 而只是想看看HDFS1/2/3.X
增加了哪些核心特性, 直接看历史变动效率并不太高, 它更适合增量查阅/订阅, 或查漏补缺
2. 巨人的肩膀
虽然没发现什么很好的办法快速查阅, 但是由于社区和业界有不少前辈做了贡献, 提炼出了不少他们感兴趣的点, 或者做过分享, 所以目前采取的方式是:
- 以“书籍 + HDFS专栏 + 业界分享”作为主要参考
- 以”线上痛点 + 定位问题“作为辅助参考
因为一个功能的设想提出和实现可能跨度很大, 为了简洁起见, 下面的记录有几个原则:
- 分版本标准是“接近GA“为参考. 通俗说就是一个功能的核心开发, 和子任务80%以上完成, 达到线上可小规模使用, 则认为它属于当前HDFS版本
- 主线是指最核心的几个功能, 特点是对HDFS的整体结构, 性能或可用性有巨大影响, 子任务一般多达百个以上 (其他先都归为支线)
- 结合线上痛点和实际遇到的问题, 进行筛选, 暂不关注的模块先不记录.
补充: 未完成的功能一律归于最新大版本, 分类不当的会不断更新纠正.
0x01. HDFS1特性
HDFS1中不少功能在高版被重构或者弃用了, 但是代码并没有移除, 简单记录一下, 删除线 表示已被弃用, 暂不关注.
1. 主线
Secondary Namenode- RaidNode
2. 支线
- (未合并) Facebook-提供FastCopy特性 (HDFS-2139)
待补充
0x02. HDFS2特性
1. 主线
- HA
- Federation + ViewFS
- Snapshot
2. 支线
- (V2.4/2.8)FBR(全量块汇报)的限流机制 [HDFS-5153, HDFS-7923]
- 集中式缓存 (堆外)
- (V2.6) 异构存储
- (V2.6) HDFS支持inotify机制–事件监听 (HDFS-6634)
- (V2.7) HDFS-支持truncate(文件截断)机制 (HDFS-3107)
- (V2.9) DN添加Maintenance(临时停服)状态 (HDFS-7877)
- (V2.9) DN启动支持并行检查磁盘和其他优化 (HDFS-11086)
- (V2.9) DN支持慢盘检测和汇报 (HDFS-10959, HDFS-11551)
- (未合并) NN选DN的策略 & DN选磁盘策略的功能重叠 [HDFS-11464]
待补充
0x03. HDFS3特性
1. 主线
- EC块 & 条状块设计与实现
- (V3.3) Standby-NN与Active-NN的一致性读 [HDFS-12943]
- (V3.3)RBF(Router Based Federation)相关
- (V3.0) 核心功能V1阶段 [HDFS-10467]
- (V3.2) 核心功能V2阶段 [HDFS-12615]
- (V3.1) 多NS挂载同一目录实现 [HDFS-13224] (待迁移至Router2)
- (未完成) 子集群间的balancer工具 [HDFS-13123]
- (未完成) RBF的资源隔离 [HDFS-14090]
- (review中) 子集群的Rename/Balance方案 (小米) [HDFS-15087 , HDFS-15294]
- (V3.3) 稳定性V1阶段 [HDFS-13891]
- (未完成) 稳定性V2阶段 [HDFS-14603]
2. 支线
- (V3.0) 支持DN级别的DiskBalance均衡磁盘 [HDFS-1312]
- (V3.0) 支持多Standby-NN的实现 [HDFS-6440]
- (V3.0) 使用FoldedTreeSet(红黑树)代替GSet优化FBR的内存/GC情况 [HDFS-9260]
- (V3.0) ViewFS的多NS挂载设计与实现 [HDFS-12077]
- (V3.1) HDFS支持跨外部存储系统的设计实现 [HDFS-9806]
- (V3.3) Datanode-detection实现, 对Hbase有很大帮助 [HDFS-13571]
- (V3.3) 递归遍历和批量查找的
ls
命令加速 [ HDFS-15471, HDFS-13616] - (V3.3) NN启动加速—FSImage多索引下的并行加载 [HDFS-14617]
- (V3.3) 模拟压测HDFS的专用工具Dynamometer集成 [HDFS-12345]
- (V3.3) 新增缓存加速的native库PMDK [HDFS-14356]
- (未完成) FBR的分段块汇报(Segment-Block-Report) [HDFS-11313]
- (未完成) 异步Client-API访问HDFS3 [HDFS-13572]
- (未完成) 分段锁-基于NS-partition的NN全局锁的拆分 [HDFS-14703]
注: 未开发完成的功能一并列入此
0x04. HDFS与Ozone
这里先不列Ozone的具体细节, 主要是列举和HDFS相关的patch和设计思想
- HDFS小文件的前世今生
- (未完成) HDFS无痛升级Ozone的方案 [HDDS-1266]
- (未完成) Ozone和HDFS的融合 [待迁移至Ozone]
0x05. 业内分享
社区的很多功能其实都是大公司内部自己实现后回馈的, 所以收集一下业内HDFS的分享也是很有帮助的, 分单纯HDFS的分享和混合的Hadoop列举
A. HDFS分享
- 字节跳动 EB 级 HDFS 实践
- 趣头条-百PB数据实践和优化HDFS2/3
- 唯品会 HDFS 性能挑战和优化实践
- Uber的HDFS蓝图 & 快准稳扩容HDFS集群
- 滴滴-HDFS RBF的应用
- 滴滴-HDFS2.7到3.2的滚动升级
- 小米-HDFS的RBF架构介绍
- 去哪儿基于fastcopy的优化
- 贝壳找房-HDFS-Federation-Beike
- JD-HDFS监控的生态和思考
- 美团技术团队-HDFS专栏(Namenode)
B. Hadoop分享
待补充
参考资料: