內容簡介
本書主要介紹了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虛擬機棧
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年教學成果二等獎。 主講課程: 計算機導論、軟體工程、職業生涯規劃等。