前言
自2015年下半年起,笔者开始写关于Hadoop的文章(主要集中在HDFS),包括源码分析类的,问题分析解决又或者是内部机制剖析。这些文章目前汇总数量已经达到70+篇。这些文章对于笔者来说是一个宝贵的资料,这些文章见证了笔者从一名Hadoop贡献者成长为Hadoop Committer的过程。同样笔者相信,这些文章对于那些对HDFS感兴趣的人同样是很好的学习资料。因此,笔者觉得是时候写一篇文章来做这样的索引目录页,来帮助博客朋友来全局地,系统地阅读和学习这些文章。另外特别注明一点,部分15,16年的文章,笔者其实已经整理成书(<<深度剖析Hadoop HDFS>>)并已经出版了,详见左侧笔者介绍区域。笔者对这些文章进行了简单的分类,并在小节开头进行了简单的介绍。
Federation
HDFS Federation是用来解决HDFS扩展性问题的方案之一。随着数据量越来越大,单一的NameNode遇到了性能瓶颈,怎么办?在这个方案中,可以支持一个集群内有多namespace(NameNode)的情况,但他们是可以复用DataNode的。
HDFS基于路由的Federation方案:http://blog.csdn.net/androidlushangderen/article/details/78573732
HDFS Federation机制:http://blog.csdn.net/androidlushangderen/article/details/52135506
Ozone
Ozone是HDFS的一个新方向,它指在HDFS上做对象存储。Ozone的架构与设计与HDFS其实已经是完全不同的一套体系结构了。但在未来可能会把这种关系打通,也就是在Ozone上构建新的HDFS。
聊聊HDFS和Ozone的融合:http://blog.csdn.net/androidlushangderen/article/details/78450332
HDFS Ozone整体概述:http://blog.csdn.net/androidlushangderen/article/details/78168479
HDFS Ozone的Pipeline实现机制:http://blog.csdn.net/androidlushangderen/article/details/78010639
HDFS对象存储:Ozone的块异步删除服务:http://blog.csdn.net/androidlushangderen/article/details/77619513
HDFS对象存储的版本管理设计:http://blog.csdn.net/androidlushangderen/article/details/76039268
HDFS对象存储服务:Ozone的元数据管理:http://blog.csdn.net/androidlushangderen/article/details/74860017
HDFS的新方向:Ozone对象存储:http://blog.csdn.net/androidlushangderen/article/details/71006240
HDFS对象存储–Ozone架构设计:http://blog.csdn.net/androidlushangderen/article/details/50767774
副本、块、磁盘策略
HDFS中聊得最多的就是块,副本,磁盘,这个模块主要介绍HDFS现有的一些磁盘,副本位置选择策略。
聊聊HDFS中的副本放置策略和磁盘选择策略间的选择“矛盾”:http://blog.csdn.net/androidlushangderen/article/details/71970499
HDFS副本放置节点选择的优化:http://blog.csdn.net/androidlushangderen/article/details/70195430
HDFS内副本和块的状态分析:http://blog.csdn.net/androidlushangderen/article/details/53572600
DataNode启动优化改进:磁盘检测并行化:http://blog.csdn.net/androidlushangderen/article/details/53232234
HDFS副本放置策略:http://blog.csdn.net/androidlushangderen/article/details/51178253
HDFS如何检测并删除多余副本块:http://blog.csdn.net/androidlushangderen/article/details/50760170
NameNode处理上报block块逻辑分析:http://blog.csdn.net/androidlushangderen/article/details/50600491
特性分析
HDFS从它诞生到现在,可以说是非常成熟的一套分布式文件系统了,里面实现了很多很棒的功能特性,下面是对这些独立功能特性的分析,分为已经实现的和未实现,但是已给出具体设计方案的。
未实现
HDFS跨外部存储系统的多层级存储:http://blog.csdn.net/androidlushangderen/article/details/68957948
HDFS智能化存储管理:Smart Storage Management:http://blog.csdn.net/androidlushangderen/article/details/53352434
HDFS数据快速拷贝方案:FastCopy:http://blog.csdn.net/androidlushangderen/article/details/52964656
HDFS NodeLabel特性:http://blog.csdn.net/androidlushangderen/article/details/52495850
HDFS异步访问模式:http://blog.csdn.net/androidlushangderen/article/details/52452215
已在最新代码内实现
HDFS Maintenance State:http://blog.csdn.net/androidlushangderen/article/details/54731243
DataNode生命线消息:http://blog.csdn.net/androidlushangderen/article/details/53783641
HDFS升级域:Upgrade Domain:http://blog.csdn.net/androidlushangderen/article/details/52901974
HDFS租约机制:http://blog.csdn.net/androidlushangderen/article/details/52850349
HDFS数据恢复模式:http://blog.csdn.net/androidlushangderen/article/details/52679606
HDFS inotify:Linux inotify机制在HDFS中的实现:http://blog.csdn.net/androidlushangderen/article/details/52414537
HDFS的滚动升级: Rolling Upgrade:http://blog.csdn.net/androidlushangderen/article/details/52003299
HDFS节点内数据平衡:DiskBalancer:http://blog.csdn.net/androidlushangderen/article/details/51776103r
HDFS内部的认证机制:http://blog.csdn.net/androidlushangderen/article/details/51591134
HDFS内存存储:http://blog.csdn.net/androidlushangderen/article/details/51514216
HDFS中心缓存管理:http://blog.csdn.net/androidlushangderen/article/details/51469877
HDFS数据加密空间–Encryption zone:http://blog.csdn.net/androidlushangderen/article/details/51396894
HDFS快照管理:http://blog.csdn.net/androidlushangderen/article/details/51282612
HDFS异构存储:http://blog.csdn.net/androidlushangderen/article/details/51105876
HDFS缓存机制:http://blog.csdn.net/androidlushangderen/article/details/50818302
Erasure Code
Erasure Code纠删码技术在HDFS中的实现,EC在HDFS内部可以理解为在HDFS软件层面做了磁盘RAID的功能。当数据出错时,能根据算法从其它的数据块中进行数据的恢复。
Hadoop Erasure Coding结构分析:http://blog.csdn.net/androidlushangderen/article/details/55805039
再聊HDFS Erasure Coding:http://blog.csdn.net/androidlushangderen/article/details/51923582
Hadoop 3.0 Erasure Coding 纠删码功能预分析:http://blog.csdn.net/androidlushangderen/article/details/50724917
扩展性
下面2篇为社区在早期时对HDFS扩展性方面的考虑,其中一个重要的点就是要把BlockManager的服务从NameNode中剥离出去。
继续聊聊HDFS BlockManager扩展性问题:http://blog.csdn.net/androidlushangderen/article/details/54645518
聊聊HDFS BlockManager的服务化改造:http://blog.csdn.net/androidlushangderen/article/details/53965787
高可用(HA)
关于HDFS高可用的文章。
HDFS ZKFC自动切换原理分析:http://blog.csdn.net/androidlushangderen/article/details/53148213
HDFS HA支持多Standby节点机制:http://blog.csdn.net/androidlushangderen/article/details/52621555
文件
HDFS中关于文件,文件操作的文章。
HDFS符号链接和硬链接:http://blog.csdn.net/androidlushangderen/article/details/52808554
HDFS Truncate文件截断:http://blog.csdn.net/androidlushangderen/article/details/52651995
QJM
HDFS中Journal Node工作机制的原理分析。
HDFS QJM机制分析:http://blog.csdn.net/androidlushangderen/article/details/52335485
HDFS QJM的架构设计:http://blog.csdn.net/androidlushangderen/article/details/52260591
工具/解决方案
下面文章是一些偏向于实际应用的文章,这些文章类型主要偏向于以下几类:
- 1.利用现有工具,解决现有问题,比如distcp,listOpenfile命令。
- 2.轻微改造内部代码,来达到自己想要的效果,比如文章DataNode引用计数磁盘选择策略。
- 3.问题解决,分析,追踪问题原因,然后解决这个问题,通过改配置或者引入社区已经patch进行解决。
- 4.集群运维方案,比如DataNode,NameNode迁移等等。
以下是相关的文章:
HDFS数据不均衡解决方案:基于剩余空间大小的均衡策略:http://blog.csdn.net/androidlushangderen/article/details/78308893
HDFS新运维工具命令之listOpenFiles命令:http://blog.csdn.net/androidlushangderen/article/details/72808405
HDFS小文件问题解决方案与启发实践:http://blog.csdn.net/androidlushangderen/article/details/54176511
HDFS nnTop统计功能:http://blog.csdn.net/androidlushangderen/article/details/52586560
NameNode热迁移方案:http://blog.csdn.net/androidlushangderen/article/details/52242644
记两次NameNode响应延时问题:http://blog.csdn.net/androidlushangderen/article/details/52198256
HDFS自定义小文件分析功能:http://blog.csdn.net/androidlushangderen/article/details/52091620
HDFS跨集群数据合并方案之ViewFileSystem:http://blog.csdn.net/androidlushangderen/article/details/51315618
HDFS的读写限流方案:http://blog.csdn.net/androidlushangderen/article/details/51235380
HDFS数据迁移解决方案之DistCp工具的巧妙使用:http://blog.csdn.net/androidlushangderen/article/details/51044692
Hadoop中止下线操作后大量剩余复制块的解决方案:http://blog.csdn.net/androidlushangderen/article/details/50571584
DataNode引用计数磁盘选择策略:http://blog.csdn.net/androidlushangderen/article/details/50531760
记一次DataNode慢启动问题:http://blog.csdn.net/androidlushangderen/article/details/50500136
DataNode迁移方案:http://blog.csdn.net/androidlushangderen/article/details/50484506
Hadoop节点”慢磁盘”监控:http://blog.csdn.net/androidlushangderen/article/details/50195481
HDFS数据资源使用量分析以及趋势预测:http://blog.csdn.net/androidlushangderen/article/details/49722267
从DFSOutputStream的pipeline写机制到Streamer线程泄漏问题:http://blog.csdn.net/androidlushangderen/article/details/50684768
独立结构
下面文章是一些小模块代码的分析,代码比较单一,独立,不是HDFS内部的重要的模块功能代码,能比较容易看懂。
HDFS的StartupProgress启动跟踪分析:http://blog.csdn.net/androidlushangderen/article/details/51992107
HDFS块检查命令Fsck机理的分析:http://blog.csdn.net/androidlushangderen/article/details/50996821
HDFS镜像文件的解析与反解析:http://blog.csdn.net/androidlushangderen/article/details/50937069
HDFS邻近信息块BlockInfoContiguous:http://blog.csdn.net/androidlushangderen/article/details/50652049
DataNode数据处理中心DataXceiver:http://blog.csdn.net/androidlushangderen/article/details/50619468
Hadoop内部的限流机制:http://blog.csdn.net/androidlushangderen/article/details/50638697
老版本源码分析
此部分文章为笔者早期学习阅读的HDFS源码分析文章,代码会比较老,比较适合初学者对这些文章进行学习。
HDFS源码分析(六)—–租约:http://blog.csdn.net/androidlushangderen/article/details/48012001
HDFS源码分析(五)—–节点注册与心跳机制:http://blog.csdn.net/androidlushangderen/article/details/47945597
HDFS源码分析(四)—–节点Decommission机制:http://blog.csdn.net/androidlushangderen/article/details/47788227
HDFS源码分析(三)—–数据块关系基本结构:http://blog.csdn.net/androidlushangderen/article/details/47734269
HDFS源码分析(二)—–元数据备份机制:http://blog.csdn.net/androidlushangderen/article/details/47679977
HDFS源码分析(一)—–INode文件节点:http://blog.csdn.net/androidlushangderen/article/details/47427925
Hadoop分布式文件系统–HDFS结构分析:http://blog.csdn.net/androidlushangderen/article/details/47377543
Hadoop Balancer源码解读:http://blog.csdn.net/androidlushangderen/article/details/46445975
小结
以上就是目前笔者写过的几乎所有关于HDFS的文章了,如果笔者朋友想要更加方便直接学习这些内容,可以在我的新书《深度剖析Hadoop HDFS》,新书暂且不会包括2017年写的内容,但是很多早期的文章都已经整理在内了,也就是下面这个书。
最后还是希望笔者的文章能够带给大家收获。