Windows環境下JvisulaVM一般存在于安裝了JDK的目錄${JAVA_HOME}/bin/JvisualVM.exe,它支援(本地和遠端)jstatd和JMX兩種方式連接配接遠端JVM。
jstatd (Java Virtual Machine jstat Daemon)——監聽遠端伺服器的CPU,記憶體,線程等資訊 JMX(Java Management Extensions,即Java管理擴充)是一個為應用程式、裝置、系統等植入管理功能的架構。JMX可以跨越一系列異構作業系統平台、系統體系結構和網絡傳輸協定,靈活的開發無縫內建的系統、網絡和服務管理應用。 備注:針對jstatd我嘗試未成功,是以也不在這裡誤導别人。
正常配置:
在Spark中監控executor時,需要先配置jmx然後再啟動spark應用程式,配置方式有三種:
1)在spark-defaults.conf中配置那三個參數
2)在spark-env.sh中配置:配置master,worker的JavaOptions
3)在spark-submit送出時配置
這裡采用以下spark-submit送出時配置:
注意: 1)不能指定具體的 ip 和 port------因為spark中運作時,很可能一個節點上配置設定多個container程序,此時占用同一個端口,會導緻spark應用程式通過spark-submit送出失敗。 2)因為不指定具體的ip和port,是以在任務送出階段會自動配置設定端口。 3)上邊三種配置方式可能會導緻監控級别不同(比如spark-submit隻針對一個應用程式,spark-env.sh可能是全局一個節點所有executor監控【未驗證】,請讀者注意。)
通過yarn applicationattempt -list appicationId查找到applicationattemptid
通過yarn container -list aaplicationattemptId查找container id list
到具體executor所在節點伺服器上,使用如下指令找到運作的線程,和 pid
然後通過 pid 找到對應JMX的端口
結果中看,疑似為48169或37692,稍微嘗試一下即可連上對應的 spark executor
在本地windows伺服器上找到JDK的目錄,找到檔案${JAVA_HOME}/bin/JvisualVM.exe,并運作它。啟動後選擇“遠端”右鍵,添加JMX監控

填寫監控executor所在節點ip
然後就可以啟動監控:
基礎才是程式設計人員應該深入研究的問題,比如:
1)List/Set/Map内部組成原理|差別
2)mysql索引存儲結構&如何調優/b-tree特點、計算複雜度及影響複雜度的因素。。。
3)JVM運作組成與原理及調優
4)Java類加載器運作原理
5)Java中GC過程原理|使用的回收算法原理
6)Redis中hash一緻性實作及與hash其他差別
7)Java多線程、線程池開發、管理Lock與Synchroined差別
8)Spring IOC/AOP 原理;加載過程的。。。
【+加關注】。