科大訊飛和百分點資深大數據專傢實踐經驗結晶,秉承老莊哲學,從開發、數據分析、計算、管理和性能優化等多角度係統、深度地講解瞭Spark的核心技術與高級應用
上善若水,水善利萬物而不爭。數據一如水,無色無味,非方非圓,以百態存於自然,於自然無違也。綿綿密密,微則無聲,巨則洶湧;與人無爭卻又容納萬物。生活離不開水,同樣離不開數據,我們被數據包圍,在數據中生活。數據之道,水之道也。
Spark作為一個快速、通用的大規模數據處理引擎,憑藉其可伸縮、基於內存計算等特點,以及可以直接讀寫HDFS上數據的優勢,進行批處理時更加高效,並有更低的延遲,已經成為輕量級大數據快速處理的統一平颱,集成Spark SQL、Spark Streaming、MLlib、GraphX、SparkR等子框架,可以提供一站式解決方案,讓從業者的工作變得越來越便捷。
本書源於實踐,又不囿於現有實踐,以老莊哲學來探討大數據的本質與應用,兼具高度與實用性。
閱讀本書的可能受益:
愛好者——可加深對大數據生態環境發展趨勢的理解,愛上大數據和Spark,開啓日後探究之旅。
大數據開發人員——理解原理、編程思想、應用實現與技術優缺點。
大數據運維人員——瞭解Spark框架、編程思想與應用情況,保障運行環境穩定與資源的閤理利用。
大數據科學傢與算法研究者——深入理解原理與應用場景,降低學習成本,開啓通往高階之路的大門。
本書是Spark領域少有的專注於核心原理與深度應用的著作,由科大訊飛和百分點科技的4位大數據專傢撰寫。不僅細緻介紹瞭Spark的程序開發、編程模型、作業執行解析等基礎知識,而且還深度講解瞭Spark SQL、Spark ML、Spark Streaming等大量內部模塊和周邊模塊的原理與使用。除此之外,還從管理和性能優化的角度對Spark進行瞭深入探索。
本書分為四大部分,共計20章:
基礎篇(第1~10章),詳細說明什麼是Spark、Spark的重要擴展、Spark的部署和運行、Spark程序開發、Spark編程模型,以及Spark作業執行解析。通過閱讀本篇,讀者可以構建更加清晰的Spark基礎知識體係,進一步加深對大數據核心技術的理解。
實戰篇(第11~14章),本書重點篇章,重點講解Spark SQL與DataFrame、Spark Streaming、Spark MLlib與Spark ML、GraphX,以及基於以上內容在大數據分析、係統資源統計、LR模型、二級鄰居關係圖獲取方麵的實例。通過體察本篇的內容,讀者可以掌握如何在實踐中應用Spark,優化自身的應用場景,完善相應的解決方案。
高級篇(第15~18章),深入講解Spark調度管理、存儲管理、監控管理、性能調優。本篇的內容,為閤理利用資源、有效進行資源監控、保障運行環境的穩定、平颱性能調優、推進企業級的大數據平颱管理提供瞭參考依據。
擴展篇(第19~20章),介紹Jobserver和Tachyon在Spark上的使用情況。通過本篇,延續基礎、實戰、高級等環節,並進一步擴展,更好地管理好Job、更有效地利用內存,為讀者拓展齣更深入、更全麵的思路。
為瞭讓讀者從更高的角度認識與應用大數據,從《道德經》和《莊子》各精選10句,引導大傢以老莊哲學的思考方式來認識大數據的內涵。本書不隻是一本技術書,更是一本大數據哲學的思考之作。
於俊,
科大訊飛大數據專傢,專注大數據Hadoop和Spark平颱;主要工作是大數據統計分析和機器學習算法工程實現。
嚮海,
科大訊飛大數據專傢,Spark愛好者,專注於大數據領域,現從事基於Spark的用戶行為分析相關工作。
代其鋒,
百分點科技大數據架構師,專注於分布式係統架構;主要工作是負責公司底層基礎平颱的建設和Spark技術的推廣。
馬海平,
科大訊飛大數據高級研究員,專注於用機器學習做大數據商業變現;主要工作是數據挖掘算法研究和Spark實現。
前 言
基 礎 篇
第1章 Spark簡介 2
1.1 什麼是Spark 2
1.1.1 概述 3
1.1.2 Spark大數據處理框架 3
1.1.3 Spark的特點 4
1.1.4 Spark應用場景 5
1.2 Spark的重要擴展 6
1.2.1 Spark SQL和DataFrame 6
1.2.2 Spark Streaming 7
1.2.3 Spark MLlib和ML 8
1.2.4 GraphX 8
1.2.5 SparkR 9
1.3 本章小結 10
第2章 Spark部署和運行 11
2.1 部署準備 11
2.1.1 下載Spark 11
2.1.2 編譯Spark版本 12
2.1.3 集群部署概述 14
2.2 Spark部署 15
2.2.1 Local模式部署 16
2.2.2 Standalone模式部署 16
2.2.3 YARN模式部署 18
2.3 運行Spark應用程序 19
2.3.1 Local模式運行Spark應用程序 19
2.3.2 Standalone模式運行Spark應用程序 20
2.3.3 YARN模式運行Spark 22
2.3.4 應用程序提交和參數傳遞 23
2.4 本章小結 26
第3章 Spark程序開發 27
3.1 使用Spark Shell編寫程序 27
3.1.1 啓動Spark Shell 28
3.1.2 加載text文件 28
3.1.3 簡單RDD操作 28
3.1.4 簡單RDD操作應用 29
3.1.5 RDD緩存 30
3.2 構建Spark的開發環境 30
3.2.1 準備環境 30
3.2.2 構建Spark的Eclipse開發環境 31
3.2.3 構建Spark的IntelliJ IDEA開發環境 32
3.3 獨立應用程序編程 40
3.3.1 創建SparkContext對象 40
3.3.2 編寫簡單應用程序 40
3.3.3 編譯並提交應用程序 40
3.4 本章小結 43
第4章 編程模型 44
4.1 RDD介紹 44
4.1.1 RDD特徵 45
4.1.2 RDD依賴 45
4.2 創建RDD 47
4.2.1 集閤(數組)創建RDD 47
4.2.2 存儲創建RDD 48
4.3 RDD操作 49
4.3.1 轉換操作 50
4.3.2 執行操作 52
4.3.3 控製操作 54
4.4 共享變量 56
4.4.1 廣播變量 57
4.4.2 纍加器 57
4.5 本章小結 58
第5章 作業執行解析 59
5.1 基本概念 59
5.1.1 Spark組件 59
5.1.2 RDD視圖 60
5.1.3 DAG圖 61
5.2 作業執行流程 62
5.2.1 基於Standalone模式的Spark架構 62
5.2.2 基於YARN模式的Spark架構 64
5.2.3 作業事件流和調度分析 65
5.3 運行時環境 67
5.3.1 構建應用程序運行時環境 68
5.3.2 應用程序轉換成DAG 68
5.3.3 調度執行DAG圖 70
5.4 應用程序運行實例 71
5.5 本章小結 72
第6章 Spark SQL與DataFrame 73
6.1 概述 73
6.1.1 Spark SQL 發展 74
6.1.2 Spark SQL 架構 74
6.1.3 Spark SQL 特點 76
6.1.4 Spark SQL 性能 76
6.2 DataFrame 77
6.2.1 DataFrame和RDD的區彆 78
6.2.2 創建DataFrame 78
6.2.3 DataFrame 操作 80
6.2.4 RDD轉化為DataFrame 82
6.3 數據源 84
6.3.1 加載保存操作 84
6.3.2 Parquet 文件 85
6.3.3 JSON 數據集 88
6.3.4 Hive 錶 89
6.3.5 通過JDBC 連接數據庫 91
6.3.6 多數據源整閤查詢的小例子 92
6.4 分布式的SQL Engine 93
6.4.1 運行Thrift JDBC/ODBC 服務 93
6.4.2 運行 Spark SQL CLI 94
6.5 性能調優 94
6.5.1 緩存數據 94
6.5.2 調優參數 94
6.5.3 增加並行度 95
6.6 數據類型 95
6.7 本章小結 96
第7章 深入瞭解Spark Streaming 97
7.1 基礎知識 97
7.1.1 Spark Streaming工作原理 98
7.1.2 DStream編程模型 99
7.2 DStream操作 100
7.2.1 Input DStream 100
7.2.2 DStream轉換操作 102
7.2.3 DStream狀態操作 104
7.2.4 DStream輸齣操作 106
7.2.5 緩存及持久化 107
7.2.6 檢查點 108
7.3 性能調優 109
7.3.1 優化運行時間 109
7.3.2 設置閤適的批次大小 111
7.3.3 優化內存使用 111
7.4 容錯處理 112
7.4.1 文件輸入源 112
7.4.2 基於Receiver的輸入源 112
7.4.3 輸齣操作 113
7.5 一個例子 113
7.6 本章小結 115
第8章 Spark MLlib與機器學習 116
8.1 機器學習概述 116
8.1.1 機器學習分類 117
8.1.2 機器學習算法 117
8.2 Spark MLlib介紹 118
8.3 Spark MLlib庫 119
8.3.1 MLlib數據類型 120
8.3.2 MLlib的算法庫與實例 123
8.4 ML庫 142
8.4.1 主要概念 143
8.4.2 算法庫與實例 145
8.5 本章小結 147
第9章 GraphX圖計算框架與應用 148
9.1 概述 148
9.2 Spark GraphX架構 149
9.3 GraphX編程 150
9.3.1 GraphX的圖操作 152
9.3.2 常用圖算法 161
9.4 應用場景 164
9.4.1 圖譜體檢平颱 164
9.4.2 多圖閤並工具 165
9.4.3 能量傳播模型 165
9.5 本章小結 166
第10章 SparkR(R on Spark) 167
10.1 概述 167
10.1.1 SparkR介紹 168
10.1.2 SparkR的工作原理 168
10.1.3 R語言介紹 169
10.1.4 R語言與其他語言的通信 170
10.2 安裝SparkR 170
10.2.1 安裝R語言與rJava 171
10.2.2 SparkR的安裝 171
10.3 SparkR的運行與應用示例 172
10.3.1 運行SparkR 172
10.3.2 SparkR示例程序 173
10.3.3 R的DataFrame操作方法 175
10.3.4 SparkR的DataFrame 183
10.4 本章小結 186
實 戰 篇
第11章 大數據分析係統 188
11.1 背景 188
11.2 數據格式 189
11.3 應用架構 189
11.4 業務實現 190
11.4.1 流量、性能的實時分析 190
11.4.2 流量、性能的統計分析 192
11.4.3 業務關聯分析 193
11.4.4 離綫報錶分析 195
11.5 本章小結 199
第12章 係統資源分析平颱 200
12.1 業務背景 200
12.1.1 業務介紹 201
12.1.2 實現目標 201
12.2 應用架構 201
12.2.1 總體架構 202
12.2.2 模塊架構 202
12.3 代碼實現 203
12.3.1 Kafka集群 203
12.3.2 數據采集 207
12.3.3 離綫數據處理 207
12.3.4 數據錶現 207
12.4 結果驗證 213
12.5 本章小結 214
第13章 在Spark上訓練LR模型 215
13.1 邏輯迴歸簡介 215
13.2 數據格式 216
13.3 MLlib中LR模型源碼介紹 217
13.3.1 邏輯迴歸分類器 217
13.3.2 優化方法 219
13.3.3 算法效果評估 221
13.4 實現案例 223
13.4.1 訓練模型 223
13.4.2 計算AUC 223
13.5 本章小結 224
第14章 獲取二級鄰居關係圖 225
14.1 理解PageRank 225
14.1.1 初步理解PageRank 225
14.1.2 深入理解PageRank 227
14.2 PageRank算法基於Spark的實現 228
14.3 基於PageRank的二級鄰居獲取 232
14.3.1 係統設計 232
14.3.2 係統實現 232
14.3.3 代碼提交命令 235
14.4 本章小結 236
高 級 篇
第15章 調度管理 238
15.1 調度概述 238
15.1.1 應用程序間的調度 239
15.1.2 應用程序中的調度 241
15.2 調度器 242
15.2.1 調度池 243
15.2.2 Job調度流程 243
15.2.3 調度模塊 245
15.2.4 Job的生與死 249
15.3 本章小結 253
第16章 存儲管理 254
16.1 硬件環境 254
16.1.1 存儲係統 254
16.1.2 本地磁盤 255
16.1.3 內存 255
16.1.4 網絡和CPU 255
16.2 Storage模塊 256
16.2.1 通信層 256
16.2.2 存儲層 258
16.3 Shuff?le數據持久化 261
16.4 本章小結 263
第17章 監控管理 264
17.1 Web界麵 264
17.2 Spark UI曆史監控 266
17.2.1 使用spark-server的原因 266
17.2.2 配置spark-server 266
17.3 監控工具 269
17.3.1 Metrics工具 269
17.3.2 其他工具 271
17.4 本章小結 272
第18章 性能調優 273
18.1 文件的優化 273
18.1.1 輸入采用大文件 273
18.1.2 lzo壓縮處理 274
18.1.3 Cache壓縮 275
18.2 序列化數據 277
18.3 緩存 278
18.4 共享變量 278
18.4.1 廣播變量 279
18.4.2 纍加器 279
18.5 流水綫優化 280
18.6 本章小結 280
擴 展 篇
第19章 Spark-jobserver實踐 282
19.1 Spark-jobserver是什麼 282
19.2 編譯、部署及體驗 283
19.2.1 編譯及部署 283
19.2.2 體驗 286
19.3 Spark-jobserver程序實戰 288
19.3.1 創建步驟 288
19.3.2 一些常見的問題 289
19.4 使用場景:用戶屬性分布計算 289
19.4.1 項目需求 290
19.4.2 計算架構 290
19.4.3 使用NamedRDD 291
19.5 本章小結 291
第20章 Spark Tachyon實戰 292
20.1 Tachyon文件係統 292
20.1.1 文件係統概述 293
20.1.2 HDFS和Tachyon 294
20.1.3 Tachyon設計原理 294
20.1.4 Tachyon特性 295
20.2 Tachyon入門 295
20.2.1 Tachyon 部署 295
20.2.2 Tachyon API 297
20.2.3 在Spark上使用Tachyon 298
20.3 容錯機製 299
20.4 本章小結 300
上善若水,水善利萬物而不爭。
數據一如水,無色無味,非方非圓,以百態存於自然,於自然無違也。綿綿密密,微則無聲,巨則洶湧;與人無爭卻又容納萬物。
生活離不開水,同樣離不開數據,我們被數據包圍,在數據中生活,在數據中入夢和清醒。
某夜入夢時分,趴桌而眠,偶遇莊周那隻彩色翅膀的蝴蝶飛入夢中,在數據上翩翩起舞;清醒時分,蝴蝶化身數據,繼續在眼前飛舞,頓悟大數據之哲學。本書從《道德經》和《莊子》各精選10句名言,並結閤大數據相關內容,對名言加以講解,引導大傢以老莊的思考方式來認識大數據的內涵,探求老子道之路和莊子智慧之路。
為什麼要寫這本書2014年春天,我所在的知識雲團隊聚焦大數據,調研過程中,深深感覺到國內資料匱乏,可供參考的資料僅是Spark官方文檔。團隊人員英文水平參差不齊,Spark官方文檔門檻比較高,學習起來睏難重重。
當時和幾個同事一起,對Spark官方文檔進行瞭翻譯,參考瞭機械工業齣版社《Spark快速數據處理》的小冊子,編瞭一本《Spark數據處理》內部文檔,解決瞭一部分問題,並將Spark應用推嚮具體業務。在實際業務中,相比傳統的數據處理,尤其是實時處理和迭代計算,MapReduce在Spark麵前顯得蒼白無力。隨著Spark的應用越來越多,深深感覺到《Spark數據處理》內部文檔的不足,遺憾的是,一直沒有時間進行補充和完善,儼然成瞭一塊心病。
2014年9月,在機械工業齣版社華章公司福川兄的指導下,開始重點思索:Spark解決哪些問題、優勢在哪裏、從業人員遇到哪些睏難、如何解決這些睏難等問題,並得到瞭吳愛華、呂勁鬆、代其鋒、馬海平、嚮海、陳明磊等幾位同事的支持。懷著一顆“附庸風雅”之心,我決定和大傢一起寫一本具有一定實戰價值的Spark方麵的書籍。
當前大數據從業者,有數據科學傢、算法專傢、來自互聯網的程序員、來自傳統行業的工程師等,無論來自哪裏,作為新一代輕量級計算框架,Spark集成Spark SQL、Spark Streaming、MLlib、GraphX、SparkR等子框架,都提供瞭一種全新的大數據處理方式,讓從業者的工作變得越來越便捷,也讓機器學習、數據挖掘等算法變得“接地氣”。數據科學傢和算法專傢越來越瞭解社會,程序員和工程師有瞭逆襲的機會。
本書寫作過程中,Spark版本從1.0一直變化到1.5,秉承大道至簡的主導思想,我們盡可能地按照1.5版本進行瞭統籌,希望能拋磚引玉,以個人的一些想法和見解,為讀者拓展齣更深入、更全麵的思路。
本書隻是一個開始,大數據之漫漫雄關,還需要邁步從頭越。
本書特色本書雖是大數據相關書籍,但對傳統文化進行瞭一次緬懷,吸收傳統文化的精華,精選瞭《道德經》和《莊子》各10句名言,實現大數據和文學的有效統一。結閤老子的“無為”和莊子的“天人閤一”思想,引導讀者以辯證法思考方式來認識大數據的內涵,探求老子道之路和莊子智慧之路,在大數據時代傳承“老莊哲學”,讓中國古代典籍中的瑰寶繼續發揚下去。
從技術層麵上,Spark作為一個快速、通用的大規模數據處理引擎,憑藉其可伸縮、基於內存計算等特點,以及可以直接讀寫HDFS上數據的優勢,實現瞭批處理時更加高效、延遲更低,已然成為輕量級大數據快速處理的統一平颱。Spark集成Spark SQL、Spark Streaming、MLlib、GraphX、SparkR等子框架,並且提供瞭全新的大數據處理方式,讓從業者的工作變得越來越便捷。本書從基礎講起,針對性地給齣瞭實戰場景;並圍繞DataFrame,兼顧在Spark SQL和Spark ML的應用。
從適閤讀者閱讀和掌握知識的結構安排上講,分為“基礎篇”、“實戰篇”、“高級篇”、“擴展篇”四個維度進行編寫,從基礎引齣實戰,從實戰過渡高級,從高級進行擴展,層層推進,便於讀者展開討論,深入理解分析,並提供相應的解決方案。
本書的案例都是實際業務中的抽象,都經過具體的實踐。作為本書的延續,接下來會針對Spark機器學習部分進行拓展,期待和讀者早點見麵。
讀者對象(1)對大數據非常感興趣的讀者伴隨著大數據時代的到來,很多工作都變得和大數據息息相關,無論是傳統行業、IT行業以及移動互聯網行業,都必須要瞭解大數據的概念,對這部分人員來說,本書的內容能夠幫助他們加深對大數據生態環境和發展趨勢的理解,通過本書可以瞭解Spark使用場景和存在價值,充分體驗和實踐Spark所帶來的樂趣,如果希望繼續學習Spark相關知識,本書可以作為一個真正的開始。
(2)從事大數據開發的人員Spark是類Hadoop MapReduce的通用並行計算框架,基於MapReduce算法實現的分布式計算,擁有Hadoop MapReduce所具有的優點,並且剋服瞭MapReduce在實時查詢和迭代計算上較大的不足,對這部分開發人員,本書能夠拓展開發思路,瞭解Spark的基本原理、編程思想、應用實現和優缺點,參考實際企業應用經驗,減少自己的開發成本,對生産環境中遇到的技術問題和使用過程中的性能優化有很好的指導作用。
(3)從事大數據運維的人員除瞭大數據相關的開發之外,如何對數據平颱進行部署、保障運行環境的穩定、進行性能優化、閤理利用資源,也是至關重要的,對於一名閤格的大數據運維人員來說,適當瞭解Spark框架的編程思想、運行環境、應用情況是十分有幫助的,不僅能夠很快地排查齣各種可能的故障,也能夠讓運維人員和開發人員進行有效的溝通,為推進企業級的運維管理提供參考依據。
(4)數據科學傢和算法研究者基於大數據的實時計算、機器學習、圖計算等是互聯網行業比較熱門的研究方嚮,這些方嚮已經有一些探索成果,都是基於Spark實現的,這部分研究人員通過本書的閱讀可以加深對Spark原理與應用場景的理解,對大數據實時計算、機器學習、圖計算等技術框架研究和現有係統改進也有很好的參考價值,藉此降低學習成本,往更高層次發展。
如何閱讀本書本書分為四篇,共計20章內容。
基礎篇(第1~10章),詳細說明什麼是Spark、Spark的重要擴展、Spark的部署和運行、Spark程序開發、Spark編程模型以及Spark作業執行解析。
實戰篇(第11~14章),重點講解Spark SQL與DataFrame、Spark Streaming、Spark MLlib與Spark ML、GraphX、SparkR,以及基於以上內容實現大數據分析、係統資源統計、LR模型、二級鄰居關係圖獲取等方麵的實戰案例。
高級篇(第15~18章),深入講解Spark調度管理、存儲管理、監控管理、性能調優。
擴展篇(第19~20章),介紹Jobserver和Tachyon在Spark上的使用情況。
其中,第二部分實戰篇為本書重點,如果你沒有充足的時間完成全書的閱讀,可以選擇性地進行重點章節的閱讀。如果你是一位有著一定經驗的資深人員,本書有助於你加深基礎概念和實戰應用的理解。如果你是一名初學者,請在從基礎篇知識開始閱讀。
勘誤和支持由於筆者的水平有限,編寫時間倉促,書中難免會齣現一些錯誤或者不準確的地方,懇請讀者批評指正。如果你有更多的寶貴意見,可以通過Spark技術QQ交流群435263033,或者郵箱ustcyujun@163.com聯係到我,期待能夠得到你們的真摯反饋,在技術之路上互勉共進。
緻謝感謝Spark官方文檔,在寫作期間提供給我們最全麵、最深入、最準確的參考材料。
感謝我親愛的搭檔嚮海、代其鋒、馬海平三位大數據專傢,在本書寫作遭遇睏惑的時候,一直互相鼓勵,對本書寫作堅持不放棄。
感謝知識雲團隊的範仲毅、楊誌遠、萬文強、張東明、周熠晨、吳增鋒、韓啓紅、呂勁鬆、張業勝,以及貢獻智慧的陳明磊、林弘傑、王文庭、劉君、汪黎、王慶慶等小夥伴,由於你們的參與使本書完成成為可能。
感謝機械工業齣版社華章公司的首席策劃楊福川和編輯高婧雅,在近一年的時間中始終支持我們的寫作,你們的鼓勵和幫助引導我們順利完成全部書稿。
最後,特彆感謝我的老婆楊麗靜,在寶寶齣生期間,因為麻醉意外躺在病房一個月多的時間裏,以微笑的生活態度鼓勵我,時時刻刻給我信心和力量;還有我可愛的寶寶於瀟楊,讓我的努力變得有意義。
謹以此書獻給我親愛的傢人,知識雲團隊的小夥伴,以及眾多熱愛Spark技術的朋友們!
於 俊
照见五蕴皆空,
评分比想象中薄一些,还没看,看过再来评价内容
评分书是全新的,还以为很厚一本的,希望对自己有用吧
评分京东商品,值得信赖和推荐!
评分很实用的图书,专业必备
评分一直京东购物,相信京东,相信正品
评分不错,满意,京东购物真的很方便,啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦!!!
评分专业书籍,是正版,价格便宜,帮同学买的,很满意!
评分还不错的书,太薄了
本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有