出版社:机械工业出版社
年代:2013
定价:79.0
本书由业界拥有10余年开发经验的Java专家亲自执笔,权威性毋庸置疑。全书以介绍Hadoop的基础架构和源代码实现结构开篇,深入透彻地剖析了Hadoop最重要的两个组成部分:Hadoop分布式文件系统和Map/Reduce数据处理框架。其中HDFS实现篇从分布式文件系统的角度出发,分析了HDFS的名字节点,数据节点和HDFS客户端,完整地介绍了一个大规模数据存储系统的实现。Map/Reduce实现篇在介绍Map/Reduce API的基础上,对作业节点,任务节点和客户端进行了剖析,充分地介绍了Hadoop如何实现Map/Reduce的设计目标。通过本书,读者不仅能全面了解Hadoop框架的优秀架构和设计思想,而且还能从Hadoop优雅的实现源码中一窥Java开发的精髓和分布式系统的精要。无论读者是一般的Java极其相关技术开发者,还是Hadoop应用开发者,抑或是平台开发人员和架构师,都能从本书中受益。
?前言
第一部分 环境准备
第1章 源代码环境准备
1.1什么是Hadoop
1.1.1Hadoop简史
1.1.2Hadoop的优势
1.1.3Hadoop生态系统
1.2准备源代码阅读环境
1.2.1安装与配置JDK
1.2.2安装Eclipse
1.2.3安装辅助工具Ant
1.2.4安装类UNIXShell环境Cygwin
1.3准备Hadoop源代码
1.3.1下载Hadoop
1.3.2创建Eclipse项目
1.3.3Hadoop源代码组织
1.4小结
第二部分 Common的实现
第2章 Hadoop配置信息处理
2.1配置文件简介
2.1.1Windows操作系统的配置文件
2.1.2Java配置文件
2.2HadoopConfiguration详解
2.2.1Hadoop配置文件的格式
2.2.2Configuration的成员变量
2.2.3资源加载
2.2.4使用get*和set*访问 设置配置项
2.3Configurable接口
2.4小结
第3章 序列化与压缩
3.1序列化
3.1.1Java内建序列化机制
3.1.2Hadoop序列化机制
3.1.3Hadoop序列化机制的特征
3.1.4HadoopWritable机制
3.1.5典型的Writable类详解
3.1.6Hadoop序列化框架
3.2压缩
3.2.1Hadoop压缩简介
3.2.2Hadoop压缩API应用实例
3.2.3Hadoop压缩框架
3.2.4Java本地方法
3.2.5支持Snappy压缩
3.3小结
第4章 Hadoop远程过程调用
4.1远程过程调用基础知识
4.1.1RPC原理
4.1.2RPC机制的实现
4.1.3Java远程方法调用
4.2Java动态代理
4.2.1创建代理接口
4.2.2调用转发
4.2.3动态代理实例
4.3JavaNIO
4.3.1Java基本套接字
4.3.2JavaNIO基础
4.3.3JavaNIO实例:回显服务器
4.4Hadoop中的远程过程调用
4.4.1利用HadoopIPC构建简单的分布式系统
4.4.2HadoopIPC的代码结构
4.5HadoopIPC连接相关过程
4.5.1IPC连接成员变量
4.5.2建立IPC连接
4.5.3数据分帧和读写
4.5.4维护IPC连接
4.5.5关闭IPC连接
4.6HadoopIPC方法调用相关过程
4.6.1Java接口与接口体
4.6.2IPC方法调用成员变量
4.6.3客户端方法调用过程
4.6.4服务器端方法调用过程
4.7HadoopIPC上的其他辅助过程
4.7.1RPC.getProxy()和RPC.stopProxy()
4.7.2RPC.getServer()和Server的启停
4.8小结
第5章 Hadoop文件系统
5.1文件系统
5.1.1文件系统的用户界面
5.1.2文件系统的实现
5.1.3文件系统的保护控制
5.2Linux文件系统
5.2.1Linux本地文件系统
5.2.2虚拟文件系统
5.2.3Linux文件保护机制
5.2.4Linux文件系统API
5.3分布式文件系统
5.3.1分布式文件系统的特性
5.3.2基本NFS体系结构
5.3.3NFS支持的文件操作
5.4Java文件系统
5.4.1Java文件系统API
5.4.2URI和URL
5.4.3Java输入 输出流
5.4.4随机存取文件
5.5Hadoop抽象文件系统
5.5.1Hadoop文件系统API
5.5.2Hadoop输入 输出流
5.5.3Hadoop文件系统中的权限
5.5.4抽象文件系统中的静态方法
5.5.5Hadoop文件系统中的协议处理器
5.6Hadoop具体文件系统
5.6.1FileSystem层次结构
5.6.2RawLocalFileSystem的实现
5.6.3ChecksumFileSystem的实现
5.6.4RawInMemoryFileSystem的实现
5.7小结
第三部分 Hadoop分布式文件系统
第6章 HDFS概述
6.1初识HDFS
6.1.1HDFS主要特性
6.1.2HDFS体系结构
6.1.3HDFS源代码结构
6.2基于远程过程调用的接口
6.2.1与客户端相关的接口
6.2.2HDFS各服务器间的接口
6.3非远程过程调用接口
6.3.1数据节点上的非IPC接口
6.3.2名字节点和第二名字节点上的非IPC接口
6.4HDFS主要流程
6.4.1客户端到名字节点的文件与目录操作
6.4.2客户端读文件
6.4.3客户端写文件
6.4.4数据节点的启动和心跳
6.4.5第二名字节点合并元数据
6.5小结
第7章 数据节点实现
7.1数据块存储
7.1.1数据节点的磁盘目录文件结构
7.1.2数据节点存储的实现
7.1.3数据节点升级
7.1.4文件系统数据集的工作机制
7.2流式接口的实现
7.2.1DataXceiverServer和DataXceiver
7.2.2读数据
7.2.3写数据
7.2.4数据块替换、数据块拷贝和读数据块检验信息
7.3作为整体的数据节点
7.3.1数据节点和名字节点的交互
7.3.2数据块扫描器
7.3.3数据节点的启停
7.4小结
第8章 名字节点实现
8.1文件系统的目录树
8.1.1从i-node到INode
8.1.2命名空间镜像和编辑日志
8.1.3第二名字节点
8.1.4FSDirectory的实现
8.2数据块和数据节点管理
8.2.1数据结构
8.2.2数据节点管理
8.2.3数据块管理
8.3远程接口ClientProtocol的实现
8.3.1文件和目录相关事务
8.3.2读数据使用的方法
8.3.3写数据使用的方法
8.3.4工具dfsadmin依赖的方法
8.4名字节点的启动和停止
8.4.1安全模式
8.4.2名字节点的启动
8.4.3名字节点的停止
8.5小结
第9章 HDFS客户端
9.1认识DFSClient
9.1.1DFSClient的构造和关闭
9.1.2文件和目录、系统管理相关事务
9.1.3删除HDFS文件 目录的流程
9.2输入流
9.2.1读数据前的准备:打开文件
9.2.2读数据
9.2.3关闭输入流
9.2.4读取HDFS文件数据的流程
9.3输出流
9.3.1写数据前的准备:创建文件
9.3.2写数据:数据流管道的建立
9.3.3写数据:数据包的发送
9.3.4写数据:数据流管道出错处理
9.3.5写数据:租约更新
9.3.6写数据:DFSOutputStream.sync()的作用
9.3.7关闭输出流
9.3.8向HDFS文件写入数据的流程
9.4DistributedFileSystem的实现
9.5HDFS常用工具
9.5.1FsShell
9.5.2DFSAdmin
9.6小结
“Hadoop技术内幕”共两册,分别从源代码的角度对“Common+HDFS”和MapReduce的架构设计和实现原理进行了极为详细的分析。《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》由腾讯数据平台的资深Hadoop专家、X-RIME的作者亲自执笔,对Common和HDFS的源代码进行了分析,旨在为Hadoop的优化、定制和扩展提供原理性的指导。除此之外,本书还从源代码实现中对分布式技术的精髓、分布式系统设计的优秀思想和方法,以及Java语言的编码技巧、编程规范和对设计模式的精妙运用进行了总结和分析,对提高读者的分布式技术能力和Java编程能力都非常有帮助。本书适合Hadoop的二次开发人员、应用开发工程师、运维工程师阅读。
全书9章,共分为三个部分:第一部分(第1章)主要介绍了Hadoop源代码的获取和源代码阅读环境的搭建;第二部分(第2~5章)对Hadoop公共工具Common的架构设计和实现原理进行了深入分析,包含Hadoop的配置信息处理、面向海量数据处理的序列化和压缩机制、Hadoop的远程过程调用,以及满足Hadoop上各类应用访问数据的Hadoop抽象文件系统和部分具体文件系统等内容;第三部分(第6~9章)对Hadoop的分布式文件系统HDFS的架构设计和实现原理进行了详细的分析,这部分内容采用了总分总的结构,第6章对HDFS的各个实体和实体间接口进行了分析;第7章和第8章分别详细地研究了数据节点和名字节点的实现原理,并通过第9章对客户端的解析,回顾了HDFS各节点间的配合,完整地介绍了一个大规模数据存储系统的实现。
海报:
董西成, 著
董西成, 著
(美) 萨默 (Sammer,E.) , 著
张安站, 著
翟周伟, 著
(日) 中野猛, (日) 山下真一, (日) 猿田浩辅, (日) 上新卓也, (日) 小林隆, 著
(美) 山姆·阿拉帕蒂 (Sam R. Alapati) , 著
(印) 卡伦斯 (Karanth,S.) , 著
(美) 本·斯派维 (Ben Spivey) , (美) 乔伊·爱彻利维亚 (Joey Echeverria) , 著