前言
我上大学时,就开始在CSDN上写技术博客,目的在于记录平时遇到的一些问题以及研究的技术细节,好在将来可以进行查阅。随着时间的增长,我开始专注于某个技术模块,因为这样可以让我对具体某项技术有更深入的研究,写出的内容也会更加系统化,而HDFS就是其中一个我持续研究的技术模块。同时作为一名Hadoop社区的活跃贡献者,我也会将社区上一些比较有意思的东西分享到博客上,许多博友给了不少反馈,描述他们在工作中碰到的一些实际问题。在这样不断的写作、交流过程中,我得到了快速成长。目前大数据领域相关的书籍并不是很多,而专门讲解其中一个模块的书则更少,所以我将我过去一年多时间内关于HDFS的博客文章进行了整理、改进,同时也加入了一些新的内容。可以这么说,本书的内容源自博客,但是超越博客。
本书不会是纯源码分析的书籍。首先,我把工作实践中遇到的许多经验写入了书中,第7章便属于纯实践型的经验总结。其次,本书会是一个比较“新”的书,这里的“新”并不是指所分析的代码版本新,而是包含了HDFS未来的一些比较棒的功能特性,以及Hadoop社区目前在做的一些事情。在这本书中,你会看到许多与社区相关的JIRA,了解如何从社区上找到问题的解决办法。期待本书能给你带来更多的启发。
本书适合具有一定Java语言基础的同学,尤其适合以下读者朋友:
❑大数据架构师、开发者、运维工程师。
❑高年级本科生或研究生。
❑热衷于分布式存储技术的爱好者。
本书分为三大部分,“核心设计篇”介绍HDFS的基本原理、数据管理与策略等,“细节实现篇”介绍HDFS的块处理、流量处理、结构分析等,“解决方案篇”介绍数据管理技术与方案、数据读写技术、异常处理等。
第一部分“核心设计篇”包括内容如下:
第1章介绍HDFS现有的数据存储方式,主要介绍其中的内存存储和异构存储两个方面。
第2章介绍HDFS目前内部几种主要的功能机制,包括缓存管理、快照管理等。
第3章介绍HDFS比较新颖的一些功能,以及目前较少被人用到的功能特性。
第二部分“细节实现篇”包括内容如下:
第4章介绍HDFS的块处理相关操作,主要处理场景包括块如何组织、上报处理的过程以及多余块的清除。
第5章介绍HDFS的流量处理过程,包括HDFS目前流量处理的场景以及Balancer工具的数据平衡原理和优化。
第6章介绍HDFS一些特殊的结构对象类,包括这些类的作用、原理以及运用场景。
第三部分“解决方案篇”包括内容如下:
第7章介绍与HDFS相关的多套运维管理的操作方案,包括数据迁移、数据监控等方面。
第8章介绍HDFS写磁盘时的一些优化策略和改造方案。
第9章介绍HDFS的一些异常场景,并给出了相应的解决方案。
由于笔者水平有限,本书难免会有出错或者介绍不明确的地方,恳请读者批评指正,可以发送关于本书的意见和建议到我的个人邮箱:yqtin@apache.org。本书所涉及的源码,大家可以从Hadoop的Git地址上进行下载:https://github.com/apache/hadoop,其中,不同的分支对应不同版本的代码。相关Git地址和CSDN博客地址如下:
❑Git地址:http://github.com/linyiqun
❑CSDN地址:http://blog.csdn.net/androidlushangderen
感谢机械工业出版社的吴怡编辑,在我写作的过程中,不断指出其中的不足之处,督促和引导我完成本书的编写。
感谢蘑菇街数据平台部的同事们,在工作中不断地给予我帮助和支持,协助我解决各种各样的问题,于是才有了本书中所展现的精彩内容。
林意群
2017年2月