猜你喜欢
Spark与Hadoop大数据分析/大数据技术丛书

Spark与Hadoop大数据分析/大数据技术丛书

书籍作者:文卡特·安卡姆 ISBN:9787111569411
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:4757
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

  本书比较系统地讲解了利用Hadoop和Spark及其生态系统里的一系列工具进行大数据分析的方法,既涵盖ApacheSpark和Hadoop的基础知识,又深入探讨所有Spark组件——SparkCore、SparkSQL、DataFrame、DataSet、普通流、结构化流、MLlib、Graphx,以及Hadoop的核心组件(HDFS、MapReduce和Yarn)等,并配套详细的实现示例,是快速掌握大数据分析基础架构及其实施方法的详实参考。

  全书共10章,第1章从宏观的角度讲解大数据分析的概念,并介绍在Hadoop和Spark平台上使用的工具和技术,以及一些*常见的用例;第2章介绍Hadoop和Spark平台的基础知识;第3章深入探讨并学习Spark;第4章主要介绍DataSourcesAPI、DataFrameAPI和新的DatasetAPI;第5章讲解如何用SparkStreaming进行实时分析;第6章介绍Spark和Hadoop配套的笔记本和数据流;第7章讲解Spark和Hadoop上的机器学习技术;第8章介绍如何构建推荐系统;第9章介绍如何使用GraphX进行图分析;第10章介绍如何使用SparkR。


作者简介

  文卡特·安卡姆(VenkatAnkam)

  有超过18年的IT经验和5年以上的大数据技术经验,与客户一起设计和开发过可扩展的大数据应用程序。他在利用Hadoop和Spark进行大数据分析方面拥有丰富的经验,与全球很多客户进行了合作。

  他是Cloudera认证的Hadoop开发者和管理员,也是Databricks认证的Spark开发者。他还是一些全球Hadoop和Spark会议小组的创始人和主持人,热爱与社区分享知识。


编辑推荐

  数据分析师和数据科学家的便捷参考指南

  系统讲解利用Hadoop和Spark及其生态系统里的一系列工具进行大数据分析的方法及实践

  大数据技术的发展方向正在从MapReduce转移到Spark。因此,本书比较系统地讲解了利用Hadoop和Spark及其生态系统里的一系列工具进行大数据分析的方法,深入分析了Spark对比MapReduce的优势,总结了以内存速度进行计算的优势。书中不仅讲解了用于构建大数据分析应用程序的DataFrameAPI、DataSourcesAPI以及新的DatasetAPI,还介绍了如何利用SparkStreaming、ApacheKafka和HBase搭配进行实时数据分析的技术,以构建流式应用程序。新的结构化流概念是用IOT(物联网)用例来讲解的。书中讲解的机器学习技术利用了MLlib、ML流水线和SparkR,而图分析技术则涵盖了Spark的GraphX和GraphFrames组件。

  本书还将介绍如何使用基于网络的笔记本(如Jupyter、ApacheZeppelin)以及数据流工具ApacheNiFi对数据进行分析和可视化。

  通过阅读本书,你将:

  学习并实践在Hadoop集群的Spark上借助Spark和Hadoop配套的各种工具进行大数据分析的工具和技术

  了解Hadoop和Spark生态系统的所有组件

  了解Spark的所有组件:SparkCore、SparkSQL、DataFrame、DataSet、传统流和结构化流、MLlib、ML流水线和GraphX

  利用SparkCore、SparkSQL、传统流及结构化流进行批量和实时数据分析

  利用MLlib、ML流水线、H2O、GraphX、SparkR和Hivemall掌握数据科学和机器学习技术


前言

  TheTranslator'sWords译者序

  目前,大数据已经成了一个热点,各个专业领域都在利用大数据技术解决复杂的业务问题。与此同时,很多业务人员和技术人员对大数据技术还不太了解,觉得大数据技术背后的技术平台很复杂、很深奥。而本书就可以让读者循序渐进地熟悉目前主流的大数据技术平台。

  本书比较系统地讲解了利用Hadoop和Spark及其生态系统里的一系列工具进行大数据分析的方法,并配套了详细的示例,是一本比较实用的参考书。

  大家可以按照本书的内容循序渐进地学习。本书的难度并不大,绝大部分内容都配有详细的说明和实践步骤。偶尔需要补充一些背景知识,我会尽力用译者注的形式进行说明,希望对读者能有所帮助。

  我们可以看到,Hadoop和Spark实际上并不是相互竞争的关系,二者可以搭配使用,相互补充,为大数据分析人员提供一个全面和统一的技术框架,使之能够专注于业务需求,而无须在技术实现层面花费太多精力。

  本书的定位主要是在大数据技术平台的搭建和配置方面。虽然原书书名是《BigDataAnalytics》,但本书的核心内容是大数据分析的基础架构及实施方法,而不是大数据的分析方法,比如书中对于示例中用到的机器学习模型只有比较简略的讲解。

  从这个角度来说,本书比较适合大数据分析的技术支持人员,以及对机器学习算法和模型已有一定造诣,希望学习利用最新的技术平台进行分析的独立研究者。

  如果读者对机器学习的算法和模型感兴趣,可以参考我之前翻译的《预测分析:R语言实现》(书号是:978-7-111-55354-0),该书比较深入地讲解了机器学习常用的一些模型,并且有详细的示例帮助读者进行练习。

  和以往一样,我在GitHub上为本书开通了一个讨论区,网址是https://github.com/coderLMN/BigDataAnalytics/issues。如果读者在阅读中遇到问题或错误,欢迎来这里提出,更欢迎参与讨论。谢谢!

  根据我之前的经验,这样的讨论区对于不少读者来说是很实用的。他们不仅能提出问题、参与讨论,也可以提出自己的观点和实现方法,让自己、译者、其他读者都能从中获益。

  在此我要感谢贾立恒等读者在讨论中给我带来的启发。另外,他们在学习过程中表现出来的认真和严谨对我也是一种无声的督促,让我在翻译的过程中不敢懈怠,时刻提醒自己要对翻译出来的文字负责。

  最后,我要感谢我的家人,他们对我的翻译工作给予了极大的耐心和理解,让我能专心地从事这项我热爱的工作。

  吴今朝

  Preface前言

  本书讲解了ApacheSpark和Hadoop的基础知识,以及如何通过简单的方式将它们与最常用的工具和技术集成在一起。所有Spark组件(SparkCore、SparkSQL、DataFrame、Dataset、ConventionalStreaming、StructuredStreaming、MLlib、GraphX和Hadoop核心组件)、HDFS、MapReduce和Yarn都在Spark+Hadoop集群的实现示例中进行了深入的探讨。

  大数据分析行业正在从MapReduce转向Spark。因此,本书深入讨论了Spark相比MapReduce的优势,从而揭示出它在内存计算速度方面的好处。我们还会讲解如何运用DataFrameAPI、DataSourcesAPI,以及新的DatasetAPI来构建大数据分析应用程序。书中还讲解了如何使用SparkStreaming配合ApacheKafka和HBase进行实时数据分析,以帮助构建流式应用程序(streamingapplication)。新的结构化流(StructuredStreaming)概念会通过物联网(InternetofThings,IOT)用例来解释。在本书中,机器学习技术会使用MLLib、机器学习流水线和SparkR来实现;图分析则会利用Spark的GraphX和GraphFrames组件包来进行。

  本书还介绍了基于Web的笔记本(如Jupyter和ApacheZeppelin)和数据流工具ApacheNiFi,它们用于分析和可视化数据,以及利用Livy服务器把Spark作为一个服务提供给用户。

  本书包含的内容

  第1章从宏观的角度讲解了大数据分析的概念,并介绍了在ApacheHadoop和ApacheSpark平台上使用的工具和技术,以及一些最常见的用例。

  第2章介绍了Hadoop和Spark平台的基础知识。该章还讲解了Spark与MapReduce有何不同,以及Hadoop平台上的Spark有哪些优点。随后介绍如何安装集群,以及如何设置分析所需的工具。

  第3章介绍了Spark的更深层概念,例如SparkCore内部结构、如何使用键值对RDD、Spark程序的生命周期、如何构建Spark应用程序、如何持久化和缓存RDD,以及如何使用Spark资源管理器(Standalone、Yarn和Mesos)。

  第4章涵盖了DataSourcesAPI、DataFramesAPI和新的DatasetAPI。本章会特别重点地讲解DataFrameAPI的用途,以及如何对具有内置数据源(CSV、Json、Parquet、ORC、JDBC和Hive)和外部数据源(如Avro、Xml和Pandas)的DataFrameAPI进行分析。Spark-on-HBase连接器部分解释了如何使用DataFrame分析Spark中的HBase数据。该章还讲解了如何使用SparkSQL作为分布式SQL引擎。

  第5章讲解了实时分析的含义,以及SparkStreaming与Storm、trident、Flink和Samza等其他实时引擎的不同之处。其中描述了具有输入数据源和输出存储的SparkStreaming的架构,涵盖无状态和有状态的流处理,以及使用基于接收器的方法和直接方法,把Kafka作为数据源,把HBase作为存储。该章还讲解了应用程序在驱动进程(Driver)或执行进程(Executor)出现故障的情况下,有关Spark流的容错概念。结构化流(StructuredStreaming)的概念会通过一个物联网(IOT)的用例来解释。

  第6章用Jupyter、Zeppelin和Hue等工具介绍了基于Web的笔记本。该章还介绍了LivyREST服务器,它用于把Spark构建为服务,并在多个用户之间共享SparkRDD。该章还介绍了ApacheNiFi,它可以利用Spark和Hadoop构建数据流。

  第7章旨在更深入地讲解利用Spark和Hadoop来实现数据科学中用到的机器学习技术。该章介绍了Spark使用的机器学习算法,包括垃圾邮件的检测、实现和构建机器学习流水线(machinelearningpipeline)的方法,还讲解了使用H2O和Hivemall实现机器学习的方法。

  第8章详细介绍了协同过滤技术,并解释了如何使用Spark和Mahout构建实时推荐引擎。

  第9章介绍了图处理、GraphX与Giraph的区别,以及GraphX的各种图运算,如创建图、计数、过滤、度、三元组、修改、连接、属性变换、顶点RDD和边RDD运算等。它还通过一个航班分析用例讲解了GraphX算法,如三角计数和连通分量。该章还介绍了基于DataFrame的新GraphFrames组件,用来解释模式发现(motiffinding)这样的一些概念。

  第10章讲解了R语言和SparkR之间的差异,以及如何开始通过shell脚本在local、standalone和Yarn模式下使用SparkR。该章还介绍了如何把SparkR与RStudio、DataFrame、机器学习算法,以及ApacheZeppelin配套使用。

  学习本书所需的资源

  为了方便入门,本书中的实践练习会在Cloudera、Hortonworks、MapR或预构建的SparkforHadoop的虚拟机(VM)上演示。同样的练习也可以在更大的集群上运行。

  在你的笔记本电脑上使用虚拟机的必要条件有:

  内存:8GB及以上

  CPU:至少2个虚拟CPU

  必须为Windows或Linux操作系统安装最新版本的VMWareplayer或OracleVirtualBox

  Mac上需要安装最新版本的OracleVirtualBox或VMWareFusion

  需要在BIOS里启用虚拟化

  浏览器:推荐使用Chrome25+、IE9+、Safari6+或Firefox18+(HDPSandbox无法在IE10上运行)

  Putty

  WinScP

  在本书的各章中会使用Python和Scala编程语言,其中Python的侧重程度更高。我们假设读者具备Java、Scala、Python、SQL或R语言的初级编程背景,并具有基本的Linux经验。如果读者在Hadoop平台上的大数据环境中有一些工作经验,就能比较快捷地开始构建Spark应用程序。

  本书的目标读者

  虽然本书主要是针对数据分析师和数据科学家编写的,但它也会对架构师、程序员和大数据从业者有所帮助。

  对于数据分析师:本书可以用作数据分析人员在Spark和Hadoop上开发分析应用程序的参考指南。

  对于数据科学家:本书可以用作在Spark和Hadoop上构建数据产品的参考指南。

  对于架构师:本书提供了一个完整生态系统的概述和一些大数据分析应用程序的示例,有助于构建大数据分析的解决方案。

  对于程序员:本书讲解了用Scala和Python语言构建大数据应用程序所使用的API和技术。

  对于大数据从业者:本书有助于了解新的范例和技术,并做出正确的决定。

  下载示例代码

  你可以从http://www.packtpub.com的账户下载此书的示例代码文件。如果你是通过其他渠道购买了此书,可以访问http://www.packtpub.com/support并注册,以便将文件直接发送给你。

  你可以通过以下步骤下载代码文件:

  (1)使用你的电子邮件地址和密码登录或注册Packt网站。

  (2)将鼠标指针悬停在网页顶部的SUPPORT选项卡上。

  (3)点击CodeDownloads&Errata。

  (4)在Search输入框里输入本书的书名。

  (5)选择你要下载代码文件的图书。

  (6)从你购买此书的下拉菜单中选择要下载的代码。

  (7)点击CodeDownload。

  你也可以通过点击Packt出版社网站上该图书对应网页上的CodeFiles按钮来下载代码文件。这个页面可以通过在搜索框中输入图书的名称来访问。请注意,你需要登录到你的Packt账户。

  下载文件后,请确保你使用以下软件的最新版本来解压缩或提取文件夹:

  WinRAR/7-ZipforWindows

  Zipeg/iZip/UnRarXforMac

  7-Zip/PeaZipforLinux

  该书配套的代码也托管在GitHub上,网址为https://github.com/PacktPublishing/big-data-analytics。在https://github.com/PacktPublishing/上还有其他代码库,里面有丰富的书籍和视频分类。去看一下吧!

  下载本书的彩色图像

  本书还提供了一个PDF文件,其中包含本书中使用的截图/图表的彩色图像。这些彩色图像会帮助你更好地了解输出的变化。你可以从http://www.packtpub.com/sites/default/files/downloads/BigDataAnalyticsWithSparkAndHadoop_ColorImages.pdf下载此文件。


目录

译者序

前言

第1章 从宏观视角看大数据分析 1

1.1 大数据分析以及 Hadoop 和 Spark 在其中承担的角色 3

1.1.1 典型大数据分析项目的生命周期 4

1.1.2 Hadoop和Spark承担的角色 6

1.2 大数据科学以及Hadoop和Spark在其中承担的角色 6

1.2.1 从数据分析到数据科学的根本性转变 6

1.2.2 典型数据科学项目的生命周期 8

1.2.3 Hadoop和Spark 承担的角色 9

1.3 工具和技术 9

1.4 实际环境中的用例 11

1.5 小结 12

第2章 Apache Hadoop和Apache Spark入门 13

2.1 Apache Hadoop概述 13

2.1.1 Hadoop 分布式文件系统 14

2.1.2 HDFS 的特性 15

2.1.3 MapReduce 16

2.1.4 MapReduce 的特性 17

2.1.5 MapReduce v1与MapReduce v2对比 17

2.1.6 YARN 18

2.1.7 Hadoop上的存储选择 20

2.2 Apache Spark概述 24

2.2.1 Spark 的发展历史 24

2.2.2 Apache Spark 是什么 25

2.2.3 Apache Spark 不是什么 26

2.2.4 MapReduce 的问题 27

2.2.5 Spark 的架构 28

2.3 为何把 Hadoop 和 Spark 结合使用 31

2.3.1 Hadoop 的特性 31

2.3.2 Spark 的特性 31

2.4 安装 Hadoop 和 Spark 集群 33

2.5 小结 36

第3章 深入剖析Apache Spark 37

3.1 启动 Spark 守护进程 37

3.2 学习Spark的核心概念 39

3.3 Spark 程序的生命周期 55

3.4 Spark 应用程序 59

3.5 持久化与缓存 62

3.6 Spark 资源管理器:Standalone、YARN和Mesos 63

3.7 小结 67

第4章 利用Spark SQL、Data-Frame和Dataset进行大数据分析 69

4.1 Spark SQL 的发展史 70

4.2 Spark SQL 的架构 71

4.3 介绍Spark SQL的四个组件 72

4.4 DataFrame 和 Dataset 的演变 74

4.5 为什么要使用 Dataset 和DataFrame 75

4.6 何时使用 RDD、Dataset 和DataFrame 78

4.7 利用 DataFrame 进行分析 78

4.8 利用 Dataset API 进行分析 85

4.9 Data Sources API 87

4.10 把 Spark SQL 作为分布式 SQL引擎 97

4.11 Hive on Spark 100

4.12 小结 100

第5章 利用Spark Streaming和Structured Streaming进行实时分析 102

5.1 实时处理概述 103

5.2 Spark Streaming 的架构 104

5.3 Spark Streaming 的变换和动作 109

5.4 输入数据源和输出存储 111

5.5 使用 Kafka 和 HBase 的 Spark Streaming 113

5.6 Spark Streaming 的高级概念 118

5.7 监控应用程序 122

5.8 结构化流概述 123

5.9 小结 129

第6章 利用Spark和Hadoop的笔记本与数据流 130

6.1 基于网络的笔记本概述 130

6.2 Jupyter概述 131

6.3 Apache Zeppelin概述 135

6.4 Livy REST 作业服务器和 Hue笔记本 140

6.5 用于数据流的 Apache NiFi概述 148

6.6 小结 152

第7章 利用Spark和Hadoop进行机器学习 153

7.1 机器学习概述 153

7.2 在 Spark 和 Hadoop 上进行机器学习 154

7.3 机器学习算法 155

7.4 机器学习算法示例 160

7.5 构建机器学习流水线 163

7.6 利用 H2O 和 Spark 进行机器学习 167

7.7 Hivemall概述 169

7.8 Hivemall for Spark概述 170

7.9 小结 170

第8章 利用Spark和Mahout构建推荐系统 171

8.1 构建推荐系统 171

8.2 推荐系统的局限性 173

8.3 用 MLlib 实现推荐系统 173

8.4 Mahout 和 Spark 的集成 181

8.5 小结 189

第9章 利用GraphX进行图分析 190

9.1 图处理概述 190

9.2 GraphX 入门 193

9.3 利用 GraphX 分析航班数据 205

9.4 GraphFrames概述 209

9.5 小结 212

第10章 利用SparkR进行交互式分析 213

10.1 R语言和SparkR概述 213

10.2 SparkR 入门 216

10.3 在 SparkR 里使用 DataFrame 223

10.4 在 RStudio 里使用 SparkR 228

10.5 利用 SparkR 进行机器学习 230

10.6 在 Zeppelin 里使用 SparkR 233

10.7 小结 234