本書以Spark 2.0 版本為基礎進行編寫,全麵介紹瞭Spark 核心及其生態圈組件技術。主要內容包括Spark 生態圈、實戰環境搭建、編程模型和內部重要模塊的分析,重點介紹瞭消息通信框架、作業調度、容錯執行、監控管理、存儲管理以及運行框架,同時還介紹瞭Spark 生態圈相關組件,包括瞭Spark SQL 的即席查詢、Spark Streaming 的實時流處理應用、MLbase/MLlib 的機器學習、GraphX 的圖處理、SparkR 的數學計算和Alluxio 的分布式內存文件係統等。本書從Spark 核心技術進行深入分析,重要章節會結閤源代碼解讀其實現原理,圍繞著技術原理介紹瞭相關典型實例,讀者通過這些實例可以更加深入地理解Spark 的運行機製。另外本書還應用瞭大量的圖錶進行說明,通過這種方式讓讀者能夠更加直觀地理解Spark 相關原理。
郭景瞻,現就職京東商城,開源技術愛好者,對Spark等大數據係統有較為深入的研究,對Spark應用開發、運維和測試有較多的經驗,喜歡深入閱讀Spark源代碼,分析其核心原理和運行機製。
Spark的流行不是一個偶然性,它像黏閤劑一樣整閤瞭百花齊放的大數據生態係統的眾多功能。無論你是想學習使用Spark,還是想深入瞭解Spark的內核原理,這本書都是你入門的較好選擇。
-- 常雷博士,Apache HAWQ創始人
Apache Spark作為大數據的後起之秀,以其高效的迭代計算和完備的生態圈成為大數據處理的翹楚。本書從源代碼角度深入淺齣分析瞭Spark的核心原理,同時能夠結閤實例進行講解,讓讀者能夠理論聯係實際,相信本書對於大數據及分布式係統研究,以及Spark係統學習人員是個很好的選擇。
-- 祝軍,中油瑞飛大數據架構師
Spark是一個優秀的大數據計算框架,隨著雲時代的來臨,大數據的存儲、處理、分析、應用逐漸成為各個行業必須要具備的能力。本書以圖形化方式全麵講解瞭Spark生態係統,從入門應用到內核原理解析,並配閤大量的實例,相信對你的學習總結和實際工作都有很好的幫助。
--付彩寶 京東服飾傢居事業部商傢研發部負責人
全書編排閤理,初學者可以根據作者的引導一步步成長為Spark的開發高手,有經驗的開發者也可以通過本書進一步瞭解Spark的內在機製,從而幫助讀者去解決實際工作中的棘手問題,或者深入地優化應用的性能,在當前的市場上能做到如此深入淺齣而又緊跟Spark社區步伐的圖書實在不多,為此特嚮廣大技術愛好力薦此書。
--何雲龍,大規模機器學習專傢 京東大數據架構師
第1章 Spark及其生態圈概述
1.1 Spark簡介
1.1.1 什麼是Spark
1.1.2 Spark與MapReduce比較
1.1.3 Spark的演進路綫圖
1.2 Spark生態係統
1.2.1 Spark Core
1.2.2 Spark Streaming
1.2.3 Spark SQL
1.2.4 BlinkDB
1.2.5 MLBase/MLlib
1.2.6 GraphX
1.2.7 SparkR
1.2.8 Alluxio
1.3 小結
第2章 搭建Spark實戰環境
2.1 基礎環境搭建
2.1.1 搭建集群樣闆機
2.1.2 配置集群環境
2.2 編譯Spark源代碼
2.2.1 配置Spark編譯環境
2.2.2 使用Maven編譯Spark
2.2.3 使用SBT編譯Spark
2.2.4 生成Spark部署包
2.3 搭建Spark運行集群
2.3.1 修改配置文件
2.3.2 啓動Spark
2.3.3 驗證啓動
2.3.4 第一個實例
2.4 搭建Spark實戰開發環境
2.4.1 CentOS中部署IDEA
2.4.2 使用IDEA開發程序
2.4.3 使用IDEA閱讀源代碼
2.5 小結
第二篇 核心篇
第3章 Spark編程模型
3.1 RDD概述
3.1.1 背景
3.1.2 RDD簡介
3.1.3 RDD的類型
3.2 RDD的實現
3.2.1 作業調度
3.2.2 解析器集成
3.2.3 內存管理
3.2.4 檢查點支持
3.2.5 多用戶管理
3.3 編程接口
3.3.1 RDD分區(Partitions)
3.3.2 RDD首選位置(PreferredLocations)
3.3.3 RDD依賴關係(Dependencies)
3.3.4 RDD分區計算(Iterator)
3.3.5 RDD分區函數(Partitioner)
3.4 創建操作
3.4.1 並行化集閤創建操作
3.4.2 外部存儲創建操作
3.5 轉換操作
3.5.1 基礎轉換操作
3.5.2 鍵值轉換操作
3.6 控製操作
3.7 行動操作
3.7.1 集閤標量行動操作
3.7.2 存儲行動操作
3.8 小結
第4章 Spark核心原理
4.1 消息通信原理
4.1.1 Spark消息通信架構
4.1.2 Spark啓動消息通信
4.1.3 Spark運行時消息通信
4.2 作業執行原理
4.2.1 概述
4.2.2 提交作業
4.2.3 劃分調度階段
4.2.4 提交調度階段
4.2.5 提交任務
4.2.6 執行任務
4.2.7 獲取執行結果
4.3 調度算法
4.3.1 應用程序之間
4.3.2 作業及調度階段之間
4.3.3 任務之間
4.4 容錯及HA
4.4.1 Executor異常
4.4.2 Worker異常
4.4.3 Master異常
4.5 監控管理
4.5.1 UI監控
4.5.2 Metrics
4.5.3 REST
4.6 實例演示
4.6.1 計算年降水實例
4.6.2 HA配置實例
4.7 小結
第5章 Spark存儲原理
5.1 存儲分析
5.1.1 整體架構
5.1.2 存儲級彆
5.1.3 RDD存儲調用
5.1.4 讀數據過程
5.1.5 寫數據過程
5.2 Shuffle分析
5.2.1 Shuffle簡介
5.2.2 Shuffle的寫操作
5.2.3 Shuffle的讀操作
5.3 序列化和壓縮
5.3.1 序列化
5.3.2 壓縮
5.4 共享變量
5.4.1 廣播變量
5.4.2 纍加器
5.5 實例演示
5.6 小結
第6章 Spark運行架構
6.1 運行架構總體介紹
6.1.1 總體介紹
6.1.2 重要類介紹
6.2 本地(Local)運行模式
6.2.1 運行模式介紹
6.2.2 實現原理
6.3 僞分布(Local-Cluster)運行模式
6.3.1 運行模式介紹
6.3.2 實現原理
6.4 獨立(Standalone)運行模式
6.4.1 運行模式介紹
6.4.2 實現原理
6.5 YARN運行模式
6.5.1 YARN運行框架
6.5.2 YARN-Client運行模式介紹
6.5.3 YARN-Client 運行模式實現原理
6.5.4 YARN-Cluster運行模式介紹
6.5.5 YARN-Cluster 運行模式實現原理
6.5.6 YARN-Client與YARN-Cluster對比
6.6 Mesos運行模式
6.6.1 Mesos介紹
6.6.2 粗粒度運行模式介紹
6.6.3 粗粒度實現原理
6.6.4 細粒度運行模式介紹
6.6.5 細粒度實現原理
6.6.6 Mesos粗粒度和Mesos細粒度對比
6.7 實例演示
6.7.1 獨立運行模式實例
6.7.2 YARN-Client實例
6.7.3 YARN-Cluster實例
6.8 小結
第三篇 組件篇
第7章 Spark SQL
7.1 Spark SQL簡介
7.1.1 Spark SQL發展曆史
7.1.2 DataFrame/Dataset介紹
7.2 Spark SQL運行原理
7.2.1 通用SQL執行原理
7.2.2 SparkSQL運行架構
7.2.3 SQLContext運行原理分析
7.2.4 HiveContext介紹
7.3 使用Hive-Console
7.3.1 編譯Hive-Console
7.3.2 查看執行計劃
7.3.3 應用Hive-Console
7.4 使用SQLConsole
7.4.1 啓動HDFS和Spark Shell
7.4.2 與RDD交互操作
7.4.3 讀取JSON格式數據
7.4.4 讀取Parquet格式數據
7.4.5 緩存演示
7.4.6 DSL演示
7.5 使用Spark SQL CLI
7.5.1 配置並啓動Spark SQL CLI
7.5.2 實戰Spark SQL CLI
7.6 使用Thrift Server
7.6.1 配置並啓動Thrift Server
7.6.2 基本操作
7.6.3 交易數據實例
7.6.4 使用IDEA開發實例
7.7 實例演示
7.7.1 銷售數據分類實例
7.7.2 網店銷售數據統計
7.8 小結
第8章 Spark Streaming
8.1 Spark Streaming簡介
8.1.1 術語定義
8.1.2 Spark Streaming特點
8.2 Spark Streaming編程模型
8.2.1 DStream的輸入源
8.2.2 DStream的操作
8.3 Spark Streaming運行架構
8.3.1 運行架構
8.3.2 消息通信
8.3.3 Receiver分發
8.3.4 容錯性
8.4 Spark Streaming運行原理
8.4.1 啓動流處理引擎
8.4.2 接收及存儲流數據
8.4.3 數據處理
8.5 實例演示
8.5.1 流數據模擬器
8.5.2 銷售數據統計實例
8.5.3 Spark Streaming+Kafka實例
8.6 小結
第9章 Spark MLlib
9.1 Spark MLlib簡介
9.1.1 Spark MLlib介紹
9.1.2 Spark MLlib數據類型
9.1.3 Spark MLlib基本統計方法
9.1.4 預言模型標記語言
9.2 綫性模型
9.2.1 數學公式
9.2.2 綫性迴歸
9.2.3 綫性支持嚮量機
9.2.4 邏輯迴歸
9.2.5 綫性最小二乘法、Lasso和嶺迴歸
9.2.6 流式綫性迴歸
9.3 決策樹
9.4 決策模型組閤
9.4.1 隨機森林
9.4.2 梯度提升決策樹
9.5 樸素貝葉斯
9.6 協同過濾
9.7 聚類
9.7.1 K-means
9.7.2 高斯混閤
9.7.3 快速迭代聚類
9.7.4 LDA
9.7.5 二分K-means
9.7.6 流式K-means
9.8 降維
9.8.1 奇異值分解降維
9.8.2 主成分分析降維
9.9 特徵提取和變換
9.9.1 詞頻―逆文檔頻率
9.9.2 詞嚮量化工具
9.9.3 標準化
9.9.4 範數化
9.10 頻繁模式挖掘
9.10.1 頻繁模式增長
9.10.2 關聯規則挖掘
9.10.3 PrefixSpan
9.11 實例演示
9.11.1 K-means聚類算法實例
9.11.2 手機短信分類實例
9.12 小結
第10章 Spark GraphX
10.1 GraphX介紹
10.1.1 圖計算
10.1.2 GraphX介紹
10.1.3 發展曆程
10.2 GraphX實現分析
10.2.1 GraphX圖數據模型
10.2.2 GraphX圖數據存儲
10.2.3 GraphX圖切分策略
10.2.4 GraphX圖操作
10.3 實例演示
10.3.1 圖例演示
10.3.2 社區發現演示
10.4 小結
第11章 SparkR
11.1 概述
11.1.1 R語言介紹
11.1.2 SparkR介紹
11.2 SparkR與DataFrame
11.2.1 DataFrames介紹
11.2.2 與DataFrame的相關操作
11.3 編譯安裝SparkR
11.3.1 編譯安裝R語言
11.3.2 安裝SparkR運行環境
11.3.3 安裝SparkR
11.3.4 啓動並驗證安裝
11.4 實例演示
11.5 小結
第12章 Alluxio
12.1 Alluxio簡介
12.1.1 Alluxio介紹
12.1.2 Alluxio係統架構
12.1.3 HDFS與Alluxio
12.2 Alluxio編譯部署
12.2.1 編譯Alluxio
12.2.2 單機部署Alluxio
12.2.3 集群模式部署Alluxio
12.3 Alluxio命令行使用
12.3.1 接口說明
12.3.2 接口操作示例
12.4 實例演示
12.4.1 啓動環境
12.4.2 Alluxio上運行Spark
12.4.3 Alluxio上運行MapReduce
12.5 小結
本書附錄部分請到博文視點網站下載www.broadview.com.cn/30236。
前言:
為什麼要寫這本書
在過去的十幾年裏,隨著計算機的普遍應用和互聯網的普及,使得數據呈現爆發式增長,在這個背景下,Doug Cutting在榖歌的兩篇論文(GFS和MapReduce)的啓發下開發瞭Nutch項目。2006年Hadoop脫離瞭Nutch,成為Apache的頂級項目,帶動瞭大數據發展的新十年。在此期間,大數據開源産品如雨後春筍般層齣不窮,特彆是2009年由加州大學伯剋利分校AMP實驗室開發的Spark,它以內存迭代計算的高效和各組件所形成一站式解決平颱成為這些産品的翹楚。
Spark在2013年6月成為Apache孵化項目,8個月後成為其頂級項目,並於2014年5月發布瞭1.0版本,在2016年7月正式發布瞭2.0版本。在這個過程中,Spark社區不斷壯大,成為瞭最為活躍的大數據社區之一。作為大數據處理的“利器”,Spark在發展過程中不斷地演進,因此各個版本存在較大的差異。市麵上關於Spark的書已經不少,但是這些書所基於的Spark版本稍顯陳舊,另外在介紹Spark的時候,未能把原理、代碼和實例相結閤,於是便有瞭本書,本書能夠在剖析Spark原理的同時結閤實際案例,從而讓讀者能夠更加深入理解和掌握Spark。
在本書中,首先對Spark的生態圈進行瞭介紹,講述瞭Spark的發展曆程,同時也介紹Spark實戰環境的搭建;接下來從Spark的編程模型、作業執行、存儲原理和運行架構等方麵講解瞭Spark內部核心原理;最後對Spark的各組件進行詳細介紹,這些組件包括Spark SQL的即席查詢、Spark Streaming的實時流處理應用、MLbase/MLlib的機器學習、GraphX的圖處理、SparkR的數學計算和Alluxio的分布式內存文件係統等。
讀者對象
(1)大數據愛好者
隨著大數據時代的來臨,無論是傳統行業、IT行業還是互聯網等行業,都將涉及大數據技術,本書能夠幫助這些行業的大數據愛好者瞭解Spark生態圈和發展演進趨勢。通過本書,讀者不僅可以瞭解到Spark的特點和使用場景,而且如果希望繼續深入學習Spark知識,那麼本書也是很好的入門選擇。
(2)Spark開發人員
如果要進行Spark應用的開發,僅僅掌握Spark基本使用方法是不夠的,還需深入瞭解Spark的設計原理、架構和運行機製。本書深入淺齣地講解瞭Spark的編程模型、作業運行機製、存儲原理和運行架構等內容,通過對這些內容的學習,相信讀者可以編寫齣更加高效的應用程序。
(3)Spark運維人員
作為一名Spark運維人員,適當瞭解Spark的設計原理、架構和運行機製對於運維工作十分有幫助。通過對本書的學習,不僅能夠更快地定位並排除故障,而且還能對Spark運行進行調優,讓Spark運行得更加穩定和快速。
(4)數據科學傢和算法研究
隨著大數據技術的發展,實時流計算、機器學習、圖計算等領域成為較熱門的研究方嚮,而Spark有著較為成熟的生態圈,能夠一站式解決類似場景的問題。這些研究人員可以通過本書加深對Spark的原理和應用場景的理解,從而能夠更好地利用Spark各個組件進行數據計算和算法實現。
內容速覽
本書分為三個部分,共計12章。
第一部分為基礎篇(第1~2章),介紹瞭Spark誕生的背景、演進曆程,以及Spark生態圈的組成,並詳細介紹瞭如何搭建Spark實戰環境。通過該環境不僅可以閱讀Spark源代碼,而且可以開發Spark應用程序。
第二部分為核心篇(第3~6章),講解瞭Spark的編程模型、核心原理、存儲原理和運行架構,在核心原理中對Spark通信機製、作業執行原理、調度算法、容錯和監控管理等進行瞭深入分析,在分析原理和代碼的同時結閤實例進行演示。
第三部分為組件篇(第7~12章),介紹瞭Spark的各個組件,包括Spark SQL的即席查詢、Spark Streaming的實時流處理應用、MLbase/MLlib的機器學習、GraphX的圖處理、SparkR的數學計算和Alluxio的分布式內存文件係統等。
另外本書後麵還包括5個附錄:附錄A為編譯安裝Hadoop,附錄B為安裝MySQL數據庫,附錄C為編譯安裝Hive,附錄D為安裝ZooKeeper,附錄E為安裝Kafka。由於本書篇幅有限,因此這些內容可到我的博客()或博文視點網站()下載。
勘誤和支持
由於筆者水平有限,加之編寫時間跨度較長,同時Spark演進較快,因此在編寫本書的過程中,難免會齣現錯誤或者不準確的地方,懇請讀者批評指正。如果本書存有錯誤,或者您有Spark的內容需要探討,可以發送郵件到與我聯係,期待能夠得到大傢的反饋。
緻謝
感謝中油瑞飛公司,讓我接觸到大數據的世界,並在工作的過程中深入瞭解Spark。感謝吳建平、於鵬、李新宅、祝軍、張文逵、馬君博士、盧文君等領導同事,在本書編寫過程中提供無私的幫助和寶貴的建議。
感謝京東商城的付彩寶、瀋曉凱對我的工作和該書的支持,感謝付彩寶在繁忙的工作之餘為本書寫推薦,感謝京東數據挖掘架構師何雲龍為本書作序,感謝大數據平颱部的周龍波對該書提齣瞭寶貴意見。
感謝EMC常雷博士為本書審稿並寫推薦。
感謝Alluxio的CEO李浩源博士對本書的支持,感謝範斌在非常忙的工作中,抽齣時間給Alluxio章節進行瞭審稿並提供瞭很好的建議。
非常感謝我的傢人對我的理解和支持,特彆是在寫書過程中老婆又為我們傢添瞭一位猴寶寶,讓為我擁有一對健康可愛的兒女,這些都給瞭我莫大的動力,讓我的努力更加有意義。
謹以此書先給我親愛的傢人,你們是我努力的源泉。
郭景瞻
2016年11月
在閱讀這本書的過程中,我驚訝地發現,與其說它是一本關於Spark的實戰指南,不如說它是一部關於大數據生態係統演進的編年史。書中花瞭相當大的篇幅去描繪Hadoop組件的協同工作,特彆是HDFS的分布式存儲原理,以及YARN的資源管理機製。作者詳細解釋瞭HDFS如何實現高可用性和數據冗餘,以及YARN如何動態分配和調度計算資源,這些都為理解Spark運行在Hadoop集群上的基礎架構提供瞭堅實背景。然而,我最初購買這本書的目的是想學習Spark的API使用、性能調優,以及如何編寫高效的Spark應用程序。書中雖然提到瞭Spark可以運行在YARN之上,並且能利用HDFS存儲數據,但對這些基礎設施層麵的詳細介紹,使得Spark本身的內容被稀釋瞭。我更希望看到的是Spark Streaming的實時數據處理模型,或者MLlib的機器學習算法在Spark上的實現細節,甚至是GraphX的圖計算原理。這些內容在書中齣現的篇幅相對較少,以至於我感覺自己更像是成瞭一名Hadoop專傢,而非Spark的開發者。
評分這本書的標題雖然是《圖解Spark:核心技術與案例實戰》,但拿到手後,我發現它更像是一本對分布式計算曆史的深度迴顧,從早期的Hadoop MapReduce講起,詳細闡述瞭為什麼Spark會應運而生,並且在哪些方麵做瞭顛覆性的改進。作者花瞭大量的篇幅去講解Hadoop的MapReduce模型,包括其Map和Reduce階段的設計理念、數據容錯機製,以及 Shuffle 過程的瓶頸。我個人覺得這部分內容雖然翔實,但對於我這樣急於上手Spark的讀者來說,信息密度略顯過高,而且離Spark的核心技術本身有些遠。書中對MapReduce的詳細剖析,像是把一個已經淘汰的係統重新拆解瞭一遍,雖然有助於理解Spark的“好”,但學習麯綫因此變得陡峭。我原本期望的是直接進入Spark的RDD、DataFrame、Spark SQL等核心概念,然後通過圖解的方式快速理解其內存計算、DAG調度等優勢,但這本書的開頭花瞭很多時間在“前傳”故事上。當然,這也能幫助我更深刻地理解Spark齣現的曆史必然性,以及它解決的痛點,但從學習效率上來說,我個人更傾嚮於直接切入主題。
評分這本書給我最大的感受是,它在 Spark 技術本身的深度挖掘上,似乎並不是最核心的重點。雖然書名中帶有“核心技術”字樣,但更多的內容被用來解釋 Spark 所處的整個大數據生態的由來和演進。作者花費瞭不少筆墨來介紹分布式存儲(如 HDFS)和分布式計算框架(如 MapReduce)的曆史背景,以及它們各自的優缺點。這有助於我們理解 Spark 為什麼會齣現,以及它解決的核心問題是什麼。然而,對於 Spark 本身的一些關鍵技術點,比如其在內存管理、任務調度、容錯機製方麵的具體實現細節,以及各種算子的底層原理,書中齣現的篇幅相對有限。我本來希望能夠通過這本書更深入地理解 Spark 的 RDD、DataFrame、Spark SQL 等 API 的設計哲學,以及如何通過它們來高效地處理大規模數據。雖然書中也提及瞭這些,但感覺像是點到為止,沒有深入到能夠指導我解決復雜技術難題的程度。
評分這本書給我的感覺,與其說是一本技術手冊,不如說是一本關於大數據領域哲學思想的探討。作者在開篇就引入瞭“數據爆炸”的時代背景,以及傳統計算方式的局限性,然後層層遞進,引齣瞭分布式計算的必然性。書中花瞭大量篇幅去闡述“計算與存儲分離”的理念,以及“內存計算”相對於磁盤IO的優勢。它通過一係列的比喻和類比,試圖讓讀者理解Spark在設計上是如何剋服MapReduce的一些固有弊端。例如,書中反復強調Spark的DAG(有嚮無環圖)執行引擎,以及如何通過RDD(彈性分布式數據集)實現數據的高效復用和容錯。然而,在實際的案例實戰部分,我並沒有找到太多我所期望的、能夠直接復製粘貼或者稍加修改就能解決實際問題的代碼示例。更多的案例似乎是在“講故事”,描述某個場景下Spark是如何被應用的,但缺乏具體的技術實現細節,比如如何選擇閤適的算子,如何進行參數配置,以及如何解讀執行計劃來定位性能瓶頸。
評分不得不說,這本書的“圖解”部分做得確實比較齣色,圖示清晰,能夠幫助理解一些抽象的概念。例如,關於Spark的Shuffle過程,書中通過流程圖的形式,將復雜的數據重組和分發過程展現得淋灕盡緻。我尤其喜歡書中對於Spark內存管理機製的圖示講解,比如內存池的劃分、序列化方式的選擇對內存占用的影響等,這些都讓我對Spark的性能有瞭更直觀的認識。但是,我購買這本書的核心訴求是想學習如何利用Spark來進行實際的數據分析和挖掘工作。書中雖然包含瞭“案例實戰”的字樣,但這些案例更多的是偏嚮於宏觀的應用場景描述,例如在推薦係統、日誌分析、欺詐檢測等領域的應用,但缺乏具體的數據集、代碼實現、以及詳細的步驟指導。我希望能看到的是,如何用Spark SQL進行復雜的SQL查詢,如何使用DataFrame API進行數據清洗和轉換,或者如何利用Spark MLlib構建一個簡單的分類模型。這些更貼近實際工作的內容,在書中篇幅相對較少,讓人有些意猶未盡。
評分送貨真的挺快,書的質量也不錯
評分京東自營的書性價比超高,都是正版的,單位工具書
評分穆薩句我好 my 我副書記
評分開始學習,每天進步一點點,生活改變一點點
評分你捨不得v發v根本都沒在哪學籍卡從哪齣不打擊刷卡的你發吧發吧v的上哪拿都拿到哪點
評分京東自營的書性價比超高,都是正版的,單位工具書
評分京東自營的書性價比超高,都是正版的,單位工具書
評分這不是不錯不錯,看看再說吧,先看看
評分公司統一買的書,公司統一買的書,公司統一買的書,公司統一買的書。公司統一買的書,公司統一買的書,公司統一買的書,公司統一買的書。
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有