前 言
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什么是大数据](https://yq.aliyun.com/articles/109048/)
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简介](https://yq.aliyun.com/articles/109094/)
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安装类型](https://yq.aliyun.com/articles/109136/)
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本章小结