spark性能調優與原理分析

spark性能調優與原理分析

《spark性能調優與原理分析》是清華大學出版社2020年9月出版的書籍,這本書以Spark內部實現原理為指導,使用了大量圖表來描述Spark各個環節的運行過程,對其運行過程中的每個組件進行詳細剖析。以理論指導各種參數的調節,以結果證明理論的正確性。本書各個章節的理論分析能夠使讀者更加快速的定位程式運行的瓶頸,解決實際生產中的問題。本書配有教學課件、教學大綱等豐富的配套資源。本書具有目標針對性強、內容與時俱進、理論結合實踐等特點。

基本介紹

  • 中文名:spark性能調優與原理分析
  • 作者:呂雲翔、 郭宇光
  • 出版社:清華大學出版社
  • ISBN:9787302555094
內容簡介,圖書目錄,作者簡介,

內容簡介

本書主要介紹了Spark運行原理及性能調優的相關實踐, 從Spark框架內部及外部運行環境等不同角度分析Spark性能調優的過程。 第1章介紹了Linux系統中各種監控工具的使用,對CPU、記憶體、網路、I/O等方面進行介紹, 並提供了集群監控報警的解決方案。 第2章介紹了Java虛擬機(JVM)的基本知識、垃圾回收機制,以及對JVM運行狀態的監控。 第3章和第4章介紹了Spark核心架構、任務運行的流程,對各個組件的實現進行了深入的剖析。尤其在Spark 記憶體管理、存儲原理、Shuffle階段,詳細介紹了每個實現的細節,這些實現的細節為後期Spark性能調優提供了參數調節的理論依據。 第5章介紹了Spark性能調優的詳細實踐過程,首先介紹了SparkUI和Spark日誌的使用,通過這兩項可以迅速定位瓶頸問題; 然後根據定位的問題,分別從程式調優、資源調優、Shuffle過程調優等不同角度介紹了調優的實踐過程。 本書在理論部分提供了大量的概念原理圖、運行流程圖,在實踐部分提供了大量的示例。讓讀者對性能的調節不 僅停留在參數調節的層面,而且能理解每個參數的修改對程式的內部運行產生 的影響。 本書既可以作為Spark開發者的參考用書,也可以作為高等院校計算機與軟體相關專業的教材。

圖書目錄

第1章常用工具簡介
1.1Linux中的性能監控命令
1.1.1程式準備
1.1.2top命令
1.1.3htop命令
1.1.4vmstat命令
1.1.5iostat命令
1.1.6iftop命令
1.2Prometheus
1.2.1Prometheus簡介
1.2.2Prometheus的組成
1.2.3Prometheus的安裝及配置
1.2.4監測伺服器
1.3Grafana
1.3.1Grafana簡介
1.3.2Grafana的安裝
1.3.3Grafana伺服器監控
1.4Alluxio的使用
1.4.1Alluxio簡介
1.4.2Alluxio的安裝
1.4.3Alluxio與Spark集成
1.5本章小結
第2章Java虛擬機簡介
2.1Java虛擬機基本結構
2.1.1PC暫存器
2.1.2Java堆
2.1.3Java虛擬機棧
2.1.4方法區
2.1.5本地方法棧
2.2Java常用選項
2.2.1Java選項分類
2.2.2標準選項
2.2.3非標準選項
2.2.4高級運行時選項
2.2.5高級垃圾回收選項
2.3垃圾回收機制
2.3.1什麼是垃圾對象
2.3.2垃圾回收算法
2.3.3垃圾收集器
2.4JDK自帶命令行工具
2.4.1jps命令
2.4.2jstat命令
2.4.3jinfo命令
2.4.4jmap命令
2.4.5jhat命令
2.4.6jstack命令
2.4.7jcmd 命令
2.4.8jstatd命令
2.5JVM監控工具
2.5.1JConsole
2.5.2Visual VM
2.5.3Prometheus監控JVM
第3章Spark核心架構
3.1Spark編程模型
3.1.1RDD概述
3.1.2RDD的基本屬性
3.1.3RDD的快取
3.1.4RDD容錯機制
3.1.5Spark RDD操作
3.1.6源碼分析
3.2Spark組件簡介
3.2.1術語介紹
3.2.2Spark RPC原理
3.2.3Driver簡介
3.2.4Executor簡介
3.2.5Spark運行模式
3.2.6存儲簡介
3.2.7源碼分析
3.3Spark作業執行原理
3.3.1整體流程
3.3.2Job提交
3.3.3Stage劃分
3.3.4Task劃分
3.3.5Task提交
3.3.6Task執行
3.3.7Task結果處理
3.3.8源碼分析
3.4Spark記憶體管理
3.4.1記憶體使用概述
3.4.2記憶體池的劃分
3.4.3記憶體管理
3.4.4源碼分析
3.5Spark存儲原理
3.5.1存儲模組架構
3.5.2磁碟存儲實現
3.5.3記憶體存儲實現
3.5.4塊管理器
3.5.5源碼分析
第4章Shuffle詳解
4.1為什麼需要Shuffle
4.1.1Shuffle的由來
4.1.2Shuffle實現的目標
4.2Spark執行Shuffle的流程
4.2.1總體流程
4.2.2ShuffleRDD的生成
4.2.3Stage的劃分
4.2.4Task的劃分
4.2.5Map端寫入
4.2.6Reduce端讀取
4.3Shuffle記憶體管理
4.3.1任務記憶體管理器
4.3.2記憶體消費者
4.3.3記憶體消費組件
4.3.4Tungsten記憶體管理
4.3.5Tungsten記憶體消費組件
4.4ShuffleWrite
4.4.1HashShuffleManager
4.4.2HashShuffleWriter
4.4.3SortShuffleManager
4.4.4BypassMergeSortShuffleWriter
4.4.5SortShuffleWriter
4.4.6UnsafeShuffleWriter
4.5ShuffleRead
4.5.1獲取ShuffleReader
4.5.2拉取Map端數據
4.5.3數據聚合
4.5.4key排序
第5章Spark性能調優
5.1Spark任務監控
5.1.1SparkUI使用
5.1.2Spark運行日誌詳解
5.2Spark程式調優
5.2.1提高並行度
5.2.2避免創建重複的RDD
5.2.3RDD持久化
5.2.4廣播大變數
5.2.5使用高性能序列化類庫
5.2.6最佳化資源操作連線
5.3Spark資源調優
5.3.1CPU分配
5.3.2記憶體分配
5.3.3提高磁碟性能
5.3.4Executor數量的權衡
5.3.5Spark管理記憶體比例
5.3.6使用Alluxio加速數據訪問
5.4Shuffle過程調優
5.4.1Map端聚合
5.4.2檔案讀寫緩衝區
5.4.3Reduce端並行拉取數量
5.4.4溢寫檔案上限
5.4.5數據傾斜調
5.5外部運行環境
參考文獻

作者簡介

1986-1992:北方交通大學講師;1992-1994:比利時VUB大學套用信息技術碩士; 1994-1996: 比利時VUB大學MBA; 1996-2003: IT公司項目經理 2003-至今: 北航軟體學院副教授。已出版二十幾本教材(其中“計算機導論實踐教程”一書獲北航2010年教學成果三等獎;“大學計算機英語教程”獲北航2012年教學成果二等獎。 主講課程: 計算機導論、軟體工程、職業生涯規劃等。

相關詞條

熱門詞條

聯絡我們