深入理解Spark核心思想與源碼分析 版權信息
- ISBN:9787111522348
- 條形碼:9787111522348 ; 978-7-111-52234-8
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
深入理解Spark核心思想與源碼分析 本書特色
本書對spark源代碼進行了全面而深入的分析,旨在為spark的優化、定制和擴展提供原理性的指導。阿里巴巴集團專家鼎力推薦,阿里巴巴資深java開發和大數據專家撰寫。本書對spark的核心模塊、部署和協作模塊的實現原理與使用技巧進行了深入的剖析與解讀。
本書分為三篇:
準備篇(第1~2章),介紹了spark的環境搭建、設計理念與基本架構,幫助讀者了解一些背景知識。
核心設計篇(第3~7章),著重講解sparkcontext的初始化、存儲體系、任務提交與執行、計算引擎及部署模式的原理和源碼分析。通過這部分的內容,讀者可以通過源碼剖析更加深入理解spark的核心設計與實現,以便在實際使用中能夠快速解決線上問題并對性能進行調優。
擴展篇(第8~11章),主要講解基于spark核心的各種擴展及應用,包括sql處理引擎、hive處理、流式計算框架spark streaming、圖計算框架graphx、機器學習庫mllib等內容。通過閱讀這部分內容,讀者可以擴展實際項目中對spark的應用場景,讓spark煥發活力。
深入理解Spark核心思想與源碼分析 內容簡介
阿里集團專家鼎力推薦,阿里資深java開發和大數據專家撰寫
結合大量圖和示例,對spark的核心模塊、部署和協作模塊的實現原理與使用技巧進行了深入的剖析與解讀
本書特色:
按照源碼分析的習慣設計,條分縷析。
多圖、多示例,幫讀者快速在頭腦中“建模”。
原理與實現剖析,幫助讀者提升架構設計、程序設計等方面的能力。
盡可能保留較多的源碼,方便離線和移動環境的閱讀。
深入理解Spark核心思想與源碼分析 目錄
contents 目錄前言準 備 篇第1章 環境準備21.1 運行環境準備21.1.1 安裝jdk31.1.2 安裝scala31.1.3 安裝spark41.2 spark初體驗41.2.1 運行spark-shell41.2.2 執行word count51.2.3 剖析spark-shell71.3 閱讀環境準備111.4 spark源碼編譯與調試131.5 小結17第2章 spark設計理念與基本架構182.1 初識spark182.1.1 hadoop mrv1的局限182.1.2 spark使用場景202.1.3 spark的特點202.2 spark基礎知識202.3 spark基本設計思想222.3.1 spark模塊設計222.3.2 spark模型設計242.4 spark基本架構252.5 小結26核心設計篇第3章 sparkcontext的初始化283.1 sparkcontext概述283.2 創建執行環境sparkenv303.2.1 安全管理器securitymanager313.2.2 基于akka的分布式消息系統actorsystem313.2.3 map任務輸出跟蹤器mapoutputtracker323.2.4 實例化shufflemanager343.2.5 shuffle線程內存管理器shufflememorymanager343.2.6 塊傳輸服務blocktransferservice353.2.7 blockmanagermaster介紹353.2.8 創建塊管理器blockmanager363.2.9 創建廣播管理器broadcast-manager363.2.10 創建緩存管理器cachemanager373.2.11 http文件服務器httpfile-server373.2.12 創建測量系統metricssystem393.2.13 創建sparkenv403.3 創建metadatacleaner413.4 sparkui詳解423.4.1 listenerbus詳解433.4.2 構造jobprogresslistener463.4.3 sparkui的創建與初始化473.4.4 spark ui的頁面布局與展示493.4.5 sparkui的啟動543.5 hadoop相關配置及executor環境變量543.5.1 hadoop相關配置信息543.5.2 executor環境變量543.6 創建任務調度器taskscheduler553.6.1 創建taskschedulerimpl553.6.2 taskschedulerimpl的初始化573.7 創建和啟動dagscheduler573.8 taskscheduler的啟動603.8.1 創建localactor603.8.2 executorsource的創建與注冊623.8.3 executoractor的構建與注冊643.8.4 spark自身classloader的創建643.8.5 啟動executor的心跳線程663.9 啟動測量系統metricssystem693.9.1 注冊sources703.9.2 注冊sinks703.9.3 給sinks增加jetty的servlet-contexthandler713.10 創建和啟動executorallocation-manager723.11 contextcleaner的創建與啟動733.12 spark環境更新743.13 創建dagschedulersource和blockmanagersource763.14 將sparkcontext標記為激活773.15 小結78第4章 存儲體系794.1 存儲體系概述794.1.1 塊管理器blockmanager的實現794.1.2 spark存儲體系架構814.2 shuffle服務與客戶端834.2.1 block的rpc服務844.2.2 構造傳輸上下文transpor-tcontext854.2.3 rpc客戶端工廠transport-clientfactory864.2.4 netty服務器transportserver874.2.5 獲取遠程shuffle文件884.2.6 上傳shuffle文件894.3 blockmanagermaster對block-manager的管理904.3.1 blockmanagermasteractor904.3.2 詢問driver并獲取回復方法924.3.3 向blockmanagermaster注冊blockmanagerid934.4 磁盤塊管理器diskblockmanager944.4.1 diskblockmanager的構造過程944.4.2 獲取磁盤文件方法getfile964.4.3 創建臨時block方法create-tempshuffleblock964.5 磁盤存儲diskstore974.5.1 nio讀取方法getbytes974.5.2 nio寫入方法putbytes984.5.3 數組寫入方法putarray984.5.4 iterator寫入方法putiterator984.6 內存存儲memorystore994.6.1 數據存儲方法putbytes1014.6.2 iterator寫入方法putiterator詳解1014.6.3 安全展開方法unrollsafely1024.6.4 確認空閑內存方法ensurefreespace1054.6.5 內存寫入方法putarray1074.6.6 嘗試寫入內存方法trytoput1084.6.7 獲取內存數據方法getbytes1094.6.8 獲取數據方法getvalues1104.7 tachyon存儲tachyonstore1104.7.1 tachyon簡介1114.7.2 tachyonstore的使用1124.7.3 寫入tachyon內存的方法putintotachyonstore1134.7.4 獲取序列化數據方法getbytes1134.8 塊管理器blockmanager1144.8.1 移出內存方法dropfrom-memory1144.8.2 狀態報告方法reportblockstatus1164.8.3 單對象塊寫入方法putsingle1174.8.4 序列化字節塊寫入方法putbytes1184.8.5 數據寫入方法doput1184.8.6 數據塊備份方法replicate1214.8.7 創建diskblockobjectwriter的方法getdiskwriter1254.8.8 獲取本地block數據方法getblockdata1254.8.9 獲取本地shuffle數據方法dogetlocal1264.8.10 獲取遠程block數據方法dogetremote1274.8.11 獲取block數據方法get1284.8.12 數據流序列化方法dataserializestream1294.9 metadatacleaner和broadcastcleaner1294.10 緩存管理器cachemanager1304.11 壓縮算法1334.12 磁盤寫入實現diskblockobjectwriter1334.13 塊索引shuffle管理器indexshuffleblockmanager1354.14 shuffle內存管理器shufflememorymanager1374.15 小結138第5章 任務提交與執行1395.1 任務概述1395.2 廣播hadoop的配置信息1425.3 rdd轉換及dag構建1445.3.1 為什么需要rdd1445.3.2 rdd實現分析1465.4 任務提交1525.4.1 任務提交的準備1525.4.2 finalstage的創建與stage的劃分1575.4.3 創建job1635.4.4 提交stage1645.4.5 提交task1655.5 執行任務1765.5.1 狀態更新1765.5.2 任務還原1775.5.3 任務運行1785.6 任務執行后續處理1795.6.1 計量統計與執行結果序列化1795.6.2 內存回收1805.6.3 執行結果處理1815.7 小結187第6章 計算引擎1886.1 迭代計算1886.2 什么是shuffle1926.3 map端計算結果緩存處理1946.3.1 map端計算結果緩存聚合1956.3.2 map端計算結果簡單緩存2006.3.3 容量限制2016.4 map端計算結果持久化2046.4.1 溢出分區文件2056.4.2排序與分區分組2076.4.3 分區索引文件2096.5 reduce端讀取中間計算結果2106.5.1 獲取map任務狀態2136.5.2 劃分本地與遠程block2156.5.3 獲取遠程block2176.5.4 獲取本地block2186.6 reduce端計算2196.6.1 如何同時處理多個map任務的中間結果2196.6.2 reduce端在緩存中對中間計算結果執行聚合和排序2206.7 map端與reduce端組合分析2216.7.1 在map端溢出分區文件,在reduce端合并組合2216.7.2 在map端簡單緩存、排序分組,在reduce端合并組合2226.7.3 在map端緩存中聚合、排序分組,在reduce端組合2226.8 小結223第7章 部署模式2247.1 local部署模式2257.2 local-cluster部署模式2257.2.1 localsparkcluster的啟動2267.2.2 coarsegrainedschedulerbackend的啟動2367.2.3 啟動appclient2377.2.4 資源調度2427.2.5 local-cluster模式的任務執行2537.3 standalone部署模式2557.3.1 啟動standalone模式2557.3.2 啟動master分析2577.3.3 啟動worker分析2597.3.4 啟動driver application分析2617.3.5 standalone模式的任務執行2637.3.6 資源回收2637.4 容錯機制2667.4.1 executor異常退出2667.4.2 worker異常退出2687.4.3 master異常退出2697.5 其他部署方案2767.5.1 yarn2777.5.2 mesos2807.6 小結282擴 展 篇第8章 spark sql2848.1 spark sql總體設計2848.1.1 傳統關系型數據庫sql運行原理2858.1.2 spark sql運行架構2868.2 字典表catalog2888.3 tree和treenode2898.4 詞法解析器parser的設計與實現2938.4.1 sql語句解析的入口2948.4.2 建表語句解析器ddlparser2958.4.3 sql語句解析器sqlparser2968.4.4 spark代理解析器sparksqlparser2998.5 rule和ruleexecutor3008.6 analyzer與optimizer的設計與實現3028.6.1 語法分析器analyzer3048.6.2 優化器optimizer3058.7 生成物理執行計劃3068.8 執行物理執行計劃3088.9 hive3118.9.1 hive sql語法解析器3118.9.2 hive sql元數據分析3138.9.3 hive sql物理執行計劃3148.10 應用舉例:javasparksql3148.11 小結320第9章 流式計算3219.1 spark streaming總體設計3219.2 streamingcontext初始化3239.3 輸入流接收器規范receiver3249.4 數據流抽象dstream3259.4.1 dstream的離散化3269.4.2 數據源輸入流inputdstream3279.4.3 dstream轉換及構建dstream graph3299.5 流式計算執行過程分析3309.5.1 流式計算例子customreceiver3319.5.2 spark streaming執行環境構建3359.5.3 任務生成過程3479.6 窗口操作3559.7 應用舉例3579.7.1 安裝mosquitto3589.7.2 啟動mosquitto3589.7.3 mqttwordcount3599.8 小結361第10章 圖計算36210.1 spark graphx總體設計36210.1.1 圖計算模型36310.1.2 屬性圖36510.1.3 graphx的類繼承體系36710.2 圖操作36810.2.1 屬性操作36810.2.2 結構操作36810.2.3 連接操作36910.2.4 聚合操作37010.3 pregel api37110.3.1 dijkstra算法37310.3.2 dijkstra的實現37610.4 graph的構建37710.4.1 從邊的列表加載graph37710.4.2 在graph中創建圖的方法37710.5 頂點集合抽象vertexrdd37810.6 邊集合抽象edgerdd37910.7 圖分割38010.8 常用算法38210.8.1 網頁排名38210.8.2 connected components的應用38610.8.3 三角關系統計38810.9 應用舉例39010.10 小結391第11章 機器學習39211.1機器學習概論39211.2 spark mllib總體設計39411.3 數據類型39411.3.1 局部向量39411.3.2標記點39511.3.3局部矩陣39611.3.4分布式矩陣39611.4基礎統計39811.4.1摘要統計39811.4.2相關統計39911.4.3分層抽樣40111.4.4假設檢驗40111.4.5隨機數生成40211.5分類和回歸40511.5.1數學公式40511.5.2線性回歸40711.5.3分類40711.5.4回歸41011.6決策樹41111.6.1基本算法41111.6.2使用例子41211.7隨機森林41311.7.1基本算法41411.7.2使用例子41411.8梯度提升決策樹41511.8.1基本算法41511.8.2使用例子41611.9樸素貝葉斯41611.9.1算法原理41611.9.2使用例子41811.10保序回歸41811.10.1算法原理41811.10.2使用例子41911.11協同過濾41911.12聚類42011.12.1k-means42011.12.2高斯混合42211.12.3快速迭代聚類42211.12.4latent dirichlet allocation42211.12.5流式k-means42311.13維數減縮42411.13.1奇異值分解42411.13.2主成分分析42511.14特征提取與轉型42511.14.1術語頻率反轉42511.14.2單詞向量轉換42611.14.3標準尺度42711.14.4正規化尺度42811.14.5卡方特征選擇器42811.14.6hadamard積42911.15頻繁模式挖掘42911.16預言模型標記語言43011.17管道43111.17.1管道工作原理43211.17.2管道api介紹43311.17.3交叉驗證43511.18小結436附錄a utils437附錄b akka446附錄c jetty450附錄d metrics453附錄e hadoop word count456附錄f commandutils458附錄g netty461附錄h 源碼編譯錯誤465
展開全部
深入理解Spark核心思想與源碼分析 相關資料
伴隨著互聯網的不斷演進,人類所面臨的數據在體量,產生速度和多樣性方面階躍性發展,隨之而來的是數據計算和處理方式的多樣化,目前越來越多的數據處理鏈路是通過多種計算組合而成,例如批量與流式計算,圖計算,交互式查詢等。而以往幾個獨立計算系統“物理”拼裝組合成的復雜系統在處理這些問題時,往往在成本和效率上產生瓶頸。spark從迭代計算的數據復用切入,底層一個runtime來支撐多種計算模型,越來越受到業界的重視,社區發展非常迅速。而本書從源碼分析角度深入剖析系統,希望讀者不僅做到知其然,更要知其所以然,對spark有更加深入的研究。本書作者在相關領域有多年豐富的實踐和應用經驗,相信通過研讀本書必定可以給讀者帶來事半功倍的效果。
——強琦 阿里云計算平臺資深技術專家
這是一本不錯的spark的入門書籍,完全從工程師的視角出發,從安裝到使用再到高階應用。有些時候甚至有些啰嗦,但這不正是我們讀者需要的么?作者用他專一的一線工程師視角與在阿里面臨的場景結合,寫作的落筆相當接地氣。這是一本難得的工程師參考用書。
——張茂森 阿里巴巴商家業務事業部資深數據挖掘專家
深入理解Spark核心思想與源碼分析 作者簡介
耿嘉安,10年IT行業相關經驗。就職于阿里巴巴商家業務事業部,任資深Java工程師,專注于開源和大數據領域,目前與小伙伴們基于ODPS構建阿里的大數據商業解決方案——御膳房。在大量的工作實踐中,對J2EE、JVM、Tomcat、Spring、Hadoop、Spark、MySQL、Redis都有深入研究,尤其喜歡剖析開源項目的源碼實現。早期從事J2EE企業級應用開發,對Java相關技術有獨到見解。業余時間喜歡研究中國古代歷史,古詩詞,旅游,足球等。