![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLhdjZzQGNmhDZjRjYzEjZiZDZxYDM1YGM3cTO3YWN5gzY5UGM5YmM58CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
本書講解了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 和技術。
對于大資料從業者:本書有助于了解新的範例和技術,并做出正确的決定。
<a href="https://yq.aliyun.com/articles/211964/">第1章 從宏觀視角看大資料分析</a>
<a href="https://yq.aliyun.com/articles/211976">1.1 大資料分析以及 Hadoop 和 Spark 在其中承擔的角色</a>
1.1.1 典型大資料分析項目的生命周期
1.1.2 Hadoop和Spark承擔的角色
<a href="https://yq.aliyun.com/articles/212002/">1.2 大資料科學以及Hadoop和Spark在其中承擔的角色</a>
1.2.1 從資料分析到資料科學的根本性轉變
1.2.2 典型資料科學項目的生命周期
1.2.3 Hadoop和Spark 承擔的角色
<a href="https://yq.aliyun.com/articles/212008/">1.3 工具和技術</a>
<a href="https://yq.aliyun.com/articles/212017/">1.4 實際環境中的用例</a>
<a href="https://yq.aliyun.com/articles/212019/">1.5 小結</a>
<a href="https://yq.aliyun.com/articles/212026/">第2章 Apache Hadoop和Apache Spark入門</a>
<a href="https://yq.aliyun.com/articles/212063/">2.1 Apache Hadoop概述</a>
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上的存儲選擇
<a href="https://yq.aliyun.com/articles/212099/">2.2 Apache Spark概述</a>
2.2.1 Spark 的發展曆史
2.2.2 Apache Spark 是什麼
2.2.3 Apache Spark 不是什麼
2.2.4 MapReduce 的問題
2.2.5 Spark 的架構
<a href="https://yq.aliyun.com/articles/212106/">2.3 為何把 Hadoop 和 Spark 結合使用</a>
2.3.1 Hadoop 的特性
2.3.2 Spark 的特性
<a href="https://yq.aliyun.com/articles/212119/">2.4 安裝 Hadoop 和 Spark 叢集</a>
<a href="https://yq.aliyun.com/articles/212144/">2.5 小結</a>
<a href="https://yq.aliyun.com/articles/212228/">第3章 深入剖析Apache Spark</a>
<a href="https://yq.aliyun.com/articles/212233">3.1 啟動 Spark 守護程序</a>
3.1.1 使用CDH
3.1.2 使用 HDP、MapR 和Spark 預制軟體包
<a href="https://yq.aliyun.com/articles/212258/">3.2 學習Spark的核心概念</a>
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
<a href="https://yq.aliyun.com/articles/212315/">3.3 Spark 程式的生命周期</a>
3.3.1 流水線
3.3.2 Spark 執行的摘要
<a href="https://yq.aliyun.com/articles/212317/">3.4 Spark 應用程式</a>
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 重要的應用程式配置
<a href="https://yq.aliyun.com/articles/212319">3.5 持久化與緩存</a>
3.5.1 存儲級别
3.5.2 應該選擇哪個存儲級别
<a href="https://yq.aliyun.com/articles/212321/">3.6 Spark 資料總管:Standalone、YARN和Mesos</a>
3.6.1 本地和叢集模式
3.6.2 叢集資料總管
<a href="https://yq.aliyun.com/articles/212322/">3.7 小結</a>