前 言
本书讲解了Apache Spark和Hadoop的基础知识,以及如何通过简单的方式将它们与最常用的工具和技术集成在一起。所有Spark组件(Spark Core、Spark SQL、DataFrame、Dataset、Conventional Streaming、Structured Streaming、MLlib、GraphX和Hadoop核心组件)、HDFS、MapReduce和Yarn 都在 Spark + Hadoop 集群的实现示例中进行了深入的探讨。
大数据分析行业正在从 MapReduce 转向Spark。因此,本书深入讨论了 Spark 相比 MapReduce 的优势,从而揭示出它在内存计算速度方面的好处。我们还会讲解如何运用 DataFrame API、Data Sources API,以及新的 Dataset API 来构建大数据分析应用程序。书中还讲解了如何使用 Spark Streaming 配合 Apache Kafka 和 HBase 进行实时数据分析,以帮助构建流式应用程序(streaming application)。新的结构化流(Structured Streaming)概念会通过物联网(Internet of Things,IOT)用例来解释。在本书中,机器学习技术会使用 MLLib、机器学习流水线和 SparkR 来实现;图分析则会利用Spark的GraphX 和GraphFrames 组件包来进行。
本书还介绍了基于Web的笔记本(如Jupyter和Apache Zeppelin)和数据流工具Apache NiFi,它们用于分析和可视化数据,以及利用 Livy 服务器把Spark作为一个服务提供给用户。
在本书的各章中会使用 Python 和 Scala 编程语言,其中 Python 的侧重程度更高。我们假设读者具备 Java、Scala、Python、SQL 或 R 语言的初级编程背景,并具有基本的 Linux 经验。如果读者在 Hadoop 平台上的大数据环境中有一些工作经验,就能比较快捷地开始构建 Spark 应用程序。
本书的目标读者
虽然本书主要是针对数据分析师和数据科学家编写的,但它也会对架构师、程序员和大数据从业者有所帮助。
对于数据分析师:本书可以用作数据分析人员在 Spark 和 Hadoop 上开发分析应用程序的参考指南。
对于数据科学家:本书可以用作在 Spark 和 Hadoop 上构建数据产品的参考指南。
对于架构师:本书提供了一个完整生态系统的概述和一些大数据分析应用程序的示例,有助于构建大数据分析的解决方案。
对于程序员:本书讲解了用 Scala 和 Python 语言构建大数据应用程序所使用的 API 和技术。
对于大数据从业者:本书有助于了解新的范例和技术,并做出正确的决定。
目 录
第1章 从宏观视角看大数据分析
1.1 大数据分析以及 Hadoop 和 Spark 在其中承担的角色
1.1.1 典型大数据分析项目的生命周期
1.1.2 Hadoop和Spark承担的角色
1.2 大数据科学以及Hadoop和Spark在其中承担的角色
1.2.1 从数据分析到数据科学的根本性转变
1.2.2 典型数据科学项目的生命周期
1.2.3 Hadoop和Spark 承担的角色
1.3 工具和技术
1.4 实际环境中的用例
1.5 小结
第2章 Apache Hadoop和Apache Spark入门
2.1 Apache Hadoop概述
2.1.1 Hadoop 分布式文件系统
2.1.2 HDFS 的特性
2.1.3 MapReduce
2.1.4 MapReduce 的特性
2.1.5 MapReduce v1与MapReduce v2对比
2.1.6 YARN
2.1.7 Hadoop上的存储选择
2.2 Apache Spark概述
2.2.1 Spark 的发展历史
2.2.2 Apache Spark 是什么
2.2.3 Apache Spark 不是什么
2.2.4 MapReduce 的问题
2.2.5 Spark 的架构
2.3 为何把 Hadoop 和 Spark 结合使用
2.3.1 Hadoop 的特性
2.3.2 Spark 的特性
2.4 安装 Hadoop 和 Spark 集群
2.5 小结
第3章 深入剖析Apache Spark
3.1 启动 Spark 守护进程
3.1.1 使用CDH
3.1.2 使用 HDP、MapR 和Spark 预制软件包
3.2 学习Spark的核心概念
3.2.1 使用 Spark 的方法
3.2.2 弹性分布式数据集
3.2.3 Spark 环境
3.2.4 变换和动作
3.2.5 RDD 中的并行度
3.2.6 延迟评估
3.2.7 谱系图
3.2.8 序列化
3.2.9 在 Spark 中利用 Hadoop文件格式
3.2.10 数据的本地性
3.2.11 共享变量
3.2.12 键值对 RDD
3.3 Spark 程序的生命周期
3.3.1 流水线
3.3.2 Spark 执行的摘要
3.4 Spark 应用程序
3.4.1 Spark Shell 和 Spark 应用程序
3.4.2 创建 Spark 环境
3.4.3 SparkConf
3.4.4 SparkSubmit
3.4.5 Spark 配置项的优先顺序
3.4.6 重要的应用程序配置
3.5 持久化与缓存
3.5.1 存储级别
3.5.2 应该选择哪个存储级别
3.6 Spark 资源管理器:Standalone、YARN和Mesos
3.6.1 本地和集群模式
3.6.2 集群资源管理器
3.7 小结