本书用于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两大生态系统全局观。
余辉,中国科学院大学硕士研究生毕业,研究方向为云计算和大数据。现供职于某上市公司担任技术经理,并在 Oracle OAEC人才产业集团大数据学院担任大数据讲师。 曾在清华大学电子工程系NGNLab研究室担任软件工程师。
第1章 Hadoop概述 1
1.1 Hadoop简介 1
1.2 Hadoop版本和生态系统 3
1.3 MapReduce简介 7
1.4 HDFS简介 8
1.5 Eclipse Java开发环境搭建 10
1.5.1 Java安装 10
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集群搭建 36
2.5 CDH版本Hadoop集群搭建 44
2.5.1 安装前期准备 44
2.5.2 Cloudera Manager安装 45
2.5.3 CDH安装 46
2.6 小结 55
第3章 Hadoop基础与原理 56
3.1 MapReduce原理介绍 56
3.1.1 MapReduce的框架介绍 56
3.1.2 MapReduce的执行步骤 58
3.2 HDFS原理介绍 59
3.2.1 HDFS是什么 59
3.2.2 HDFS架构介绍 59
3.3 HDFS实战 62
3.3.1 HDFS客户端的操作 62
3.3.2 Java操作HDFS 65
3.4 YARN原理介绍 69
3.5 小结 71
第4章 ZooKeeper实战 72
4.1 ZooKeeper原理介绍 72
4.1.1 ZooKeeper基本概念 72
4.1.2 ZooKeeper工作原理 73
4.1.3 ZooKeeper工作流程 76
4.2 ZooKeeper安装 78
4.3 ZooKeeper实战 80
4.3.1 ZooKeeper客户端的操作 80
4.3.2 Java操作ZooKeeper 81
4.3.3 Scala操作ZooKeeper 85
4.4 小结 87
第5章 MapReduce实战 88
5.1 前期准备 88
5.2 查看YARN上的任务 95
5.3 加载配置文件 95
5.4 MapReduce实战 96
5.5 小结 121
第6章 HBase实战 122
6.1 HBase简介及架构 122
6.2 HBase安装 127
6.3 HBase实战 129
6.3.1 HBase客户端的操作 129
6.3.2 Java操作HBase 132
6.3.3 Scala操作HBase 136
6.4 小结 140
第7章 Hive实战 141
7.1 Hive介绍和架构 141
7.2 Hive数据类型和表结构 143
7.3 Hive分区、桶与倾斜 144
7.4 Hive安装 146
7.5 Hive实战 148
7.5.1 Hive客户端的操作 148
7.5.2 Hive常用命令 154
7.5.3 Java操作Hive 155
7.6 小结 161
第8章 Scala实战 162
8.1 Scala简介与安装 162
8.2 IntelliJ IDEA开发环境搭建 164
8.2.1 IntelliJ IDEA简介 164
8.2.2 IntelliJ IDEA安装 164
8.2.3 软件配置 166
8.3 IntelliJ IDEA建立Maven项目 171
8.4 基础语法 176
8.5 函数 179
8.6 控制语句 181
8.7 函数式编程 184
8.8 模式匹配 189
8.9 类和对象 191
8.10 Scala 异常处理 194
8.11 Trait(特征) 195
8.12 Scala文件I/O 196
8.13 作业 198
8.13.1 九九乘法表 198
8.13.2 冒泡排序 199
8.13.3 设计模式Command 200
8.13.4 集合对称判断 202
8.13.5 综合题 204
8.14 小结 206
第9章 Flume实战 207
9.1 Flume概述 207
9.2 Flume的结构 208
9.3 Flume安装 211
9.4 Flume实战 212
9.5 小结 214
第10章 Kafka实战 215
10.1 Kafka概述 215
10.1.1 简介 215
10.1.2 使用场景 217
10.2 Kafka设计原理 218
10.3 Kafka主要配置 222
10.4 Kafka客户端操作 224
10.5 Java操作Kafka 226
10.5.1 生产者 226
10.5.2 消费者 228
10.6 Flume连接Kafka 229
10.7 小结 233
第11章 Spark实战 234
11.1 Spark概述 234
11.2 Spark基本概念 234
11.3 Spark算子实战及功能描述 238
11.3.1 Value型Transformation算子 238
11.3.2 Key-Value型Transformation算子 242
11.3.3 Actions算子 245
11.4 Spark Streaming实战 248
11.5 Spark SQL和DataFrame实战 253
11.6 小结 266
第12章 大数据网站日志分析项目 267
12.1 项目介绍 267
12.2 网站离线项目 267
12.2.1 业务框架图 267
12.2.2 子服务“趋势分析”详解 268
12.2.3 表格的设计 272
12.2.4 提前准备 274
12.2.5 项目步骤 287
12.3 网站实时项目 297
12.3.1 业务框架图 297
12.3.2 子服务“当前在线”详解 297
12.3.3 表格的设计 302
12.3.4 提前准备 304
12.3.5 项目步骤 327
12.4 小结 337
第 1 章? Hadoop概述 ?
1.1 Hadoop简介1. Hadoop的由来Hadoop是Doug Cutting(Apache Lucene创始人)开发的、使用广泛的文本搜索库。Hadoop起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是Lucene项目的一部分。2. Hadoop名字的起源Hadoop这个名字不是一个缩写,它是一个虚构的名字。该项目的创建者Doug Cutting如此解释Hadoop的得名:“这个名字是我孩子给一头吃饱了的棕黄色大象命名的。我的命名标准就是简短、容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子是这方面的高手。Googol就是由小孩命名的。”(Google来源于Googol一词。GooGol指的是10的100次幂(方),代表互联网上的海量资源。公司创建之初,肖恩?安德森在搜索该名字是否已经被注册时,将Googol误打成了Google。)Hadoop及其子项目和后继模块所使用的名字往往也与其功能不相关,经常用一头大象或其他动物主题(例如:Pig)。较小的各个组成部分给予更多描述性(因此也更俗)的名称。这是一个很好的原则,因为它意味着可以大致从其名字猜测其功能,例如,jobtracker 的任务就是跟踪MapReduce作业。从头开始构建一个网络搜索引擎是一个雄心勃勃的目标,不只是要编写一个复杂的、能够抓取和索引网站的软件,还需要面临着没有专业运行团队支持运行它的挑战,因为它有那么多独立部件。同样昂贵的还有:据Mike Cafarella和Doug Cutting估计,一个支持此10亿页的索引,需要价值约50万美元的硬件投入,每月运行费用还需要3万美元。 不过,他们相信这是一个有价值的目标,因为这会开放并最终使搜索引擎算法普及化。Nutch项目开始于2002年,一个可工作的抓取工具和搜索系统很快浮出水面。但他们意识到,他们的架构将无法扩展到拥有数十亿网页的网络。在2003年发表的一篇描述Google分布式文件系统(简称GFS)的论文为他们提供了及时的帮助,文中称Google正在使用此文件系统。GFS或类似的东西,可以解决他们在网络抓取和索引过程中产生的大量的文件的存储需求。具体而言,GFS会省掉管理所花的时间,如管理存储节点。在2004年,他们开始写一个开放源码的应用,即Nutch的分布式文件系统(NDFS)。2004年,Google发表了论文,向全世界介绍了MapReduce。2005年初,Nutch的开发者在Nutch上有了一个可工作的MapReduce应用,到当年年中,所有主要的Nutch算法被移植到使用MapReduce和NDFS来运行。Nutch中的NDFS和MapReduce实现的应用远不只是搜索领域,在2006年2月,他们从Nutch转移出来成为一个独立的Lucene子项目,称为Hadoop。大约在同一时间,Doug Cutting加入雅虎,Yahoo提供一个专门的团队和资源将Hadoop发展成一个可在网络上运行的系统(见后文的补充材料)。在2008年2月,雅虎宣布其搜索引擎产品部署在一个拥有1万个内核的Hadoop集群上。 2008年1月,Hadoop已成为Apache顶级项目,证明它是成功的,是一个多样化、活跃的社区。通过这次机会,Hadoop成功地被雅虎之外的很多公司应用,如Last.fm、Facebook和《纽约时报》。一些应用在Hadoop维基有介绍,Hadoop维基的网址为wiki.apache.org/hadoop/PoweredBy。有一个良好的宣传范例,《纽约时报》使用亚马逊的EC2云计算将4 TB的报纸扫描文档压缩,转换为用于Web的PDF文件。 这个过程历时不到24小时,使用100台机器运行,如果不结合亚马逊的按小时付费的模式(即允许《纽约时报》在很短的一段时间内访问大量机器)和Hadoop易于使用的并行程序设计模型,该项目很可能不会这么快开始启动。2008年4月,Hadoop打破世界纪录,成为最快排序1 TB数据的系统,运行在一个910节点的集群,Hadoop在209秒内排序了1 TB的数据(还不到三分半钟),击败了前一年的297秒冠军。同年11月,谷歌在报告中声称,它的MapReduce实现执行1 TB数据的排序只用了68秒。在2009年5月,有报道宣称Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62秒时间。构建互联网规模的搜索引擎需要大量的数据,因此需要大量的机器来进行处理。Yahoo!Search包括四个主要组成部分:Crawler,从因特网下载网页;WebMap,构建一个网络地图;Indexer,为页面构建一个反向索引;Runtime(运行时),回答用户的查询。WebMap是一幅图,大约包括一万亿条边(每条代表一个网络链接)和一千亿个节点(每个节点代表不同的网址)。创建和分析此类大图需要大量计算机运行若干天。在2005年初,WebMap所用的基础设施名为Dreadnaught,需要重新设计以适应更多节点的需求。Dreadnaught成功地从20个节点扩展到600个,但还需要一个重新的设计,以进一步扩大。Dreadnaught与MapReduce有许多相似的地方,但灵活性更强,结构更少。具体说来,Dreadnaught作业可以将输出发送到此作业下一阶段中的每一个分段(fragment),但排序是在库函数中完成的。在实际情形中,大多数WebMap阶段都是成对存在的,对应于MapReduce。因此,WebMap应用并不需要为了适应MapReduce而进行大量重构。Eric Baldeschwieler(Eric14)组建了一个小团队,他们开始设计并原型化一个新的框架(原型为GFS和MapReduce,用C 语言编写),打算用它来替换Dreadnaught。尽管当务之急是需要一个WebMap新框架,但显然,标准化对于整个Yahoo! Search平台至关重要,并且通过使这个框架泛化,足以支持其他用户,这样他们才能够充分运用对整个平台的投资。与此同时,雅虎在关注Hadoop(当时还是Nutch的一部分)及其进展情况。2006年1月,雅虎聘请了Doug Cutting,一个月后,决定放弃自己的原型,转而使用Hadoop。相较于雅虎自己的原型和设计,Hadoop的优势在于它已经在20个节点上实际应用过。这样一来,雅虎便能在两个月内搭建一个研究集群,并着手帮助真正的客户使用这个新的框架,速度比原来预计的快许多。另一个明显的优点是Hadoop已经开源,较容易(虽然远没有那么容易!)从雅虎法务部门获得许可在开源方面进行工作。因此,雅虎在2006年初设立了一个200个节点的研究集群,他们将WebMap的计划暂时搁置,转而为研究用户支持和发展Hadoop。3. Hadoop大事记2004年,最初的版本(现在称为HDFS和MapReduce)由Doug Cutting和Mike Cafarella开始实施。2005年12月,Nutch移植到新的框架,Hadoop在20个节点上稳定运行。2006年1月,Doug Cutting加入雅虎。2006年2月,Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。2006年2月,雅虎的网格计算团队采用Hadoop。2006年4月,标准排序(10 GB每个节点)在188个节点上运行47.9个小时。2006年5月,雅虎建立了一个300个节点的Hadoop研究集群。2006年5月,标准排序在500个节点上运行42个小时(硬件配置比4月的更好)。2006年11月,研究集群增加到600个节点。2006年12月,标准排序在20个节点上运行1.8个小时,100个节点3.3小时,500个节点5.2小时,900个节点7.8个小时。2007年1月,研究集群到达900个节点。2007年4月,研究集群达到两个1000个节点的集群。2008年4月,赢得世界最快1 TB数据排序在900个节点上用时209秒。2008年10月,研究集群每天装载10 TB的数据。2009年3月,17个集群总共24 000台机器。2009年4月,赢得每分钟排序,59秒内排序500 GB(在1400个节点上)和173分钟内排序100 TB数据(在3400个节点上)。1.2 Hadoop版本和生态系统1. Hadoop版本的优缺点目前市面上Hadoop版本主要有两种:Apache版本和CDH版本。(1)Aapche 版本的Hadoop官网:hadoop.apache.org/Aapche Hadoop 优势:对硬件要求低。Aapche Hadoop 劣势:搭建烦琐,维护烦琐,升级烦琐,添加组件烦琐。Apache版本Hadoop集群中YARN的界面如图1-1所示,HDFS的界面图1-2 所示。 图1-1 YARN的界面 图1-2 HDFS的界面(2)CDH版本的Hadoop官网:https://www.cloudera.com/CDH优势:搭建方便,维护较为容易,升级以及迁移容易,添加组件容易。CDH缺点:对硬件要求高。Cloudera Manager是一个管理CDH的端到端的应用。主要作用包括:管理、监控、诊断、集成。CDH的Hadoop版本集群中CDH管理界面如图1-3所示。
这本书操作细节讲很多,方便入门
入门的神书,价值万金
书对新生很友好,推荐一看!
实战经验分享
确实很好的一本书~想要系统学习的人抓紧时间买起~
我买了这本书,感觉讲的很细致,而且还有实例,对大数据不熟悉的人可以尝试一下这本书,让你对大数据有一个更深的了解和印象。
本书非常适合大数据爱好者快速入门的一本书籍,书中有每个大数据组件的真实案例,特别是作者还为读者搭建好了集群。