前 言
Hadoop已经进入Apache社区发展五年多了,使用Hadoop系统进行开发的工作仍然富于挑战但收获丰厚。本书第1版在若干年前就已经出版了,在这期间,Hadoop系统已经被越来越多的企业使用,自身也得到了飞速发展。
Hadoop2.0基于YARN框架做了全新升级,重写了Hadoop系统的底层平台。本书从Hadoop使用者的角度出发讲解Hadoop的实现原理,浓缩了Hadoop软件系统的精华。作为作者,我们希望可以深入到源代码级别来理解Hadoop的运行原理及其背后的设计目标,渴望与你分享Hadoop带给我们的启迪。通过本书,你不仅能够深入学习Hadoop系统,还可以对Java语言在大数据处理过程中的运用有更深入的认识。
本书总体上介绍了大数据的范畴概念,然后对Hadoop进行了详细讲解。因为如果对大数据没有一个总体上的认知,是不可能真正理解Hadoop系统的。本书的读者对象具备中级Java开发能力的Hadoop开发人员。本书可以让你成为企业中的Hadoop专家。通过本书的学习,你可以获得大量实用技巧,这些技巧都是我们在从事基于Hadoop的分布式数据处理系统实践过程中总结出来的。
本书循序渐进地讲解了大量的实例,会帮助你从Hadoop集群初级使用者成长为能胜任运行任何复杂应用程序的专家。下面是本书的一个内容纲要:
第1章,讲解大数据系统的作用,介绍各种各样的大数据系统。
第2章,高屋建瓴地介绍Hadoop2.0和YARN,讲解Hadoop平台的关键概念。
第3章,开始Hadoop学习,构建你的第一个MapReduce程序。
第4章,讲解Hadoop平台管理的关键概念要素。
第5章、第6章和第7章是本书的重点,深入分析讲解了MapReduce框架。你将会学习MapReduce框架所有知识点。我们以当前广泛使用的语言SQL作为对照,来学习理解MapReduce框架的使用。利用MapReduce框架来实现SQL语言中SELECT、WHERE、GROUP BY和JOIN这些关键字的功能。Hadoop系统一个常用用途就是来做数据ETL。这几章会让你掌握如何使用MapReduce框架支持通用的数据处理功能。我们不仅仅学习MapReduce框架的API,还会学习MapReduce框架中更复杂的概念及其设计理念。
第8章,介绍一种测试框架,这种测试框架支持MapReduce程序的单元测试和集成测试。
第9章,讲解Hadoop框架的监控和日志。
第10章,讲解Hive框架,这是一个基于MapReduce的数据仓库框架。
第11章,讲解Pig和Crunch框架。这些框架可以帮助使用者在Hadoop平台上构建数据处理管道。
第12章,讲解HCatalog框架。该框架帮助企业用户可以像访问数据库中的数据表一样,来访问存放在Hadoop文件系统上的海量数据。
第13章,讲解如何使用Hadoop来分析处理日志流。
第14章,介绍HBase,这是一个基于Hadoop系统的NoSQL数据库。你会学习许多HBase用法范例。
第15章,对数据科学做简要介绍。介绍了MapReduce框架在数学科学上的局限和不足之处。同时引入介绍新的框架,比如Spark、Hama,这些框架突破了MapReduce框架中的某些局限。
第16章,简要介绍了Hadoop系统在云计算中的应用。讲解如何在一个真实的生产环境中的Hadoop集群上工作。
第17章,粗略地介绍Hadoop2.0的一个关键附加功能:在Hadoop上开发一个自己的类似于MapReduce框架的分布式数据处理框架。讲解了如何基于Hadoop2.0开发一个简单的分布式下载服务。
致谢
Hadoop在过去的10年发展过程中,有许多厂商和独立开发者为之贡献代码。Hadoop系统中也使用了大量的开源函数库。我们要感谢为Hadoop系统贡献源码的所有开源作者所付出的辛勤劳动。我们也要感谢那些在论坛上回答了Hadoop系统相关问题的博客作者及专家学者。他们的积极参与,使得Hadoop这样复杂的系统变得易于使用并成为应用主流。
我们还想感谢Apress的全体员工,他们的努力付出使得本书内容清晰易读。
我们最后要感谢我们的家庭、朋友及同事,本书在编写过程中得到他们的一贯支持。
目 录
第1章为什么会有大数据
1.1什么是大数据
1.2大数据技术背后的核心思想
1.2.1把数据分发到多个节点
1.2.2把计算逻辑移动到数据附近
1.2.3计算节点进行本地数据处理
1.2.4优选顺序读,次之随机读
1.2.5一个例子
1.3大数据的编程模型
1.3.1大规模并行处理数据库系统
1.3.2内存数据库系统
1.3.3MapReduce系统
1.3.4整体同步并行系统
1.4大数据和事务性系统
1.5我们能处理多大的数据量
1.5.1一个计算密集型的例子
1.5.2Amdhal定律
1.6大数据商业用例
1.7本章小结
第2章Hadoop中的概念
2.1Hadoop简介
2.2MapReduce编程模型简介
2.3Hadoop系统的组成
2.3.1Hadoop 分布式文件系统
2.3.2辅助名称节点
2.3.3任务跟踪器
2.3.4作业跟踪器
2.4Hadoop 2.0
2.4.1容器
2.4.2节点管理器
2.4.3资源管理器
2.4.4应用程序管理器
2.4.5分步详解YARN请求
2.5HDFS 的高可用性
2.6本章小结
第3章初识Hadoop框架
3.1安装类型
3.1.1单机模式
3.1.2伪分布式集群模式
3.1.3多节点集群安装模式
3.1.4基于Amazon EMR预安装模式
3.2使用Cloudera虚拟机搭建开发环境
3.3一个MapReduce程序的组成
3.4第一个Hadoop程序
3.4.1以本地模式运行程序的必要条件
3.4.2使用旧API编写的单词计数程序
3.4.3构建程序
3.4.4在集群模式下运行单词计数程序
3.4.5使用新API编写的单词计数程序
3.4.6构建程序
3.4.7在集群模式下运行单词计数程序
3.5Hadoop作业中的第三方函数库
3.6本章小结
第4章Hadoop系统管理
4.1Hadoop的配置文件
4.2配置Hadoop守护进程
4.3Hadoop配置文件的优先级
4.4深入探究Hadoop配置文件
4.4.1core-site.xml
4.4.2hdfs-*.xml
4.4.3mapred-site.xml
4.4.4yarn-site.xml
4.4.5YARN中的内存分配
4.5调度器
4.5.1计算能力调度器
4.5.2公平调度器
4.5.3公平调度器配置
4.5.4 yarn-site.xml 配置
4.5.5策略文件的格式和配置
4.5.6按照drf策略来确定优势资源的分配
4.6从属文件
4.7机架感知
4.8 集群管理工具
4.8.1检查HDFS
4.8.2 HDFS管理命令行
4.8.3 均衡HDFS上的数据分布
4.8.4从HDFS中复制海量数据
4.9本章小结