內容簡介
這是一本引導讀者深度學習Spark的技術指南。它由國內具實力的大數據在綫教育機構小象學院組織撰寫,旨在用閤理的結構和精煉的內容讓讀者用短的時間掌握Spark技術的核心內容。第1章和第2章分彆講解瞭Spark的開發環境和編程模型;第3章分析瞭Spark的工作機製和原理;第4章則結閤源代碼分析瞭Spark的內核架構和實現原理;第5章講解瞭Spark與YARN的結閤應用;第6章介紹瞭Spark生態中其他模塊的功能和使用;第7章總結瞭Spark性能調優方麵的技巧和方法;第8章描述瞭Spark2.0發布後,其模塊API的變化以及新增的功能特性。
目錄
前 言
第1章 Spark架構與集群環境 1
1.1 Spark概述與架構 1
1.1.1 Spark概述 2
1.1.2 Spark生態 3
1.1.3 Spark架構 5
1.2 在Linux集群上部署Spark 8
1.2.1 安裝OpenJDK 9
1.2.2 安裝Scala 9
1.2.3 配置SSH免密碼登錄 10
1.2.4 Hadoop的安裝配置 10
1.2.5 Spark的安裝部署 13
1.2.6 Hadoop與Spark的集群復製 14
1.3 Spark 集群試運行 15
1.4 Intellij IDEA的安裝與配置 17
1.4.1 Intellij的安裝 17
1.4.2 Intellij的配置 17
1.5 Eclipse IDE的安裝與配置 18
1.6 使用Spark Shell開發運行Spark程序 19
1.7 本章小結 20
第2章 Spark 編程模型 21
2.1 RDD彈性分布式數據集 21
2.1.1 RDD簡介 22
2.1.2 深入理解RDD 22
2.1.3 RDD特性總結 24
2.2 Spark程序模型 25
2.3 Spark算子 26
2.3.1 算子簡介 26
2.3.2 Value型Transmation算子 27
2.3.3 Key-Value型Transmation算子 32
2.3.4 Action算子 34
2.4 本章小結 37
第3章 Spark機製原理 38
3.1 Spark應用執行機製分析 38
3.1.1 Spark應用的基本概念 38
3.1.2 Spark應用執行機製概要 39
3.1.3 應用提交與執行 41
3.2 Spark調度機製 42
3.2.1 Application的調度 42
3.2.2 job的調度 43
3.2.3 stage(調度階段)和TasksetManager的調度 46
3.2.4 task的調度 50
3.3 Spark存儲與I/O 52
3.3.1 Spark存儲係統概覽 52
3.3.2 BlockManager中的通信 54
3.4 Spark通信機製 54
3.4.1 分布式通信方式 54
3.4.2 通信框架AKKA 56
3.4.3 Client、Master和Worker之間的通信 57
3.5 容錯機製及依賴 65
3.5.1 Lineage(血統)機製 66
3.5.2 Checkpoint(檢查點)機製 68
3.6 Shuffle機製 70
3.6.1 什麼是Shuffle 70
3.6.2 Shuffle曆史及細節 72
3.7 本章小結 78
第4章 深入Spark內核 79
4.1 Spark代碼布局 79
4.1.1 Spark源碼布局簡介 79
4.1.2 Spark Core內模塊概述 80
4.1.3 Spark Core外模塊概述 80
4.2 Spark執行主綫[RDD→Task]剖析 80
4.2.1 從RDD到DAGScheduler 81
4.2.2 從DAGScheduler到TaskScheduler 82
4.2.3 從TaskScheduler到Worker節點 88
4.3 Client、Master和Worker交互過程剖析 89
4.3.1 交互流程概覽 89
4.3.2 交互過程調用 90
4.4 Shuffle觸發 96
4.4.1 觸發Shuffle Write 96
4.4.2 觸發Shuffle Read 98
4.5 Spark存儲策略 100
4.5.1 CacheManager職能 101
4.5.2 BlockManager職能 105
4.5.3 DiskStore與DiskBlock--Manager類 113
4.5.4 MemoryStore類 114
4.6 本章小結 117
第5章 Spark on YARN 118
5.1 YARN概述 118
5.2 Spark on YARN的部署模式 121
5.3 Spark on YARN的配置重點 125
5.3.1 YARN的自身內存配置 126
5.3.2 Spark on YARN的重要配置 127
5.4 本章小結 128
第6章 BDAS 生態主要模塊 129
6.1 Spark SQL 129
6.1.1 Spark SQL概述 130
6.1.2 Spark SQL的架構分析 132
6.1.3 Spark SQL如何使用 135
6.2 Spark Streaming 140
6.2.1 Spark Streaming概述 140
6.2.2 Spark Streaming的架構分析 143
6.2.3 Spark Streaming編程模型 145
6.2.4 數據源Data Source 147
6.2.5 DStream操作 149
6.3 SparkR 154
6.3.1 R語言概述 154
6.3.2 SparkR簡介 155
6.3.3 DataFrame創建 156
6.3.4 DataFrame操作 158
6.4 MLlib on Spark 162
6.4.1 機器學習概述 162
6.4.2 機器學習的研究方嚮與問題 164
6.4.3 機器學習的常見算法 167
6.4.4 MLlib概述 210
6.4.5 MLlib架構 212
6.4.6 MLlib使用實例——電影推薦 214
6.5 本章小結 220
第7章 Spark調優 221
7.1 參數配置 221
7.2 調優技巧 223
7.2.1 序列化優化 223
7.2.2 內存優化 224
7.2.3 數據本地化 228
7.2.4 其他優化考慮 229
7.3 實踐中常見調優問題及思考 230
7.4 本章小結 231
第8章 Spark 2.0.0 232
8.1 功能變化 232
8.1.1 刪除的功能 232
8.1.2 Spark中發生變化的行為 233
8.1.3 不再建議使用的功能 233
8.2 Core以及Spark SQL的改變 234
8.2.1 編程API 234
8.2.2 多說些關於SparkSession 234
8.2.3 SQL 236
8.3 MLlib 237
8.3.1 新功能 237
8.3.2 速度/擴展性 237
8.4 SparkR 238
8.5 Streaming 238
8.5.1 初識結構化Streaming 238
8.5.2 結構化Streaming編程模型 239
8.5.3 結果輸齣 240
8.6 依賴、打包 242
8.7 本章小結 242
前言/序言
Preface前 言 Spark誕生於美國加州大學伯剋利分校AMP實驗室。隨著大數據技術在互聯網、金融等領域的突破式進展,Spark在近些年得到更為廣泛的應用。這是一個核心貢獻者超過一半為華人的大數據平颱開源項目,且正處於飛速發展、快速成熟的階段。 為什麼寫這本書Spark已經成為大數據計算、分析領域新的熱點和發展方嚮。相對於Hadoop傳統的MapReduce計算模型,Spark提供更為高效的計算框架以及更為豐富的功能,因此在大數據生産應用領域中不斷攻城略地,勢如破竹。 與企業不斷湧現的對大數據技術的需求相比,大數據人纔還存在很大缺口,對大數據技術充滿期許的新人正在源源不斷地加入這個領域。在小象學院的教學實踐過程中,我們發現,一本能完整係統地介紹Spark各模塊原理並兼顧使用實戰的書,對於初入大數據領域的技術人員至關重要。於是,我們根據日常積纍的經驗,著成本書。 Spark作為一個高速發展的開源項目,最近也發布瞭全新的Spark 2.0版本。對於Spark 2.0版本的新特性,我們也專門給予描述,以期將最前沿的Spark技術奉獻給讀者。 本書麵嚮的讀者Spark初學者Spark應用開發人員Spark運維人員大數據技術愛好者如何閱讀本書本書共分8章: 第1章介紹瞭Spark大數據處理框架的基本概念、主要組成部分、基本架構,以及Spark集群環境搭建和Spark開發環境的構建方法。 第2章引入Spark編程中的核心——RDD彈性分布式數據集,以典型的編程範例,講解基於RDD的算子操作。 第3章主要講述瞭Spark的工作機製與原理,剖析瞭Spark的提交和執行時的具體機製,重點強調瞭Spark程序的宏觀執行過程。此外,更深入地剖析瞭Spark的存儲及IO、通信機製、容錯機製和Shuffle機製。 第4章對Spark的代碼布局做瞭宏觀介紹,並對Spark的執行主綫進行詳細剖析,從代碼層麵詳細講述RDD是如何落地到Worker上執行的。同時,本章從另一個角度分析瞭Client、Master與Worker之間的交互過程,深入講述瞭Spark的兩個重要功能點及Spark Shuffle與Spark存儲機製。 第5章介紹瞭YARN的基本原理及基於YARN的Spark程序提交,並結閤從程序提交到落地執行的過程,詳細介紹瞭各個階段的資源管理和調度職能。在本章的後半部分,主要從資源配置的角度對YARN及基於YARN的Spark做瞭較為詳細的介紹。 第6章一一講解瞭BDAS中的主要模塊。由Spark SQL開始,介紹瞭Spark SQL及其編程模型和DataFrame。接著深入講解Spark生態中用於流式計算的模塊Spark Streaming。之後,講解瞭Spark R的基本概念及操作。 最後針對機器學習的流行趨勢,重點介紹瞭Spark MLlib的架構及編程應用,以及機器學習的基本概念和基本算法。 第7章首先詳細敘述瞭Spark調優的幾個重要方麵,接著給齣瞭工業實踐中常見的一些問題,以及解決問題的常用策略,最後啓發讀者在此基礎上進一步思考和探索。 第8章描述瞭Spark 2.0.0發布之後,Spark Core、Spark SQL、MLlib、Spark Streaming、Spark R等模塊API的變化以及新增的功能特性等。對於變化較大的Spark SQL,書中用實際的代碼樣例更詳細地說明和講解瞭SparkSession、結構化Streaming等新特性。 對於Spark的初學者或希望從零開始詳細瞭解Spark技術的讀者,請從第1章開始通讀全書;對於有一定Spark基礎的研究者,可從第4章開始閱讀;如果隻想瞭解Spark最基本的原理,閱讀第1~3章即可。 資源和勘誤本書大量資源來源於小象學院專傢團隊在大數據項目開發以及Spark教學課程中的經驗積纍。本書內容的撰寫也參考瞭大量官方文檔(http://spark.apache.org/)。 由於Spark技術正在飛速發展,加之筆者水平有限,書中難免存在謬誤,也可能存在若乾技術細節描述不詳盡之處,懇請讀者批評指正。歡迎大傢關注微信服務號“小象學院”,把您的意見或者建議反饋給我們。 緻謝首先應該感謝Apache Spark的開源貢獻者們,Spark是當今大數據領域偉大的開源項目之一,沒有這一開源項目,便沒有本書。 本書以小象學院git項目方式管理。感謝薑冰鈺、陳超、冼茂源等每一位內容貢獻者,感謝他們花費大量時間,將自己對Spark的理解加上在實際工作、學習過程中的體會,融匯成豐富的內容。 感謝本書的審閱者樊明璐、楊福川、李藝,他們對本書的內容和結構提供瞭非常寶貴的意見。
循序漸進學Spark 下載 mobi epub pdf txt 電子書