Spark是當今大數據領域最活躍、最熱門、最高效的大數據通用計算平台,是Apache軟體基金會下所有開源項目中三大頂級開源項目之一。
基本介紹
- 書名:大數據Spark企業級實戰
- 又名:決勝大數據時代Spark全系列書籍
- 作者:王家林
- ISBN: 9787121247446
- 頁數:812
- 出版社:電子工業出版社
- 出版時間:2015-1
- 裝幀:平裝
- 定價:129
內容簡介,作者簡介,目錄,
內容簡介
在“One Stack to rule them all”理念的指引下,Spark基於RDD成功地構建起了大數據處理的一體化解決方案,將MapReduce、Streaming、SQL、Machine Learning、Graph Processing等大數據計算模型統一到一個技術堆疊中,開發者使用一致的API操作Spark中的所有功能;更為重要的是Spark的Spark SQL、MLLib、GraphX、Spark Streaming等四大子框架之間可以在記憶體中完美的無縫集成並可以互相操作彼此的數據,這不僅打造了Spark在當今大數據計算領域其他任何計算框架都無可匹敵的優勢,更使得Spark正在加速成為大數據處理中心首選的和唯一的計算平台。
《大數據Spark企業級實戰》詳細解析了企業級Spark開發所需的幾乎所有技術內容,涵蓋Spark的架構設計、Spark的集群搭建、Spark核心的解析、Spark SQL、MLLib、GraphX、Spark Streaming、Tachyon、SparkR、Spark多語言編程、Spark常見問題及調優等,並且結合Spark源碼細緻的解析了Spark核心和四大子框架,最後在附錄中提供了的Spark的開發語言Scala快速入門實戰內容,學習完此書即可勝任絕大多數的企業級Spark開發需要。
《大數據Spark企業級實戰》從零起步,完全從企業處理大數據業務場景的角度出發,基於實戰代碼來組織內容,對於一名大數據愛好者來說,《大數據Spark企業級實戰》內容可以幫助您一站式地完成從零起步到進行Spark企業級開發所需要的全部核心內容和實戰需要。
作者簡介
Spark亞太研究院院長和首席專家,移動網際網路、雲計算和大數據技術領域技術集大成者。在Spark、Hadoop、Android、Docker等方面有豐富的源碼、實務和性能最佳化經驗。徹底研究了Spark從0.5.0到1.1.0共18個版本的Spark源碼,電子書《Spark+GraphX大規模圖計算和圖挖掘》、《Spark實戰高手之路》的作者。從2014年6月24日開始,在網上開啟了免費的Spark公開課《決勝大數據時代100期公益大講堂》。2014年12月6-7號,在北京珠三角萬豪酒店組織了主題為“技術走向視野”的Spark亞太技術峰會。
Hadoop源碼級專家,曾負責某知名公司的類Hadoop框架開發工作,專注於Hadoop一站式解決方案的提供,同時也是雲計算分散式大數據處理的最早實踐者之一。
Android架構師、高級工程師、諮詢顧問、培訓專家。
通曉Spark、Hadoop、Android、HTML5,迷戀英語播音和健美。
目錄
第1章 Spark編程模型 1
1.1 Spark:一體化、多元化的高速
大數據通用計算平台和庫 1
1.1.1 為什麼需要使用Spark 5
1.1.2 Spark技術生態系統簡介 9
1.2 Spark大數據處理框架 20
1.2.1 Spark速度為何如此之快 20
1.2.2 RDD:分散式函式式編程 24
1.3 Spark子框架解析 28
1.3.1 圖計算框架Spark GraphX 28
1.3.2 實時流處理框架(Spark Streaming) 41
1.3.3 互動式SQL處理框架Spark SQL 46
1.3.4 機器學習框架(Spark MLlib) 49
第2章 構建Spark分散式集群 55
2.1 搭建Hadoop單機版本和偽分散式開發環境 55
2.1.1 開發Hadoop需要的基本軟體 56
2.1.2 安裝每個軟體 58
2.1.3 配置Hadoop單機模式並運行Wordcount示例 76
2.1.3 配置Hadoop偽分布模式並運行Wordcount示例 84
2. 2 搭建 Hadoop分散式集群的 92
2.2.1 在VMWare 中準備第二、第三台運行Ubuntu系統的機器 92
2.2.2 按照配置偽分散式模式的方式配置新創建運行Ubuntu系統的機器 93
2.2.3 配置Hadoop分散式集群環境 94
2.2.4 測試Hadoop分散式集群環境 105
2.3 Spark集群的動手搭建 108
2.3.1 Spark集群需要的軟體 108
2.3.2 安裝每個軟體 110
2.3.3 啟動並查看集群的狀況 116
2.4 構建Hadoop單機版本和偽分散式環境 120
2.4.1 通過Spark的shell測試Spark的工作 121
2.4.2 使用Spark的cache機制觀察一下效率的提升 125
第3章 Spark開發環境及其測試 129
3.1 搭建和設定IDEA開發環境 129
3.1.1 構建Spark的IDE開發環境 129
3.1.2 配置Spark的IDE開發環境 132
3.2 測試IDEA環境 146
3.3 實戰:在IDEA中開發代碼,並運行在Spark集群中 148
第4章 Spark RDD與編程API實戰 159
4.1 深度解析Spark RDD 159
4.2 Transformation Operations動手實戰 165
4.3 Action Operations動手實戰 175
4.4 Spark API綜合實戰 179
第5章 Spark運行模式深入解析 191
5.1 Spark運行模式概述 192
5.1.1 Spark的運行模式列表 196
5.1.2 Spark的基本工作流程 197
5.2 Standalone模式 201
5.2.1 部署及程式運行 202
5.2.2 內部實現原理 206
5.3 Yarn-Cluster模式 234
5.3.1 部署及程式運行 235
5.3.2 內部實現原理 237
5.4 Yarn-Client模式 243
5.4.1 部署及運行程式 243
5.4.2 內部實現原理 244
第6章 Spark核心解析 247
6.1 Spark核心初探 247
6.1.1 Spark核心核心術語解析 247
6.1.2 Spark集群概覽 250
6.1.3 Spark核心組件 251
6.1.4 Spark任務調度系統初見 252
6.2 Spark核心核心源碼解讀 256
6.2.1 SparkContext核心源碼解析初體驗 256
6.2.2 TaskSceduler啟動源碼解析初體驗 260
6.2.3 DAGScheduler源碼解讀初體驗 261
6.2.4 Spark的Web監控頁面 262
6.3 以RDD的count操作為例觸發Job全生命周期源碼研究 263
6.4 Akka驅動下的Driver、Master、Worker 276
6.4.1 Driver中的AppClient源碼解析 276
6.4.2 AppClient註冊Master 279
6.4.3 Worker中Executor啟動過程原始碼解析 282
第7章 GraphX大規模圖計算與圖挖掘實戰 287
7.1 Spark GraphX概覽 288
7.2 Spark GraphX設計實現的核心原理 291
7.3 Table operator和Graph Operator 295
7.4 Vertices、edges、triplets 296
7.5 以最原始的方式構建graph 299
7.6 動手編寫第一個Graph代碼實例並進行Vertices、edges、triplets操作 299
7.7 在Spark集群上使用檔案中的數據載入成為graph並進行操作 310
7.8 在Spark集群上掌握比較重要的圖操作 320
7.9 Spark GraphX圖算法 342
7.10 淘寶對Spark GraphX的大規模使用 347
第8章 Spark SQL原理與實戰 349
8.1 為什麼使用Spark SQL 349
8.1.1 Spark SQL的發展歷程 349
8.1.2 Spark SQL的性能 351
8.2 Spark SQL運行架構 355
8.2.1 Tree和Rule 357
8.2.2 sqlContext的運行過程 360
8.2.3 hiveContext的運行過程 362
8.2.4 catalyst最佳化器 365
8.3 解析Spark SQL組件 367
8.3.1 LogicalPlan 367
8.3.2 SqlParser 370
8.3.3 Analyzer 378
8.3.4 Optimizer 381
8.4 深入了解Spark SQL運行的計畫 383
8.4.1 hive/console的安裝過程和原理 383
8.4.2 常用操作 386
8.4.3 不同數據源的運行計畫 388
8.4.4 不同查詢的運行計畫 391
8.4.5 查詢的最佳化 393
8.5 搭建測試環境 396
8.5.1 搭建虛擬集群(Hadoop1、Hadoop2、Hadoop3) 397
8.5.2 搭建客戶端 398
8.5.3 檔案數據的準備工作 399
8.5.4 Hive數據的準備工作 399
8.6 Spark SQL之基礎套用 400
8.6.1 sqlContext的基礎套用 402
8.6.2 hiveContext的基礎套用 405
8.6.3 混合使用 408
8.6.4 快取的使用 409
8.6.5 DSL的使用 410
8.7 ThriftServer和CLI 411
8.7.1 令人驚訝的CLI 411
8.7.2 ThriftServer 414
8.8 Spark SQL之綜合套用 418
8.8.1 店鋪分類 419
8.8.2 PageRank 421
8.9 Spark SQL之調優 424
8.9.1 並行性 424
8.9.2 高效的數據格式 425
8.9.3 記憶體的使用 427
8.9.4 合適的Task 428
8.9.5 其他的一些建議 428
第9章 Machine Learning on Spark 431
9.1 Spark MLlib機器學習 431
9.1.1 機器學習快速入門 432
9.1.2 Spark MLlib介紹 442
9.1.3 Spark MLlib架構解析 447
9.1.4 Spark Mllib核心解析 458
9.2 MLlib經典算法解析和案例實戰 462
9.2.1 Linear Regression解析和實戰 462
9.2.2 K-Means解析和實戰 484
9.2.3 協同過濾算法分析和案例實戰 502
9.3 MLLib其他常用算法解析和代碼實戰 552
9.3.1 Basic Statics解析和實戰 553
9.3.2 MLlib樸素貝葉斯解析和實戰 560
9.3.3 MLlib決策樹解析和實戰 562
第10章 Tachyon檔案系統 565
10.1 Tachyon檔案系統概述 565
10.1.1 Tachyon檔案系統簡介 565
10.1.2 HDFS與Tachyon 566
10.1.3 Tachyon設計原理 568
10.2 Tachyon入門 568
10.2.1 Tachyon部署 568
10.2.2 Tachyon API的使用 570
10.2.3 在MapReduce、Spark上使用Tachyon 572
10.3 Tachyon深度解析 573
10.3.1 Tachyon整體設計概述 573
10.3.2 Tachyon Master啟動流程分析 574
10.3.3 Tachyon Worker啟動流程分析 577
10.3.4 客戶端讀寫檔案源碼分析 577
10.4 Tachyon配置參數一覽 579
10.5 小結 580
第11章 Spark Streaming原理與實戰 581
11.1 Spark Streaming原理 581
11.1.1 原理和運行場景 581
11.1.2 編程模型DStream 584
11.1.3 持久化、容錯和最佳化 588
11.2 Spark Streaming實戰 589
11.2.1 源碼解析 589
11.2.2 Spark Streaming實戰案例 600
第12章 Spark多語言編程 605
12.1 Spark多語言編程的特點 605
12.2 Spark編程模型 609
12.3 深入Spark多語言編程 611
12.4 Spark多語言編程綜合實例 622
第13章 R語言的分散式編程之SparkR 627
13.1 R語言快速入門 627
13.1.1 R語言是什麼 627
13.1.2 R語言的特點 629
13.1.3 R語言的安裝 630
13.1.4 R的核心概念 630
13.1.5 R動手實戰 631
13.2 使用SparkR 661
13.2.1 SparkR的安裝 661
13.2.2 使用SparkR編寫WordCount 662
13.2.3 使用SparkR的更多代碼示例 662
第14章 Spark性能調優和最佳實踐 665
14.1 Spark性能調優 665
14.1.1 Spark性能最佳化的12大問題及其解決方法 665
14.1.2 Spark記憶體最佳化 669
14.1.3 RDD分區 672
14.1.4 Spark性能最佳化實例 674
14.2 Spark性能調優細節 675
14.2.1 broadcast和accumulator 675
14.2.2 reduce 和 reduceByKey 676
14.2.3 深入reduceByKey 677
第15章 Spark源碼解析 679
15.1 BlockManager源碼解析 679
15.2 Cache源碼解析 707
15.3 Checkpoint源碼解析 725
附錄A 動手實戰Scala三部曲 733
第一部動手體驗Scala 735
第二部 動手實戰Scala面向對象編程 746
第三部動手實戰Scala函式式編程 761
1.1 Spark:一體化、多元化的高速
大數據通用計算平台和庫 1
1.1.1 為什麼需要使用Spark 5
1.1.2 Spark技術生態系統簡介 9
1.2 Spark大數據處理框架 20
1.2.1 Spark速度為何如此之快 20
1.2.2 RDD:分散式函式式編程 24
1.3 Spark子框架解析 28
1.3.1 圖計算框架Spark GraphX 28
1.3.2 實時流處理框架(Spark Streaming) 41
1.3.3 互動式SQL處理框架Spark SQL 46
1.3.4 機器學習框架(Spark MLlib) 49
第2章 構建Spark分散式集群 55
2.1 搭建Hadoop單機版本和偽分散式開發環境 55
2.1.1 開發Hadoop需要的基本軟體 56
2.1.2 安裝每個軟體 58
2.1.3 配置Hadoop單機模式並運行Wordcount示例 76
2.1.3 配置Hadoop偽分布模式並運行Wordcount示例 84
2. 2 搭建 Hadoop分散式集群的 92
2.2.1 在VMWare 中準備第二、第三台運行Ubuntu系統的機器 92
2.2.2 按照配置偽分散式模式的方式配置新創建運行Ubuntu系統的機器 93
2.2.3 配置Hadoop分散式集群環境 94
2.2.4 測試Hadoop分散式集群環境 105
2.3 Spark集群的動手搭建 108
2.3.1 Spark集群需要的軟體 108
2.3.2 安裝每個軟體 110
2.3.3 啟動並查看集群的狀況 116
2.4 構建Hadoop單機版本和偽分散式環境 120
2.4.1 通過Spark的shell測試Spark的工作 121
2.4.2 使用Spark的cache機制觀察一下效率的提升 125
第3章 Spark開發環境及其測試 129
3.1 搭建和設定IDEA開發環境 129
3.1.1 構建Spark的IDE開發環境 129
3.1.2 配置Spark的IDE開發環境 132
3.2 測試IDEA環境 146
3.3 實戰:在IDEA中開發代碼,並運行在Spark集群中 148
第4章 Spark RDD與編程API實戰 159
4.1 深度解析Spark RDD 159
4.2 Transformation Operations動手實戰 165
4.3 Action Operations動手實戰 175
4.4 Spark API綜合實戰 179
第5章 Spark運行模式深入解析 191
5.1 Spark運行模式概述 192
5.1.1 Spark的運行模式列表 196
5.1.2 Spark的基本工作流程 197
5.2 Standalone模式 201
5.2.1 部署及程式運行 202
5.2.2 內部實現原理 206
5.3 Yarn-Cluster模式 234
5.3.1 部署及程式運行 235
5.3.2 內部實現原理 237
5.4 Yarn-Client模式 243
5.4.1 部署及運行程式 243
5.4.2 內部實現原理 244
第6章 Spark核心解析 247
6.1 Spark核心初探 247
6.1.1 Spark核心核心術語解析 247
6.1.2 Spark集群概覽 250
6.1.3 Spark核心組件 251
6.1.4 Spark任務調度系統初見 252
6.2 Spark核心核心源碼解讀 256
6.2.1 SparkContext核心源碼解析初體驗 256
6.2.2 TaskSceduler啟動源碼解析初體驗 260
6.2.3 DAGScheduler源碼解讀初體驗 261
6.2.4 Spark的Web監控頁面 262
6.3 以RDD的count操作為例觸發Job全生命周期源碼研究 263
6.4 Akka驅動下的Driver、Master、Worker 276
6.4.1 Driver中的AppClient源碼解析 276
6.4.2 AppClient註冊Master 279
6.4.3 Worker中Executor啟動過程原始碼解析 282
第7章 GraphX大規模圖計算與圖挖掘實戰 287
7.1 Spark GraphX概覽 288
7.2 Spark GraphX設計實現的核心原理 291
7.3 Table operator和Graph Operator 295
7.4 Vertices、edges、triplets 296
7.5 以最原始的方式構建graph 299
7.6 動手編寫第一個Graph代碼實例並進行Vertices、edges、triplets操作 299
7.7 在Spark集群上使用檔案中的數據載入成為graph並進行操作 310
7.8 在Spark集群上掌握比較重要的圖操作 320
7.9 Spark GraphX圖算法 342
7.10 淘寶對Spark GraphX的大規模使用 347
第8章 Spark SQL原理與實戰 349
8.1 為什麼使用Spark SQL 349
8.1.1 Spark SQL的發展歷程 349
8.1.2 Spark SQL的性能 351
8.2 Spark SQL運行架構 355
8.2.1 Tree和Rule 357
8.2.2 sqlContext的運行過程 360
8.2.3 hiveContext的運行過程 362
8.2.4 catalyst最佳化器 365
8.3 解析Spark SQL組件 367
8.3.1 LogicalPlan 367
8.3.2 SqlParser 370
8.3.3 Analyzer 378
8.3.4 Optimizer 381
8.4 深入了解Spark SQL運行的計畫 383
8.4.1 hive/console的安裝過程和原理 383
8.4.2 常用操作 386
8.4.3 不同數據源的運行計畫 388
8.4.4 不同查詢的運行計畫 391
8.4.5 查詢的最佳化 393
8.5 搭建測試環境 396
8.5.1 搭建虛擬集群(Hadoop1、Hadoop2、Hadoop3) 397
8.5.2 搭建客戶端 398
8.5.3 檔案數據的準備工作 399
8.5.4 Hive數據的準備工作 399
8.6 Spark SQL之基礎套用 400
8.6.1 sqlContext的基礎套用 402
8.6.2 hiveContext的基礎套用 405
8.6.3 混合使用 408
8.6.4 快取的使用 409
8.6.5 DSL的使用 410
8.7 ThriftServer和CLI 411
8.7.1 令人驚訝的CLI 411
8.7.2 ThriftServer 414
8.8 Spark SQL之綜合套用 418
8.8.1 店鋪分類 419
8.8.2 PageRank 421
8.9 Spark SQL之調優 424
8.9.1 並行性 424
8.9.2 高效的數據格式 425
8.9.3 記憶體的使用 427
8.9.4 合適的Task 428
8.9.5 其他的一些建議 428
第9章 Machine Learning on Spark 431
9.1 Spark MLlib機器學習 431
9.1.1 機器學習快速入門 432
9.1.2 Spark MLlib介紹 442
9.1.3 Spark MLlib架構解析 447
9.1.4 Spark Mllib核心解析 458
9.2 MLlib經典算法解析和案例實戰 462
9.2.1 Linear Regression解析和實戰 462
9.2.2 K-Means解析和實戰 484
9.2.3 協同過濾算法分析和案例實戰 502
9.3 MLLib其他常用算法解析和代碼實戰 552
9.3.1 Basic Statics解析和實戰 553
9.3.2 MLlib樸素貝葉斯解析和實戰 560
9.3.3 MLlib決策樹解析和實戰 562
第10章 Tachyon檔案系統 565
10.1 Tachyon檔案系統概述 565
10.1.1 Tachyon檔案系統簡介 565
10.1.2 HDFS與Tachyon 566
10.1.3 Tachyon設計原理 568
10.2 Tachyon入門 568
10.2.1 Tachyon部署 568
10.2.2 Tachyon API的使用 570
10.2.3 在MapReduce、Spark上使用Tachyon 572
10.3 Tachyon深度解析 573
10.3.1 Tachyon整體設計概述 573
10.3.2 Tachyon Master啟動流程分析 574
10.3.3 Tachyon Worker啟動流程分析 577
10.3.4 客戶端讀寫檔案源碼分析 577
10.4 Tachyon配置參數一覽 579
10.5 小結 580
第11章 Spark Streaming原理與實戰 581
11.1 Spark Streaming原理 581
11.1.1 原理和運行場景 581
11.1.2 編程模型DStream 584
11.1.3 持久化、容錯和最佳化 588
11.2 Spark Streaming實戰 589
11.2.1 源碼解析 589
11.2.2 Spark Streaming實戰案例 600
第12章 Spark多語言編程 605
12.1 Spark多語言編程的特點 605
12.2 Spark編程模型 609
12.3 深入Spark多語言編程 611
12.4 Spark多語言編程綜合實例 622
第13章 R語言的分散式編程之SparkR 627
13.1 R語言快速入門 627
13.1.1 R語言是什麼 627
13.1.2 R語言的特點 629
13.1.3 R語言的安裝 630
13.1.4 R的核心概念 630
13.1.5 R動手實戰 631
13.2 使用SparkR 661
13.2.1 SparkR的安裝 661
13.2.2 使用SparkR編寫WordCount 662
13.2.3 使用SparkR的更多代碼示例 662
第14章 Spark性能調優和最佳實踐 665
14.1 Spark性能調優 665
14.1.1 Spark性能最佳化的12大問題及其解決方法 665
14.1.2 Spark記憶體最佳化 669
14.1.3 RDD分區 672
14.1.4 Spark性能最佳化實例 674
14.2 Spark性能調優細節 675
14.2.1 broadcast和accumulator 675
14.2.2 reduce 和 reduceByKey 676
14.2.3 深入reduceByKey 677
第15章 Spark源碼解析 679
15.1 BlockManager源碼解析 679
15.2 Cache源碼解析 707
15.3 Checkpoint源碼解析 725
附錄A 動手實戰Scala三部曲 733
第一部動手體驗Scala 735
第二部 動手實戰Scala面向對象編程 746
第三部動手實戰Scala函式式編程 761