Hadoop jar配置使用JMX進行遠程JVM監控


背景:  編寫了一個MapReduce程序,發現該程序內存占用非常多,需要有一種方法來分析內存詳細的占用情況。

    可以使用linux上的pmap –d <PID>來看進程邏輯地址空間使用情況,但是會有很多anno區域,顯然這不能夠滿足同學們的好奇心。 

     在這篇文章Eclipse遠程調試HDP源代碼中,提到使用JMX的方法對HDP進行遠程調試。JMX(Java Management Extensions,即Java管理擴展),望文生義一下,可知這個機制是與管理相關的。在這個機制的基礎上,可以對JVM的運行情況進行實時的分析。方法如下:

     1. 修改vim /usr/hdp/2.3.0.0-2557/hadoop/etc/hadoop/hadoop-env.sh的配置,添加與JMX相關的參數:

     Image

     文字版本(添加45行的內容)

42
 43 # The following applies to multiple commands (fs, dfs, fsck, distcp etc)
 44 export HADOOP_CLIENT_OPTS="-Xmx${HADOOP_HEAPSIZE}m $HADOOP_CLIENT_OPTS"
 45 export HADOOP_CLIENT_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremo
    te.local.only=false   -Djava.net.preferIPv4Stack=true  -Dcom.sun.management.jmxremote.port=1499 $HADOOP_CLIENT_OPTS "

      這個會在執行hadoop jar的機器上,開啟一個端口,這個端口號由-Dcom.sun.management.jmxremote.port=1499這個參數決定。

 

    2.啟動一個mapreduce程序,bash-4.1$ hadoop jar /home/yanliming/workspace/mosaicTest/videoMapreduce/videoMapreduce-1.0-SNAPSHOT.jar /tmp/yanliming/Wildlife.wmv /tmp/ryj/result/output012

       在啟動mapreduce的集群上,可以看到剛才配置的端口已經起來:

       Image

 

     3. 下載visualVM  地址:http://visualvm.java.net/download.html 

      在visualVM中,配置遠程機器的IP和端口號,進行實時的監控:Image

 

 

 

 

   

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM