//
《深入理解Spark:核心思想與源碼分析》 PDF 下載_Java知識(shí)分享網(wǎng)-免費(fèi)Java資源下載
http://www.java1234.com/a/javabook/javaweb/2016/0521/6137.html
圖書(shū)簡(jiǎn)介:本書(shū)對(duì)Spark源代碼進(jìn)行了全面而深入的分析,旨在為Spark的優(yōu)化、定制和擴(kuò)展提供原理性的指導(dǎo)抒和。阿里巴巴集團(tuán)專(zhuān)家鼎力推薦错蝴,阿里巴巴資深Java開(kāi)發(fā)和大數(shù)據(jù)專(zhuān)家撰寫(xiě)一喘。本書(shū)對(duì)Spark的核心模塊绒瘦、部署和協(xié)作模塊的實(shí)現(xiàn)原理與使用技巧進(jìn)行了深入的剖析與解讀闭树。
本書(shū)分為三篇:
準(zhǔn)備篇(第1~2章)蚪腋,介紹了Spark的環(huán)境搭建丰歌、設(shè)計(jì)理念與基本架構(gòu),幫助讀者了解一些背景知識(shí)屉凯。
核心設(shè)計(jì)篇(第3~7章)立帖,著重講解SparkContext的初始化、存儲(chǔ)體系悠砚、任務(wù)提交與執(zhí)行晓勇、計(jì)算引擎及部署模式的原理和源碼分析。通過(guò)這部分的內(nèi)容,讀者可以通過(guò)源碼剖析更加深入理解Spark的核心設(shè)計(jì)與實(shí)現(xiàn)绑咱,以便在實(shí)際使用中能夠快速解決線上問(wèn)題并對(duì)性能進(jìn)行調(diào)優(yōu)绰筛。
擴(kuò)展篇(第8~11章),主要講解基于Spark核心的各種擴(kuò)展及應(yīng)用描融,包括SQL處理引擎铝噩、Hive處理、流式計(jì)算框架Spark Streaming窿克、圖計(jì)算框架GraphX骏庸、機(jī)器學(xué)習(xí)庫(kù)MLlib等內(nèi)容。通過(guò)閱讀這部分內(nèi)容让歼,讀者可以擴(kuò)展實(shí)際項(xiàng)目中對(duì)Spark的應(yīng)用場(chǎng)景敞恋,讓Spark煥發(fā)活力。
相關(guān)截圖:
圖書(shū)目錄:Contents 目錄前言準(zhǔn) 備 篇第1章 環(huán)境準(zhǔn)備21.1 運(yùn)行環(huán)境準(zhǔn)備21.1.1 安裝JDK31.1.2 安裝Scala31.1.3 安裝Spark41.2 Spark初體驗(yàn)41.2.1 運(yùn)行spark-shell41.2.2 執(zhí)行word count51.2.3 剖析spark-shell71.3 閱讀環(huán)境準(zhǔn)備111.4 Spark源碼編譯與調(diào)試131.5 小結(jié)17第2章 Spark設(shè)計(jì)理念與基本架構(gòu)182.1 初識(shí)Spark182.1.1 Hadoop MRv1的局限182.1.2 Spark使用場(chǎng)景202.1.3 Spark的特點(diǎn)202.2 Spark基礎(chǔ)知識(shí)202.3 Spark基本設(shè)計(jì)思想222.3.1 Spark模塊設(shè)計(jì)222.3.2 Spark模型設(shè)計(jì)242.4 Spark基本架構(gòu)252.5 小結(jié)26核心設(shè)計(jì)篇第3章 SparkContext的初始化283.1 SparkContext概述283.2 創(chuàng)建執(zhí)行環(huán)境SparkEnv303.2.1 安全管理器SecurityManager313.2.2 基于Akka的分布式消息系統(tǒng)ActorSystem313.2.3 map任務(wù)輸出跟蹤器mapOutputTracker323.2.4 實(shí)例化ShuffleManager343.2.5 shuffle線程內(nèi)存管理器ShuffleMemoryManager343.2.6 塊傳輸服務(wù)BlockTransferService353.2.7 BlockManagerMaster介紹353.2.8 創(chuàng)建塊管理器BlockManager363.2.9 創(chuàng)建廣播管理器Broadcast-Manager363.2.10 創(chuàng)建緩存管理器CacheManager373.2.11 HTTP文件服務(wù)器HttpFile-Server373.2.12 創(chuàng)建測(cè)量系統(tǒng)MetricsSystem393.2.13 創(chuàng)建SparkEnv403.3 創(chuàng)建metadataCleaner413.4 SparkUI詳解423.4.1 listenerBus詳解433.4.2 構(gòu)造JobProgressListener463.4.3 SparkUI的創(chuàng)建與初始化473.4.4 Spark UI的頁(yè)面布局與展示493.4.5 SparkUI的啟動(dòng)543.5 Hadoop相關(guān)配置及Executor環(huán)境變量543.5.1 Hadoop相關(guān)配置信息543.5.2 Executor環(huán)境變量543.6 創(chuàng)建任務(wù)調(diào)度器TaskScheduler553.6.1 創(chuàng)建TaskSchedulerImpl553.6.2 TaskSchedulerImpl的初始化573.7 創(chuàng)建和啟動(dòng)DAGScheduler573.8 TaskScheduler的啟動(dòng)603.8.1 創(chuàng)建LocalActor603.8.2 ExecutorSource的創(chuàng)建與注冊(cè)623.8.3 ExecutorActor的構(gòu)建與注冊(cè)643.8.4 Spark自身ClassLoader的創(chuàng)建643.8.5 啟動(dòng)Executor的心跳線程663.9 啟動(dòng)測(cè)量系統(tǒng)MetricsSystem693.9.1 注冊(cè)Sources703.9.2 注冊(cè)Sinks703.9.3 給Sinks增加Jetty的Servlet-ContextHandler713.10 創(chuàng)建和啟動(dòng)ExecutorAllocation-Manager723.11 ContextCleaner的創(chuàng)建與啟動(dòng)733.12 Spark環(huán)境更新743.13 創(chuàng)建DAGSchedulerSource和BlockManagerSource763.14 將SparkContext標(biāo)記為激活773.15 小結(jié)78第4章 存儲(chǔ)體系794.1 存儲(chǔ)體系概述794.1.1 塊管理器BlockManager的實(shí)現(xiàn)794.1.2 Spark存儲(chǔ)體系架構(gòu)814.2 shuffle服務(wù)與客戶(hù)端834.2.1 Block的RPC服務(wù)844.2.2 構(gòu)造傳輸上下文Transpor-tContext854.2.3 RPC客戶(hù)端工廠Transport-ClientFactory864.2.4 Netty服務(wù)器TransportServer874.2.5 獲取遠(yuǎn)程shuffle文件884.2.6 上傳shuffle文件894.3 BlockManagerMaster對(duì)Block-Manager的管理904.3.1 BlockManagerMasterActor904.3.2 詢(xún)問(wèn)Driver并獲取回復(fù)方法924.3.3 向BlockManagerMaster注冊(cè)BlockManagerId934.4 磁盤(pán)塊管理器DiskBlockManager944.4.1 DiskBlockManager的構(gòu)造過(guò)程944.4.2 獲取磁盤(pán)文件方法getFile964.4.3 創(chuàng)建臨時(shí)Block方法create-TempShuffleBlock964.5 磁盤(pán)存儲(chǔ)DiskStore974.5.1 NIO讀取方法getBytes974.5.2 NIO寫(xiě)入方法putBytes984.5.3 數(shù)組寫(xiě)入方法putArray984.5.4 Iterator寫(xiě)入方法putIterator984.6 內(nèi)存存儲(chǔ)MemoryStore994.6.1 數(shù)據(jù)存儲(chǔ)方法putBytes1014.6.2 Iterator寫(xiě)入方法putIterator詳解1014.6.3 安全展開(kāi)方法unrollSafely1024.6.4 確認(rèn)空閑內(nèi)存方法ensureFreeSpace1054.6.5 內(nèi)存寫(xiě)入方法putArray1074.6.6 嘗試寫(xiě)入內(nèi)存方法tryToPut1084.6.7 獲取內(nèi)存數(shù)據(jù)方法getBytes1094.6.8 獲取數(shù)據(jù)方法getValues1104.7 Tachyon存儲(chǔ)TachyonStore1104.7.1 Tachyon簡(jiǎn)介1114.7.2 TachyonStore的使用1124.7.3 寫(xiě)入Tachyon內(nèi)存的方法putIntoTachyonStore1134.7.4 獲取序列化數(shù)據(jù)方法getBytes1134.8 塊管理器BlockManager1144.8.1 移出內(nèi)存方法dropFrom-Memory1144.8.2 狀態(tài)報(bào)告方法reportBlockStatus1164.8.3 單對(duì)象塊寫(xiě)入方法putSingle1174.8.4 序列化字節(jié)塊寫(xiě)入方法putBytes1184.8.5 數(shù)據(jù)寫(xiě)入方法doPut1184.8.6 數(shù)據(jù)塊備份方法replicate1214.8.7 創(chuàng)建DiskBlockObjectWriter的方法getDiskWriter1254.8.8 獲取本地Block數(shù)據(jù)方法getBlockData1254.8.9 獲取本地shuffle數(shù)據(jù)方法doGetLocal1264.8.10 獲取遠(yuǎn)程Block數(shù)據(jù)方法doGetRemote1274.8.11 獲取Block數(shù)據(jù)方法get1284.8.12 數(shù)據(jù)流序列化方法dataSerializeStream1294.9 metadataCleaner和broadcastCleaner1294.10 緩存管理器CacheManager1304.11 壓縮算法1334.12 磁盤(pán)寫(xiě)入實(shí)現(xiàn)DiskBlockObjectWriter1334.13 塊索引shuffle管理器IndexShuffleBlockManager1354.14 shuffle內(nèi)存管理器ShuffleMemoryManager1374.15 小結(jié)138第5章 任務(wù)提交與執(zhí)行1395.1 任務(wù)概述1395.2 廣播Hadoop的配置信息1425.3 RDD轉(zhuǎn)換及DAG構(gòu)建1445.3.1 為什么需要RDD1445.3.2 RDD實(shí)現(xiàn)分析1465.4 任務(wù)提交1525.4.1 任務(wù)提交的準(zhǔn)備1525.4.2 finalStage的創(chuàng)建與Stage的劃分1575.4.3 創(chuàng)建Job1635.4.4 提交Stage1645.4.5 提交Task1655.5 執(zhí)行任務(wù)1765.5.1 狀態(tài)更新1765.5.2 任務(wù)還原1775.5.3 任務(wù)運(yùn)行1785.6 任務(wù)執(zhí)行后續(xù)處理1795.6.1 計(jì)量統(tǒng)計(jì)與執(zhí)行結(jié)果序列化1795.6.2 內(nèi)存回收1805.6.3 執(zhí)行結(jié)果處理1815.7 小結(jié)187第6章 計(jì)算引擎1886.1 迭代計(jì)算1886.2 什么是shuffle1926.3 map端計(jì)算結(jié)果緩存處理1946.3.1 map端計(jì)算結(jié)果緩存聚合1956.3.2 map端計(jì)算結(jié)果簡(jiǎn)單緩存2006.3.3 容量限制2016.4 map端計(jì)算結(jié)果持久化2046.4.1 溢出分區(qū)文件2056.4.2排序與分區(qū)分組2076.4.3 分區(qū)索引文件2096.5 reduce端讀取中間計(jì)算結(jié)果2106.5.1 獲取map任務(wù)狀態(tài)2136.5.2 劃分本地與遠(yuǎn)程Block2156.5.3 獲取遠(yuǎn)程Block2176.5.4 獲取本地Block2186.6 reduce端計(jì)算2196.6.1 如何同時(shí)處理多個(gè)map任務(wù)的中間結(jié)果2196.6.2 reduce端在緩存中對(duì)中間計(jì)算結(jié)果執(zhí)行聚合和排序2206.7 map端與reduce端組合分析2216.7.1 在map端溢出分區(qū)文件谋右,在reduce端合并組合2216.7.2 在map端簡(jiǎn)單緩存、排序分組补箍,在reduce端合并組合2226.7.3 在map端緩存中聚合改执、排序分組,在reduce端組合2226.8 小結(jié)223第7章 部署模式2247.1 local部署模式2257.2 local-cluster部署模式2257.2.1 LocalSparkCluster的啟動(dòng)2267.2.2 CoarseGrainedSchedulerBackend的啟動(dòng)2367.2.3 啟動(dòng)AppClient2377.2.4 資源調(diào)度2427.2.5 local-cluster模式的任務(wù)執(zhí)行2537.3 Standalone部署模式2557.3.1 啟動(dòng)Standalone模式2557.3.2 啟動(dòng)Master分析2577.3.3 啟動(dòng)Worker分析2597.3.4 啟動(dòng)Driver Application分析2617.3.5 Standalone模式的任務(wù)執(zhí)行2637.3.6 資源回收2637.4 容錯(cuò)機(jī)制2667.4.1 Executor異常退出2667.4.2 Worker異常退出2687.4.3 Master異常退出2697.5 其他部署方案2767.5.1 YARN2777.5.2 Mesos2807.6 小結(jié)282擴(kuò) 展 篇第8章 Spark SQL2848.1 Spark SQL總體設(shè)計(jì)2848.1.1 傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)SQL運(yùn)行原理2858.1.2 Spark SQL運(yùn)行架構(gòu)2868.2 字典表Catalog2888.3 Tree和TreeNode2898.4 詞法解析器Parser的設(shè)計(jì)與實(shí)現(xiàn)2938.4.1 SQL語(yǔ)句解析的入口2948.4.2 建表語(yǔ)句解析器DDLParser2958.4.3 SQL語(yǔ)句解析器SqlParser2968.4.4 Spark代理解析器SparkSQLParser2998.5 Rule和RuleExecutor3008.6 Analyzer與Optimizer的設(shè)計(jì)與實(shí)現(xiàn)3028.6.1 語(yǔ)法分析器Analyzer3048.6.2 優(yōu)化器Optimizer3058.7 生成物理執(zhí)行計(jì)劃3068.8 執(zhí)行物理執(zhí)行計(jì)劃3088.9 Hive3118.9.1 Hive SQL語(yǔ)法解析器3118.9.2 Hive SQL元數(shù)據(jù)分析3138.9.3 Hive SQL物理執(zhí)行計(jì)劃3148.10 應(yīng)用舉例:JavaSparkSQL3148.11 小結(jié)320第9章 流式計(jì)算3219.1 Spark Streaming總體設(shè)計(jì)3219.2 StreamingContext初始化3239.3 輸入流接收器規(guī)范Receiver3249.4 數(shù)據(jù)流抽象DStream3259.4.1 Dstream的離散化3269.4.2 數(shù)據(jù)源輸入流InputDStream3279.4.3 Dstream轉(zhuǎn)換及構(gòu)建DStream Graph3299.5 流式計(jì)算執(zhí)行過(guò)程分析3309.5.1 流式計(jì)算例子CustomReceiver3319.5.2 Spark Streaming執(zhí)行環(huán)境構(gòu)建3359.5.3 任務(wù)生成過(guò)程3479.6 窗口操作3559.7 應(yīng)用舉例3579.7.1 安裝mosquitto3589.7.2 啟動(dòng)mosquitto3589.7.3 MQTTWordCount3599.8 小結(jié)361第10章 圖計(jì)算36210.1 Spark GraphX總體設(shè)計(jì)36210.1.1 圖計(jì)算模型36310.1.2 屬性圖36510.1.3 GraphX的類(lèi)繼承體系36710.2 圖操作36810.2.1 屬性操作36810.2.2 結(jié)構(gòu)操作36810.2.3 連接操作36910.2.4 聚合操作37010.3 Pregel API37110.3.1 Dijkstra算法37310.3.2 Dijkstra的實(shí)現(xiàn)37610.4 Graph的構(gòu)建37710.4.1 從邊的列表加載Graph37710.4.2 在Graph中創(chuàng)建圖的方法37710.5 頂點(diǎn)集合抽象VertexRDD37810.6 邊集合抽象EdgeRDD37910.7 圖分割38010.8 常用算法38210.8.1 網(wǎng)頁(yè)排名38210.8.2 Connected Components的應(yīng)用38610.8.3 三角關(guān)系統(tǒng)計(jì)38810.9 應(yīng)用舉例39010.10 小結(jié)391第11章 機(jī)器學(xué)習(xí)39211.1機(jī)器學(xué)習(xí)概論39211.2 Spark MLlib總體設(shè)計(jì)39411.3 數(shù)據(jù)類(lèi)型39411.3.1 局部向量39411.3.2標(biāo)記點(diǎn)39511.3.3局部矩陣39611.3.4分布式矩陣39611.4基礎(chǔ)統(tǒng)計(jì)39811.4.1摘要統(tǒng)計(jì)39811.4.2相關(guān)統(tǒng)計(jì)39911.4.3分層抽樣40111.4.4假設(shè)檢驗(yàn)40111.4.5隨機(jī)數(shù)生成40211.5分類(lèi)和回歸40511.5.1數(shù)學(xué)公式40511.5.2線性回歸40711.5.3分類(lèi)40711.5.4回歸41011.6決策樹(shù)41111.6.1基本算法41111.6.2使用例子41211.7隨機(jī)森林41311.7.1基本算法41411.7.2使用例子41411.8梯度提升決策樹(shù)41511.8.1基本算法41511.8.2使用例子41611.9樸素貝葉斯41611.9.1算法原理41611.9.2使用例子41811.10保序回歸41811.10.1算法原理41811.10.2使用例子41911.11協(xié)同過(guò)濾41911.12聚類(lèi)42011.12.1K-means42011.12.2高斯混合42211.12.3快速迭代聚類(lèi)42211.12.4latent Dirichlet allocation42211.12.5流式K-means42311.13維數(shù)減縮42411.13.1奇異值分解42411.13.2主成分分析42511.14特征提取與轉(zhuǎn)型42511.14.1術(shù)語(yǔ)頻率反轉(zhuǎn)42511.14.2單詞向量轉(zhuǎn)換42611.14.3標(biāo)準(zhǔn)尺度42711.14.4正規(guī)化尺度42811.14.5卡方特征選擇器42811.14.6Hadamard積42911.15頻繁模式挖掘42911.16預(yù)言模型標(biāo)記語(yǔ)言43011.17管道43111.17.1管道工作原理43211.17.2管道API介紹43311.17.3交叉驗(yàn)證43511.18小結(jié)436附錄A Utils437附錄B Akka446附錄C Jetty450附錄D Metrics453附錄E Hadoop word count456附錄F CommandUtils458附錄G Netty461附錄H 源碼編譯錯(cuò)誤465