《Hadoop + Spark生态系统 操作与实战指南》
内 容 简 介
本书用于Hadoop+Spark快速上手,本书全面解析Hadoop和Spark生态系统,通过原理解说和实例操作每一个组件,让读者能够轻松跨入大数据分析与开发的大门。
全书共12章,大致分为3个部分,第1部分(第1~7章)讲解了Hadoop的原生态组件,包括Hadoop、ZooKeeper、HBase、Hive环境搭建与安装,以及介绍MapReduce、HDFS、ZooKeeper、HBase、Hive原理和Apache版本环境下实战操作。第2部分(第8~11章)讲解Spark的原生态组件,包括Spark Core、Spark SQL、Spark Streaming、DataFrame,以及介绍Scala、Spark API、Spark SQL、Spark Streaming、DataFrame原理和CDH版本环境下实战操作,其中Flume和Kafka属于Apache顶级开源项目也放在本篇讲解。第3部分(第12章)讲解了两个大数据项目,包络网页日志离线项目和实时项目,在CDH版本环境下通过这两个项目将Hadoop和Spark原生态组件进行整合,一步一步带领读者学习和实战操作。
本书适合想要快速掌握大数据技术的初学者,也适合作为高等院校和培训学校相关专业师生的教学参考书和实验用书。
大数据是继石油之后,新兴的一种国家战略资源。大数据研究、开发和应用全球学术界、产业界的焦点。Hadoop、Spark等开源项目是目前大数据领域的应用最广泛的技术和平台。熟练掌握Hadoop、Spark等已经是从事大数据研发和应用等从业人员必备的基本技能。
《Hadoop+Spark生态系统操作与实战指南》正式在这样技术背景下应运而生,能极好满足了广大大数据从业者的需求。本书以原理介绍为基础,以实战训练为目标,具体、深入地阐述了Hadoop及Spark的原生态中每一个组件的基本原理和应用方法。选择Apache和CDH两个主流Hadoop版本作为剖析实例、通过Java、Scala、客户端等开发案例;离目和实时项目进行讲解。
作者根据自己多年在大数据行业的研发经验和个人体会,并结合大数据实际研发中需求和特点,认真整理作者本人多年来编写的有关大数据研发的博文,精心组织和修订,最终编撰此著作,馈食读者。因此,该著作既是在大数据一线研发人员的知识结晶,而且还是有意进军大数据领域的从业人员的“良师益友”,确实是一本难得大数据研发的参考资料。
黄永峰
清华大学电子工程系教授、博士生导师
随着大数据时代的到来,大数据技术在各行各业的应用越来越多,大数据相关技术的学习和使用者也越来越多。《Hadoop+Spark生态系统操作与实战指南》从大数据爱好者和入门者的角度出发,以原理兼实战为主体思路展现Hadoop及Spark的原生态中每一个组件的操作方法,是一本有效的快速入门教程。
本书首先讲解了Apache和CDH两大Hadoop版本的集群搭建,并此作为后续的开发平台;其次,讲解了Hadoop+Spark中原生态组件的原理,并使用Java、Scala、客户端对组件进行实例操作,作为案例;最后,通过两个网页日志分析项目将Hadoop和Spark中的原生态组件整合在一起,作为项目架构。
余辉毕业于中国科学院大学,其研究方向为大数据与云计算,目前已拥有多年一线大数据开发经验。本书将理论与实践相结合,可作为相关技术教学和培训的参考资料。
肖俊
中国科学院大学人工智能技术学院教授 副院长
本书系统介绍了大数据相关知识,全书共有12章,系统地论述了大数据的基本概念、大数据处理架构Hadoop、分布式文件系统HDFS、分布式数据库HBase、NoSQL数据库、云数据库、分布式并行编程模型MapReduce、基于内存的分布式计算框架Spark、最新的Zookeeper、Hive、Scala、Flume、Kafka等技术。在Hadoop、HDFS、HBase、MapReduce和Spark等重要章节,都安排了实践操作,让读者更好地学习和掌握大数据关键技术。
本文作者余辉工程师,在大数据领域的实验室及公司工作多年,积累了丰富的实战经验。这本书理论结合实践,手把手教读者一步一步入门,避免了“纸上谈兵”。是大数据研究的爱好者及从业人员的入门书籍。
本书也可以作为高等院校计算机专业、信息管理等相关专业的大数据课程教材,也可供相关技术人员参考、学习、培训之用。
贺海武
中国科学院计算机网络信息中心(CNIC/CAS)百人计划 研究员、
巴黎第13大学客座教授、里昂第1大学客座教授
市面上有许多讲解Hadoop或者Spark的书籍,但很难找到一本能带领大数据爱好者快速入门的书籍。本书作者余辉兼职于Oracle OAEC 在线教育集团大数据讲师,他从一个讲师的角度写书,本书通过多维度讲解Hadoop+Spark原生态系统组件,在平台环境方面使用到Apache和CDH版本的Hadoop集群,在开发环境方面使用到Eclipse+Java和IntelliJIDEA+Scala,在项目环境方面使用到主流的离线日志分析和实时日志分析,让大数据爱好者可以快速认识大数据、熟悉大数据、操作大数据、运用大数据。本书详细讲解了Hadoop+Spark原生态组件的原理,通过Java、Scala、客户端等开发案例并附上图片进行解说,让读者极易上手,本书非常适合作为一本大数据的快速入门教材。
方立勋
传智播客.黑马程序员高级副总裁
我与余辉的认识起源于清华大学,当时他在清华大学电子工程系担任软件工程师一职,通过和他多次交谈感觉此人思维缜密、善于总结且非常热爱技术。此书涵盖了余辉多年的一线开发经验和博文总结。
《Hadoop + Spark生态系统操作与实战指南》总计12章。涵盖Hadoop+Spark原生态系统组件,对每一个组件原理和架构有着清晰的描述。通过两套主流开发环境Eclipse+Java和IntelliJ IDEA+Scala以及客户端分别对每一个组件进行了大量的案例操作,并配上大量案例截图,最后采用主流的离线项目和实时项目进行生态组件的融合。多维度让读者对大数据快速认知、快速理解、快速上手、快速深入了解大数据行业,是一本非常适合大数据开发爱好者快速入门的书籍。
杨志云
搜狐视频技术总监
大数据在各行各业的应用越来越广,近几年“大数据”一词也非常火热,余辉的书《Hadoop +Spark生态系统操作与实战指南》生逢其时。虽然现在世面上有不少关于大数据方面的书籍,但我还是想从本书的内容结构,及我与作者交往,对此书及此人做一个概要性的介绍。
此书最大的特点是理念、实战与项目的结合,能把各个知识点,以实战操作的方式连成线,再以项目的方式,把各知识模块连成面,点、线、面轮廓清晰、项目实用,能帮助读者快速理解大数据生态技术中的各种技术在实际应用中的作用;Hadoop是大数据平台,它通过一系列的技术组成一个大数据生态技术圈,各种技术在这个生态中是干什么、原理是什么等在书中都有讲解;书中内容包括三大部分,12章节,从大数据生态平台起源讲起(第1章),实践环境搭建(第2章)、分布式存储与计算框架介绍(第3章)、平台协作套件(第4章)、Apache原生的分布式计算框架详解(第5章)、分布式数据存储数据库(第6、7章)、利用函数式编程处理数据(第8章)、数据同步(第9、10章)、内存计算引擎架构(第11章)以及综合项目(第12章),内容丰富、案例真实、可操作性强,通过本书,读者能快速的理解Hadoop大数据技术生态中各种技术在实际项目中的应用。
关于此人,余辉是我通过CSDN博客找到他的,最开始我是阅读他的CSDN博文,从他博文字里行间能感受到他几种特质:专注、坚持、超强的执行力;因为Oracle OAEC人才产业中心此时正在开设大数据相关的课程,所以通过电话联系到他,通过一段时间的交流,最终成为OracleOAEC人才产业基地的一名大数据兼职讲师,负责北京OracleOAEC中心的大数据课程的教授;在教学过程中,也得到学员的多次好评,以此基础,我建议他写一本关于这方面的书箱;我的逻辑是让他通过授课的方式,将多年在大数据一线的实际应用与项目,用通俗易懂的方式让学员理解,同时自己也加深了理解,再通过写书的方式,能系统地将知识、经验、和自己的理解分享给别人。
刘 彰
OracleOAEC 人才产业集团大数据学院与认证中心产品总监
Oracle认证高级讲师
前 言
近几年来,随着计算机和信息技术的迅猛发展和普及应用,行业应用系统的规模迅速扩大,行业应用所产生的数据呈爆炸性增长。大数据技术快速火热,大数据开发工程师更是供不应求。本书是一本Hadoop+Spark的快速上手的书,从Hadoop生态系统和Spark生态系统全面原理解析和实战操作每一个组件,每一个知识点都讲的十分细致,让读者能够轻松的跨入大数据开发工程师的大门。
近几年大数据岗位尤其火热,大数据开发工程师供不应求,市面上大数据开发工程师起步就是8千元,1年工作经验1万2千元,2年工作经验1万5千元,3年工作经验2万以上。根据每个人自身学习能力不同,有人2年就可以达到2万元以上。
全书共12章,大致分为3个部分,第1部分(第1~7章)讲解了Hadoop的原生态组件,包括Hadoop、ZooKeeper、HBase、Hive环境搭建与安装,以及如何对MapReduce、HDFS、ZooKeeper、HBase、Hive进行原理介绍和Apache版本环境下实战的操作。第2部分(第8~11章)讲解Spark的原生态组件,包括Spark Core、Spark SQL、Spark Streaming、DataFrame,以及如何对Scala、Spark API、Spark SQL、Spark Streaming、DataFrame进行原理介绍和CDH版本环境下实战的操作,其中Flume和Kafka属于Apache顶级开源项目也放在本篇讲解。第3部分(第12章)讲解了大数据项目,包络网页日志离线项目和实时项目,在CDH版本环境下通过两个项目将Hadoop和Spark原生态组件进行整合,一步一步带领读者学习和实战操作。
本书是一本Hadoop + Spark的快速入门书籍,以通俗易懂的方式介绍了Hadoop + Spark原生态组件的原理、实战操作以及集群搭建方面的知识。其中,Hadoop原生态组件包括:MapReduce、HDFS、ZooKeeper、HBase、Hive。Spark原生态组件包括:Spark Core、Spark SQL、Spark Streaming、Dataframe。同时包括Apache版本和CDH5版本的Hadoop集群搭建。本书的特点是:注重“实战”训练,强调知识系统性,关注内容实用性。
(1)本书从培训角度对读者简述Hadoop + Spark中常用组件的原理和实战操作,让读者快速了解组件原理和功能使用。
(2)每一个操作都配有实例代码或者是图片来帮助理解,每一章的最后还有小节,来归纳总结本章的内容,帮助读者对Hadoop + Spark原生态系统有一个大的全局观。
(3)目前市面上关于Hadoop的书很多,关于Spark的书也很多,但是很少有对Hadoop + Spark 结合进行讲解,本书首先讲解完Hadoop + Spark原理之后,接着通过Hadoop + Spark原生态组件的实例操作,最后结合大数据网站日志离线和实时两个项目融合Hadoop+Spark所有生态系统功能,能够使得读者对本书有一个又浅入深且快速上手的过程。
本书适合Hadoop+Spark的初学者,希望深入了解Hadoop+Spark安装部署、开发优化的大数据工程师,希望深入了解Hadoop+Spark管理,业务框架扩展的大数据架构师,以及任何对Hadoop+Spark相关技术感兴趣的读者。
本书代码、软件、文档下载地址(注意数字和字母大小写)如下:
http://pan.baidu.com/s/1cCi0k2
如果下载有问题,请联系作者电子邮箱[email protected],邮件主题为“Hadoop+Spark生态系统与实战指南”。
余辉,中国科学院大学硕士研究生毕业。拥有多年大数据平台软件开发经验,开源爱好者,对于Hadoop和Spark原生态组件有深刻理解。
现供职于牛互动传媒股份有限公司(http://www.donews.com/)担任高级大数据开发工程师,兼职ORACLROAEC在线教育集团(http://www.oracleoaec.com.cn/)担任高级大数据讲师,曾在清华大学电子工程系NGNLab研究室(http://ngn.ee.tsinghua.edu.cn/)担任软件工程师。
作者博客: http://blog.csdn.net/silentwolfyh
赶在儿子1岁生日之际,赶在我告别30岁之际,我撰写《Hadoop+Spark生态系统操作与实战指南》一书,作为我儿子的生日礼物。感谢父母提供了良好生活环境,感谢舅舅、舅妈提供了良好的学习平台,感谢我的老婆、姐姐、姐夫在生活上对我的支持和奉献。最后,感谢并回忆的是在清华工作和学习时光,清华4年,我学会了生存技能,我找到了研究方向,我培养了生活习惯。
余 辉
2017年7月
目 录
第1章 Hadoop概述......................................................................................................... 1
1.1 Hadoop简介..................................................................................................................................... 1
1.2 Hadoop常用版本和生态系统组件.............................................................................................. 3
1.3 MapReduce简介............................................................................................................................. 7
1.4 HDFS简介......................................................................................................................................... 8
1.5 开发环境搭建................................................................................................................................... 9
1.5.1 Java安装............................................................................................................................. 9
1.5.2 Maven安装...................................................................................................................... 11
1.5.3 Eclipse安装和配置.......................................................................................................... 12
1.5.4 Eclipse创建Maven项目............................................................................................... 16
1.5.5 Eclipse其余配置.............................................................................................................. 19
1.6 小结.................................................................................................................................................. 21
第2章 Hadoop集群搭建................................................................................................ 22
2.1 虚拟机简介..................................................................................................................................... 22
2.2 虚拟机配置..................................................................................................................................... 24
2.3 Linux系统设置.............................................................................................................................. 31
2.4 Apache版本Hadoop集群搭建................................................................................................. 35
2.5 CDH版本的Hadoop集群搭建................................................................................................. 43
2.5.1 安装前期准备................................................................................................................... 43
2.5.2 Cloudera Manager安装................................................................................................. 45
2.5.3 CDH安装.......................................................................................................................... 46
2.6 小结.................................................................................................................................................. 54
第3章 Hadoop基础与原理............................................................................................ 55
3.1 MapReduce原理介绍.................................................................................................................. 55
3.1.1 MapReduce的框架介绍................................................................................................ 55
3.1.2 Mapreduce的执行步鄹.................................................................................................. 57
3.2 HDFS原理介绍.............................................................................................................................. 58
3.2.1 HDFS是什么.................................................................................................................... 58
3.2.2 HDFS架构介绍................................................................................................................ 58
3.3 HDFS实战...................................................................................................................................... 61
3.3.1 Linux下的HDFS的操作............................................................................................... 61
3.3.2 Java操作HDFS............................................................................................................... 65
3.4 Yarn原理介绍................................................................................................................................ 69
3.5 小结.................................................................................................................................................. 71
第4章 Hadoop介绍....................................................................................................... 72
4.1 ZooKeeper原理介绍..................................................................................................................... 72
4.1.1 ZooKeeper基本概念....................................................................................................... 72
4.1.2 ZooKeeper工作原理....................................................................................................... 73
4.1.3 工作流程............................................................................................................................ 77
4.2 ZooKeeper实战............................................................................................................................. 79
4.3 小结.................................................................................................................................................. 88
第5章 MapReduce实战................................................................................................ 89
5.1 前期准备.......................................................................................................................................... 89
5.2 查看YARN上的任务................................................................................................................... 96
5.3 加载配置文件................................................................................................................................. 96
5.4 MapReduce实战........................................................................................................................... 97
5.5 小结................................................................................................................................................ 123
第6章 HBase实战....................................................................................................... 124
6.1 HBase简介及架构...................................................................................................................... 124
6.2 HBase安装................................................................................................................................... 130
6.3 HBase实战................................................................................................................................... 132
6.4 Java操作HBase......................................................................................................................... 135
6.5 Scala操作HBase........................................................................................................................ 139
6.6 小结................................................................................................................................................ 143
第7章 Hive实战.......................................................................................................... 144
7.1 Hive介绍和架构......................................................................................................................... 144
7.2 Hive的环境搭建......................................................................................................................... 146
7.3 Hive数据类型和表结构............................................................................................................ 147
7.4 Hive分区、桶与倾斜................................................................................................................. 149
7.5 Hive的Linux操作..................................................................................................................... 151
7.6 Hive常用命令.............................................................................................................................. 157
7.7 Java操作Hive............................................................................................................................. 158
第8章 Scala实战......................................................................................................... 165
8.1 Scala简介与安装........................................................................................................................ 165
8.2 IntelliJ IDEA的安装和配置...................................................................................................... 166
8.2.1 软件介绍......................................................................................................................... 167
8.2.2 软件安装......................................................................................................................... 167
8.2.3 软件配置......................................................................................................................... 169
8.3 IntelliJ IDEA建立Maven项目................................................................................................ 173
8.4 基础语法....................................................................................................................................... 179
8.5 函数................................................................................................................................................ 182
8.6 控制语句....................................................................................................................................... 184
8.7 函数式编程................................................................................................................................... 187
8.8 模式匹配....................................................................................................................................... 193
8.9 类和对象....................................................................................................................................... 194
8.10 Scala 异常处理......................................................................................................................... 198
8.11 Trait(特征)............................................................................................................................ 199
8.12 Scala 文件 I/O.......................................................................................................................... 201
8.13 作业.............................................................................................................................................. 202
第9章 Flume实战........................................................................................................ 211
9.1 Flume概述.................................................................................................................................... 211
9.2 Flume的结构............................................................................................................................... 212
9.3 Apache搭建Flume..................................................................................................................... 215
第10章 Kafka实战...................................................................................................... 219
10.1 Kafka概述................................................................................................................................. 219
10.1.1 简介................................................................................................................................ 219
10.1.2 使用场景....................................................................................................................... 221
10.2 Kafka设计原理........................................................................................................................ 222
10.3 Kafka主要配置........................................................................................................................ 226
10.4 Kafka命令................................................................................................................................. 228
10.5 Java操作Kafka....................................................................................................................... 229
10.5.1 生产者........................................................................................................................... 229
10.5.2 消费者........................................................................................................................... 231
10.6 Flume连接Kafka..................................................................................................................... 233
第11章 Spark实战....................................................................................................... 237
11.1 Spark概述.................................................................................................................................. 237
11.2 Spark基本概念......................................................................................................................... 237
11.3 Spark算子实战及功能描述.................................................................................................... 241
11.3.1 Value型Transformation算子................................................................................. 241
11.3.2 Key-Value型Transformation算子........................................................................ 245
11.3.3 Actions算子................................................................................................................. 248
11.4 Spark Streaming实战............................................................................................................... 250
11.5 Spark SQL和DataFrame实战.............................................................................................. 257
第12章 大数据网站日志分析项目................................................................................ 270
12.1 项目介绍..................................................................................................................................... 270
12.2 网站离线项目............................................................................................................................ 271
12.2.1 业务框架图................................................................................................................... 271
12.2.2 子服务“趋势分析”详解............................................................................................. 271
12.2.3 表格的设计................................................................................................................... 277
12.2.4 提前准备....................................................................................................................... 278
12.2.5 项目步骤....................................................................................................................... 291
12.3 网站实时项目............................................................................................................................ 303
12.3.1 业务框架图................................................................................................................... 303
12.3.2 子服务“当前在线”详解............................................................................................. 303
12.3.3 表格的设计................................................................................................................... 308
12.3.4 提前准备....................................................................................................................... 309
12.3.5 项目步骤....................................................................................................................... 329
12.4 小结.............................................................................................................................................. 343