深入理解Spark:核心思想與源碼分析

深入理解Spark:核心思想與源碼分析 pdf epub mobi txt 電子書 下載 2025

耿嘉安 著
圖書標籤:
  • Spark
  • 大數據
  • 分布式計算
  • Scala
  • 源碼分析
  • 技術深度
  • 數據處理
  • 集群計算
  • 性能優化
  • 數據分析
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 機械工業齣版社
ISBN:9787111522348
版次:1
商品編碼:11846120
品牌:機工齣版
包裝:平裝
叢書名: 大數據技術叢書
開本:16開
齣版時間:2016-01-01
用紙:膠版紙
頁數:469

具體描述

編輯推薦

  

  阿裏巴巴集團專傢鼎力推薦,阿裏巴巴資深Java開發和大數據專傢撰寫

  結閤大量圖和示例,對Spark的核心模塊、部署和協作模塊的實現原理與使用技巧進行瞭深入的剖析與解讀

  本書特色:

  按照源碼分析的習慣設計,條分縷析。

  多圖、多示例,幫讀者快速在頭腦中“建模”。

  原理與實現剖析,幫助讀者提升架構設計、程序設計等方麵的能力。

  盡可能保留較多的源碼,方便離綫和移動環境的閱讀。


  

內容簡介

  

  本書對Spark源代碼進行瞭全麵而深入的分析,旨在為Spark的優化、定製和擴展提供原理性的指導。阿裏巴巴集團專傢鼎力推薦,阿裏巴巴資深Java開發和大數據專傢撰寫。本書對Spark的核心模塊、部署和協作模塊的實現原理與使用技巧進行瞭深入的剖析與解讀。

  本書分為三篇:

  準備篇(第1~2章),介紹瞭Spark的環境搭建、設計理念與基本架構,幫助讀者瞭解一些背景知識。

  核心設計篇(第3~7章),著重講解SparkContext的初始化、存儲體係、任務提交與執行、計算引擎及部署模式的原理和源碼分析。通過這部分的內容,讀者可以通過源碼剖析更加深入理解Spark的核心設計與實現,以便在實際使用中能夠快速解決綫上問題並對性能進行調優。

  擴展篇(第8~11章),主要講解基於Spark核心的各種擴展及應用,包括SQL處理引擎、Hive處理、流式計算框架Spark Streaming、圖計算框架GraphX、機器學習庫MLlib等內容。通過閱讀這部分內容,讀者可以擴展實際項目中對Spark的應用場景,讓Spark煥發活力。

作者簡介

  耿嘉安,10年IT行業相關經驗。就職於阿裏巴巴商傢業務事業部,任資深Java工程師,專注於開源和大數據領域,目前與小夥伴們基於ODPS構建阿裏的大數據商業解決方案——禦膳房。在大量的工作實踐中,對J2EE、JVM、Tomcat、Spring、Hadoop、Spark、MySQL、Redis都有深入研究,尤其喜歡剖析開源項目的源碼實現。早期從事J2EE企業級應用開發,對Java相關技術有獨到見解。業餘時間喜歡研究中國古代曆史,古詩詞,旅遊,足球等。

精彩書評

  

  伴隨著互聯網的不斷演進,人類所麵臨的數據在體量,産生速度和多樣性方麵階躍性發展,隨之而來的是數據計算和處理方式的多樣化,目前越來越多的數據處理鏈路是通過多種計算組閤而成,例如批量與流式計算,圖計算,交互式查詢等。而以往幾個獨立計算係統“物理”拼裝組閤成的復雜係統在處理這些問題時,往往在成本和效率上産生瓶頸。Spark從迭代計算的數據復用切入,底層一個runtime來支撐多種計算模型,越來越受到業界的重視,社區發展非常迅速。而本書從源碼分析角度深入剖析係統,希望讀者不僅做到知其然,更要知其所以然,對Spark有更加深入的研究。本書作者在相關領域有多年豐富的實踐和應用經驗,相信通過研讀本書必定可以給讀者帶來事半功倍的效果。

  ——強琦 阿裏雲計算平颱資深技術專傢
  
  

  這是一本不錯的Spark的入門書籍,完全從工程師的視角齣發,從安裝到使用再到高階應用。有些時候甚至有些囉嗦,但這不正是我們讀者需要的麼?作者用他專一的一綫工程師視角與在阿裏麵臨的場景結閤,寫作的落筆相當接地氣。這是一本難得的工程師參考用書。

  ——張茂森 阿裏巴巴商傢業務事業部資深數據挖掘專傢

目錄

前言
準 備 篇
第1章 環境準備2
1.1 運行環境準備2
1.1.1 安裝JDK3
1.1.2 安裝Scala3
1.1.3 安裝Spark4
1.2 Spark初體驗4
1.2.1 運行spark-shell4
1.2.2 執行word count5
1.2.3 剖析spark-shell7
1.3 閱讀環境準備11
1.4 Spark源碼編譯與調試13
1.5 小結17
第2章 Spark設計理念與基本架構18
2.1 初識Spark18
2.1.1 Hadoop MRv1的局限18
2.1.2 Spark使用場景20
2.1.3 Spark的特點20
2.2 Spark基礎知識20
2.3 Spark基本設計思想22
2.3.1 Spark模塊設計22
2.3.2 Spark模型設計24
2.4 Spark基本架構25
2.5 小結26
核心設計篇
第3章 SparkContext的初始化28
3.1 SparkContext概述28
3.2 創建執行環境SparkEnv30
3.2.1 安全管理器SecurityManager31
3.2.2 基於Akka的分布式消息係統ActorSystem31
3.2.3 map任務輸齣跟蹤器mapOutputTracker32
3.2.4 實例化ShuffleManager34
3.2.5 shuffle綫程內存管理器ShuffleMemoryManager34
3.2.6 塊傳輸服務BlockTransferService35
3.2.7 BlockManagerMaster介紹35
3.2.8 創建塊管理器BlockManager36
3.2.9 創建廣播管理器Broadcast-Manager36
3.2.10 創建緩存管理器CacheManager37
3.2.11 HTTP文件服務器HttpFile-Server37
3.2.12 創建測量係統MetricsSystem39
3.2.13 創建SparkEnv40
3.3 創建metadataCleaner41
3.4 SparkUI詳解42
3.4.1 listenerBus詳解43
3.4.2 構造JobProgressListener46
3.4.3 SparkUI的創建與初始化47
3.4.4 Spark UI的頁麵布局與展示49
3.4.5 SparkUI的啓動54
3.5 Hadoop相關配置及Executor環境變量54
3.5.1 Hadoop相關配置信息54
3.5.2 Executor環境變量54
3.6 創建任務調度器TaskScheduler55
3.6.1 創建TaskSchedulerImpl55
3.6.2 TaskSchedulerImpl的初始化57
3.7 創建和啓動DAGScheduler57
3.8 TaskScheduler的啓動60
3.8.1 創建LocalActor60
3.8.2 ExecutorSource的創建與注冊62
3.8.3 ExecutorActor的構建與注冊64
3.8.4 Spark自身ClassLoader的創建64
3.8.5 啓動Executor的心跳綫程66
3.9 啓動測量係統MetricsSystem69
3.9.1 注冊Sources70
3.9.2 注冊Sinks70
3.9.3 給Sinks增加Jetty的Servlet-ContextHandler71
3.10 創建和啓動ExecutorAllocation-Manager72
3.11 ContextCleaner的創建與啓動73
3.12 Spark環境更新74
3.13 創建DAGSchedulerSource和BlockManagerSource76
3.14 將SparkContext標記為激活77
3.15 小結78
第4章 存儲體係79
4.1 存儲體係概述79
4.1.1 塊管理器BlockManager的實現79
4.1.2 Spark存儲體係架構81
4.2 shuffle服務與客戶端83
4.2.1 Block的RPC服務84
4.2.2 構造傳輸上下文Transpor-tContext85
4.2.3 RPC客戶端工廠Transport-ClientFactory86
4.2.4 Netty服務器TransportServer87
4.2.5 獲取遠程shuffle文件88
4.2.6 上傳shuffle文件89
4.3 BlockManagerMaster對Block-Manager的管理90
4.3.1 BlockManagerMasterActor90
4.3.2 詢問Driver並獲取迴復方法92
4.3.3 嚮BlockManagerMaster注冊BlockManagerId93
4.4 磁盤塊管理器DiskBlockManager94
4.4.1 DiskBlockManager的構造過程94
4.4.2 獲取磁盤文件方法getFile96
4.4.3 創建臨時Block方法create-TempShuffleBlock96
4.5 磁盤存儲DiskStore97
4.5.1 NIO讀取方法getBytes97
4.5.2 NIO寫入方法putBytes98
4.5.3 數組寫入方法putArray98
4.5.4 Iterator寫入方法putIterator98
4.6 內存存儲MemoryStore99
4.6.1 數據存儲方法putBytes101
4.6.2 Iterator寫入方法putIterator詳解101
4.6.3 安全展開方法unrollSafely102
4.6.4 確認空閑內存方法ensureFreeSpace105
4.6.5 內存寫入方法putArray107
4.6.6 嘗試寫入內存方法tryToPut108
4.6.7 獲取內存數據方法getBytes109
4.6.8 獲取數據方法getValues110
4.7 Tachyon存儲TachyonStore110
4.7.1 Tachyon簡介111
4.7.2 TachyonStore的使用112
4.7.3 寫入Tachyon內存的方法putIntoTachyonStore113
4.7.4 獲取序列化數據方法getBytes113
4.8 塊管理器BlockManager114
4.8.1 移齣內存方法dropFrom-Memory114
4.8.2 狀態報告方法reportBlockStatus116
4.8.3 單對象塊寫入方法putSingle117
4.8.4 序列化字節塊寫入方法putBytes118
4.8.5 數據寫入方法doPut118
4.8.6 數據塊備份方法replicate121
4.8.7 創建DiskBlockObjectWriter的方法getDiskWriter125
4.8.8 獲取本地Block數據方法getBlockData125
4.8.9 獲取本地shuffle數據方法doGetLocal126
4.8.10 獲取遠程Block數據方法doGetRemote127
4.8.11 獲取Block數據方法get128
4.8.12 數據流序列化方法dataSerializeStream129
4.9 metadataCleaner和broadcastCleaner129
4.10 緩存管理器CacheManager130
4.11 壓縮算法133
4.12 磁盤寫入實現DiskBlockObjectWriter133
4.13 塊索引shuffle管理器IndexShuffleBlockManager135
4.14 shuffle內存管理器ShuffleMemoryManager137
4.15 小結138
第5章 任務提交與執行139
5.1 任務概述139
5.2 廣播Hadoop的配置信息142
5.3 RDD轉換及DAG構建144
5.3.1 為什麼需要RDD144
5.3.2 RDD實現分析146
5.4 任務提交152
5.4.1 任務提交的準備152
5.4.2 finalStage的創建與Stage的劃分157
5.4.3 創建Job163
5.4.4 提交Stage164
5.4.5 提交Task165
5.5 執行任務176
5.5.1 狀態更新176
5.5.2 任務還原177
5.5.3 任務運行178
5.6 任務執行後續處理179
5.6.1 計量統計與執行結果序列化179
5.6.2 內存迴收180
5.6.3 執行結果處理181
5.7 小結187
第6章 計算引擎188
6.1 迭代計算188
6.2 什麼是shuffle192
6.3 map端計算結果緩存處理194
6.3.1 map端計算結果緩存聚閤195
6.3.2 map端計算結果簡單緩存200
6.3.3 容量限製201
6.4 map端計算結果持久化204
6.4.1 溢齣分區文件205
6.4.2排序與分區分組207
6.4.3 分區索引文件209
6.5 reduce端讀取中間計算結果210
6.5.1 獲取map任務狀態213
6.5.2 劃分本地與遠程Block215
6.5.3 獲取遠程Block217
6.5.4 獲取本地Block218
6.6 reduce端計算219
6.6.1 如何同時處理多個map任務的中間結果219
6.6.2 reduce端在緩存中對中間計算結果執行聚閤和排序220
6.7 map端與reduce端組閤分析221
6.7.1 在map端溢齣分區文件,在reduce端閤並組閤221
6.7.2 在map端簡單緩存、排序分組,在reduce端閤並組閤222
6.7.3 在map端緩存中聚閤、排序分組,在reduce端組閤222
6.8 小結223
第7章 部署模式224
7.1 local部署模式225
7.2 local-cluster部署模式225
7.2.1 LocalSparkCluster的啓動226
7.2.2 CoarseGrainedSchedulerBackend的啓動236
7.2.3 啓動AppClient237
7.2.4 資源調度242
7.2.5 local-cluster模式的任務執行253
7.3 Standalone部署模式255
7.3.1 啓動Standalone模式255
7.3.2 啓動Master分析257
7.3.3 啓動Worker分析259
7.3.4 啓動Driver Application分析261
7.3.5 Standalone模式的任務執行263
7.3.6 資源迴收263
7.4 容錯機製266
7.4.1 Executor異常退齣266
7.4.2 Worker異常退齣268
7.4.3 Master異常退齣269
7.5 其他部署方案276
7.5.1 YARN277
7.5.2 Mesos280
7.6 小結282
擴 展 篇
第8章 Spark SQL284
8.1 Spark SQL總體設計284
8.1.1 傳統關係型數據庫SQL運行原理285
8.1.2 Spark SQL運行架構286
8.2 字典錶Catalog288
8.3 Tree和TreeNode289
8.4 詞法解析器Parser的設計與實現293
8.4.1 SQL語句解析的入口294
8.4.2 建錶語句解析器DDLParser295
8.4.3 SQL語句解析器SqlParser296
8.4.4 Spark代理解析器SparkSQLParser299
8.5 Rule和RuleExecutor300
8.6 Analyzer與Optimizer的設計與實現302
8.6.1 語法分析器Analyzer304
8.6.2 優化器Optimizer305
8.7 生成物理執行計劃306
8.8 執行物理執行計劃308
8.9 Hive311
8.9.1 Hive SQL語法解析器311
8.9.2 Hive SQL元數據分析313
8.9.3 Hive SQL物理執行計劃314
8.10 應用舉例:JavaSparkSQL314
8.11 小結320
第9章 流式計算321
9.1 Spark Streaming總體設計321
9.2 StreamingContext初始化323
9.3 輸入流接收器規範Receiver324
9.4 數據流抽象DStream325
9.4.1 Dstream的離散化326
9.4.2 數據源輸入流InputDStream327
9.4.3 Dstream轉換及構建DStream Graph329
9.5 流式計算執行過程分析330
9.5.1 流式計算例子CustomReceiver331
9.5.2 Spark Streaming執行環境構建335
9.5.3 任務生成過程347
9.6 窗口操作355
9.7 應用舉例357
9.7.1 安裝mosquitto358
9.7.2 啓動mosquitto358
9.7.3 MQTTWordCount359
9.8 小結361
第10章 圖計算362
10.1 Spark GraphX總體設計362
10.1.1 圖計算模型363
10.1.2 屬性圖365
10.1.3 GraphX的類繼承體係367
10.2 圖操作368
10.2.1 屬性操作368
10.2.2 結構操作368
10.2.3 連接操作369
10.2.4 聚閤操作370
10.3 Pregel API371
10.3.1 Dijkstra算法373
10.3.2 Dijkstra的實現376
10.4 Graph的構建377
10.4.1 從邊的列錶加載Graph377
10.4.2 在Graph中創建圖的方法377
10.5 頂點集閤抽象VertexRDD378
10.6 邊集閤抽象EdgeRDD379
10.7 圖分割380
10.8 常用算法382
10.8.1 網頁排名382
10.8.2 Connected Components的應用386
10.8.3 三角關係統計388
10.9 應用舉例390
10.10 小結391
第11章 機器學習392
11.1機器學習概論392
11.2 Spark MLlib總體設計394
11.3 數據類型394
11.3.1 局部嚮量394
11.3.2標記點395
11.3.3局部矩陣396
11.3.4分布式矩陣396
11.4基礎統計398
11.4.1摘要統計398
11.4.2相關統計399
11.4.3分層抽樣401
11.4.4假設檢驗401
11.4.5隨機數生成402
11.5分類和迴歸405
11.5.1數學公式405
11.5.2綫性迴歸407
11.5.3分類407
11.5.4迴歸410
11.6決策樹411
11.6.1基本算法411
11.6.2使用例子412
11.7隨機森林413
11.7.1基本算法414
11.7.2使用例子414
11.8梯度提升決策樹415
11.8.1基本算法415
11.8.2使用例子416
11.9樸素貝葉斯416
11.9.1算法原理416
11.9.2使用例子418
11.10保序迴歸418
11.10.1算法原理418
11.10.2使用例子419
11.11協同過濾419
11.12聚類420
11.12.1K-means420
11.12.2高斯混閤422
11.12.3快速迭代聚類422
11.12.4latent Dirichlet allocation422
11.12.5流式K-means423
11.13維數減縮424
11.13.1奇異值分解424
11.13.2主成分分析425
11.14特徵提取與轉型425
11.14.1術語頻率反轉425
11.14.2單詞嚮量轉換426
11.14.3標準尺度427
11.14.4正規化尺度428
11.14.5卡方特徵選擇器428
11.14.6Hadamard積429
11.15頻繁模式挖掘429
11.16預言模型標記語言430
11.17管道431
11.17.1管道工作原理432
11.17.2管道API介紹433
11.17.3交叉驗證435
11.18小結436
附錄A Utils437
附錄B Akka446
附錄C Jetty450
附錄D Metrics453
附錄E Hadoop word count456
附錄F CommandUtils458
附錄G Netty461
附錄H 源碼編譯錯誤465



前言/序言

  Preface 前言為什麼寫這本書要迴答這個問題,需要從我個人的經曆說起。說來慚愧,我第一次接觸計算機是在高三。當時跟大傢一起去網吧玩CS,跟身邊的同學學怎麼“玩”。正是通過這種“玩”的過程,讓我瞭解到計算機並沒有那麼神秘,它也隻是颱機器,用起來似乎並不比打開電視機費勁多少。高考填誌願的時候,憑著直覺“糊裏糊塗”就選擇瞭計算機專業。等到真正學習計算機課程的時候卻又發現,它其實很難!
  早在2004年,還在學校的我跟很多同學一樣,喜歡看Flash,也喜歡談論Flash甚至做Flash。感覺Flash正如它的名字那樣“閃光”。那些年,在學校裏,知道Flash的人可要比知道Java的人多得多,這說明當時的Flash十分火熱。此外,Oracle也成為關係型數據庫裏的領軍人物,很多人甚至覺得懂Oracle要比懂Flash、Java及其他數據庫要厲害得多!
  2007年,我剛剛參加工作不久。那時Struts1、Spring、Hibernate幾乎可以稱為那些用Java作為開發語言的軟件公司的三駕馬車。很快,Struts2替代瞭Struts1的地位,讓我第一次意識到IT領域的技術更新竟然如此之快!隨著很多傳統軟件公司嚮互聯網公司轉型,Hibernate也難以確保其地位,iBATIS誕生瞭!
  2010年,有關Hadoop的技術圖書湧入中國,當時很多公司用它隻是為瞭數據統計、數據挖掘或者搜索。一開始,人們對於Hadoop的認識和使用可能相對有限。大約2011年的時候,關於雲計算的概念在網上炒得火熱,當時依然在做互聯網開發的我,對其隻是“道聽途說”。後來跟同事藉瞭一本有關雲計算的書,迴傢挑著看瞭一些內容,也沒什麼收獲,悵然若失!20世紀60年代,美國的軍用網絡作為互聯網的雛形,很多內容已經與雲計算中的某些說法類似。到20世紀80年代,互聯網就已經啓用瞭雲計算,如今為什麼又要重提這樣的概念?這個問題我可能迴答不瞭,還是交給曆史吧。
  2012年,國內又呈現齣大數據熱的態勢。從國傢到媒體、教育、IT等幾乎所有領域,人人都在談大數據。我的親戚朋友中,無論老師、銷售人員,還是工程師們都可以針對大數據談談自己的看法。我也找來一些Hadoop的書籍進行學習,希望能在其中探索到大數據的奧妙。
  有幸在工作過程中接觸到阿裏的開放數據處理服務(open data processing service,ODPS),並且基於ODPS與其他小夥伴一起構建阿裏的大數據商業解決方案—禦膳房。去杭州齣差的過程中,有幸認識和仲,跟他學習瞭阿裏的實時多維分析平颱—Garuda和實時計算平颱—Galaxy的部分知識。和仲推薦我閱讀Spark的源碼,這樣會對實時計算及流式計算有更深入的瞭解。2015年春節期間,自己初次上網查閱Spark的相關資料學習,開始研究Spark源碼。還記得那時隻是齣於對大數據的熱愛,想使自己在這方麵的技術能力有所提升。
  從閱讀Hibernate源碼開始,到後來閱讀Tomcat、Spring的源碼,我也在從學習源碼的過程中成長,我對源碼閱讀也越來越感興趣。隨著對Spark源碼閱讀的深入,發現很多內容從網上找不到答案,隻能自己“硬啃”瞭。隨著自己的積纍越來越多,突然有一天發現,我所總結的這些內容好像可以寫成一本書瞭!從閃光(Flash)到火花(Spark),足足有11個年頭瞭。無論是Flash、Java,還是Spring、iBATIS,我一直扮演著一個追隨者,我接受這些書籍的洗禮,從未給予。如今我也是Spark的追隨者,不同的是,我不再隻想簡單攫取,還要給予。
  最後還想說一下,2016年是我從事IT工作的第10個年頭,此書特彆作為送給自己的10周年禮物。
  本書特色按照源碼分析的習慣設計,從腳本分析到初始化再到核心內容,最後介紹Spark的擴展內容。整個過程遵循由淺入深、由深到廣的基本思路。
  本書涉及的所有內容都有相應的例子,以便於讀者對源碼的深入研究。
  本書盡可能用圖來展示原理,加速讀者對內容的掌握。
  本書講解的很多實現及原理都值得藉鑒,能幫助讀者提升架構設計、程序設計等方麵的能力。
  本書盡可能保留較多的源碼,以便於初學者能夠在像地鐵、公交這樣的地方,也能輕鬆閱讀。
  讀者對象源碼閱讀是一項苦差事,人力和時間成本都很高,尤其是對於Spark陌生或者剛剛開始學習的人來說,難度可想而知。本書盡可能保留源碼,使得分析過程不至於産生跳躍感,目的是降低大多數人的學習門檻。如果你是從事IT工作1~3年的新人或者是希望學習Spark核心知識的人,本書非常適閤你。如果你已經對Spark有所瞭解或者已經在使用它,還想進一步提高自己,那麼本書更適閤你。
  如果你是一個開發新手,對Java、Linux等基礎知識不是很瞭解,那麼本書可能不太適閤你。如果你已經對Spark有深入的研究,本書也許可以作為你的參考資料。
  總體說來,本書適閤以下人群:
  想要使用Spark,但對Spark實現原理不瞭解,不知道怎麼學習的人;大數據技術愛好者,以及想深入瞭解Spark技術內部實現細節的人;有一定Spark使用基礎,但是不瞭解Spark技術內部實現細節的人;對性能優化和部署方案感興趣的大型互聯網工程師和架構師;開源代碼愛好者。喜歡研究源碼的同學可以從本書學到一些閱讀源碼的方式與方法。
  本書不會教你如何開發Spark應用程序,隻是用一些經典例子演示。本書簡單介紹Hadoop MapReduce、Hadoop YARN、Mesos、Tachyon、ZooKeeper、HDFS、Amazon S3,但不會過多介紹這些框架的使用,因為市場上已經有豐富的這類書籍供讀者挑選。本書也不會過多介紹Scala、Java、Shell的語法,讀者可以在市場上選擇適閤自己的書籍閱讀。
  如何閱讀本書本書分為三大部分(不包括附錄):
  準備篇(第1~2章),簡單介紹瞭Spark的環境搭建和基本原理,幫助讀者瞭解一些背景知識。
  核心設計篇(第3~7章),著重講解SparkContext的初始化、存儲體係、任務提交與執行、計算引擎及部署模式的原理和源碼分析。
  擴展篇(第8~11章),主要講解基於Spark核心的各種擴展及應用,包括:SQL處理引擎、Hive處理、流式計算框架Spark Streaming、圖計算框架GraphX、機器學習庫MLlib等內容。
  本書最後還添加瞭幾個附錄,包括:附錄A介紹的Spark中最常用的工具類Utils;附錄B是Akka的簡介與工具類AkkaUtils的介紹;附錄C為Jetty的簡介和工具類JettyUtils的介紹;附錄D為Metrics庫的簡介和測量容器MetricRegistry的介紹;附錄E演示瞭Hadoop1.0版本中的word count例子;附錄F介紹瞭工具類CommandUtils的常用方法;附錄G是關於Netty的簡介和工具類NettyUtils的介紹;附錄H列舉瞭筆者編譯Spark源碼時遇到的問題及解決辦法。
  為瞭降低讀者閱讀理解Spark源碼的門檻,本書盡可能保留源碼實現,希望讀者能夠懷著一顆好奇的心,Spark當前很火熱,其版本更新也很快,本書以Spark 1.2.3版本為主,有興趣的讀者也可按照本書的方式,閱讀Spark的最新源碼。
  勘誤和支持本書內容很多,限於筆者水平有限,書中內容難免有錯誤之處。在本書齣版後的任何時間,如果你對本書有任何問題或者意見,都可以通過郵箱beliefer@163.com或博客http://www.cnblogs.com/jiaan-geng/聯係我,說齣你的建議或者想法,希望與大傢共同進步。
  緻謝感謝蒼天,讓我生活在這樣一個時代,能接觸互聯網和大數據;感謝父母,這麼多年來,在學習、工作及生活上的幫助與支持;感謝妻子在生活中的照顧和謙讓。
  感謝楊福川和高婧雅給予本書齣版的大力支持與幫助。
  感謝冰夷老大和王賁老大讓我有幸加入阿裏,接觸大數據應用;感謝和仲對Galaxy和Garuda耐心細緻的講解以及對Spark的推薦;感謝張中在百忙之中給本書寫評語;感謝周亮、澄蒼、民瞻、石申、清無、少俠、徵宇、三步、謝衣、曉五、法星、曦軒、九翎、峰閱、丁卯、阿末、紫丞、海炎、涵康、雲颺、孟天、零一、六仙、大知、井凡、隆君、太奇、晨炫、既望、寶升、都靈、鬼厲、歸鍾、梓撤、昊蒼、水村、惜冰、惜陌、元乾等同仁在工作上的支持和幫助。
  耿嘉安 於北京



用戶評價

評分

還不錯的一本書,對從事大數據的人來說是很好的教材!

評分

書的印刷質量很好,內容還沒有詳細看,很滿意的一次購物

評分

雖然內容網上是都有的,但是懶得一個個找瞭,買本書看

評分

大數據分析,現在是時代對我們年輕人的要求,好好學習,纔能抓住自己的美好未來

評分

包裝的很好,雙11活動買的,比較劃算

評分

書蠻厚的,內容還沒來得及看,先囤著

評分

正版書籍,支持,spark源碼分析,好評,便宜。

評分

  本書分為三篇:

評分

  核心設計篇(第3~7章),著重講解SparkContext的初始化、存儲體係、任務提交與執行、計算引擎及部署模式的原理和源碼分析。通過這部分的內容,讀者可以通過源碼剖析更加深入理解Spark的核心設計與實現,以便在實際使用中能夠快速解決綫上問題並對性能進行調優。

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有