標籤:
一、本文的目的 Straggler是目前研究的熱點,Spark中也存在Straggler的問題。GC問題是總所周知的導致Straggler的重要因素之一,為了瞭解GC導致的Straggler問題,首先需要學習GC問題以及如何監控Spark的GC。GC問題的討論比較多了,推薦一篇系列文章用於學習:成為Java的GC專家。
二、本文所需工具 本文所需工具很簡單,基本不用下載。監控GC的前提是: 1、已經在叢集上安裝了Spark並可以正常提交作業; 2、本地裝有jdk1.6以上版本。 本文實際使用的工具是:java內建的jvisualvm。
三、配置jvisualvm 1、遠程叢集:需要簡單配置並啟動jstatd。方法比較簡單,共兩步: i. 在JAVA_HOME的bin目錄下建立一個jstatd.all.policy的檔案,檔案內容為:
grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };
ii. 執行:jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=yourip。
將命令中的yourip替換成Spark的master所在的node的地址,該地址也是jvisualvm需要串連的地址。確保不會報RMI和Connect的錯誤。
2、本地主機:無需配置,啟動jvisualvm即可。
在jvisualvm中建立遠程主機,IP地址為之前填寫的地址,使用jstatd串連,預設連接埠1099。然後就可以看到遠程啟動並執行jvm虛擬機器了。
四、監控
1、在jvisualvm的“工具”選項中的外掛程式一欄下載Visual GC外掛程式,然後就可以看到虛擬機器的監控頁面多出一欄GC監控。
2、在叢集上通過Spark submit提交一個應用,本地就可以監控到了,雙擊查看其資訊。
3、監控到的如下:
Spark的Straggler深入學習(1):如何在本地圖形監控遠程Spark的GC情況——使用java內建的jvisualvm