1. 程式人生 > >使用ganglia 實現監控 hadoop 和 hbase(詳細過程總結)

使用ganglia 實現監控 hadoop 和 hbase(詳細過程總結)

一,環境準備

     hadoop 2.8.2 分散式環境(三個節點 安裝請參考 hadoop分散式環境安裝

     hbase 1.2.6  分散式環境(三個節點 ,安裝參考hbase分散式環境安裝

     主節點採用 ubuntu 16.04 桌面版 ,從節點為伺服器版的ubuntu 16.04

     主機: 

              172.16.12.1          zhoujun (主機點)

              172.16.12.129      hadoop3

              172.16.12.131      hadoop2

二,Ganglia的簡介

             關於 Ganglia 軟體,Ganglia是一個跨平臺可擴充套件的,高效能運算系統下的分散式監控系統,如叢集和網格。它是基於分層設計,它使用廣泛的技術,如XML資料代表,便攜資料傳輸,RRDtool用於資料儲存和視覺化。它利用精心設計的資料結構和演算法實現每節點間併發非常低的。它已移植到廣泛的作業系統和處理器架構上,目前在世界各地成千上萬的叢集正在使用。它已 被用來連結大學校園和世界各地,可以處理2000節點的規模。gmond 帶來的系統負載非常少,這使得它成為在叢集中各臺計算機上執行的一段程式碼,而不會影響使用者效能。

            Ganglia 由兩個所謂主要守護程序 gmond(Ganglia 監測守護程序)和 gmetad(Ganglia 元守護程序),一個基於 PHP 的 Web 前端和其他一些小的實用程式

三,安裝Ganglia 

    1, 在主節點上安裝相關軟體

sudo apt-get install ganglia-monitor rrdtool gmetad ganglia-webfrontend
在安裝過程中,你應該會看到類似下面的安裝後與apache2伺服器重啟選擇,直接 Yes,然後按Enter鍵。
將ganglia的檔案連結到apache的預設目錄下
sudo ln -s /usr/share/ganglia-webfrontend /var/www/ganglia
    2, 在從節點上安裝 ganglia-monitor
sudo apt-get install ganglia-monitor
     在主節點上安裝ganglia-webfrontend和ganglia-monitor。在其他監視節點上,只需要安裝ganglia-monitor即可
  3,Ganglia 主節點配置
    複製 Ganglia webfrontend Apache 配置,使用下面的命令來正確的位置:
sudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf  #(很關鍵的一步)
    現在,您需要使用以下命令來編輯 Ganglia 元守護程式的配置檔案:
sudo vim /etc/ganglia/gmetad.conf
     其中修改如下幾個屬性
data_source "hadoop-hbase" 3 172.16.12.1:8649 172.16.12.129:8649 172.16.12.131:8649   # 三個節點資訊
setuid_username "zhoujun"            # 使用者名稱 gmetad的使用者名稱
rrd_rootdir "/var/lib/ganglia/rrds"  # 注意這個資料夾的許可權,一定保證其他用能夠訪問,一面出錯
case_sensitive_hostnames 1
  4, 修改 ganglia-monitor 的配置檔案,每臺機器上都進行如下配置
sudo vim /etc/ganglia/gmond.conf
修改的內容如下:
cluster {
  name = "hadoop-hbase"     # 和上面的配置檔案data_source 一致
  owner = "zhoujun"         # 這裡的使用者名稱和上面的一致 
  latlong = "unspecified"
  url = "unspecified"
}

/* The host section describes attributes of the host, like the location */
host {
  location = "unspecified"
}

/* Feel free to specify as many udp_send_channels as you like.  Gmond
   used to only support having a single channel */
udp_send_channel {
  # mcast_join = 239.2.11.71   # 註釋掉
  host=172.16.12.1             # 新增 gmetad的節點ip
  port = 8649
  ttl = 1
}

/* You can specify as many udp_recv_channels as you like as well. */
udp_recv_channel {
  #mcast_join = 239.2.11.71   # 註釋掉
  #host=zhoujun
  port = 8649
  #bind = zhoujun             # 註釋掉
}
  其他上面沒有提到的配置項,不建議修改!

三,配置hadoop, 所有節點都要配置

 vim /opt/hadoop/etc/hadoop/hadoop-metrics2.properties
 注意:一定先將配置檔案中沒有是 # 開頭的配置檔案全部加上 # 將其註釋掉,這點很重要!然後再在檔案最後新增如下內容
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31    
*.sink.ganglia.period=10  

*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both    
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40   

namenode.sink.ganglia.servers=172.16.12.1:8649          # namenode 所在的節點 多個用英文下的逗號隔開
resourcemanager.sink.ganglia.servers=172.16.12.1:8649   # resourcemanager 所在的節點

datanode.sink.ganglia.servers=172.16.12.1:8649,172.16.12.129:8649,172.16.12.131:8649    # datanode 所在的節點 多個用英文下的逗號隔開
nodemanager.sink.ganglia.servers=172.16.12.1:8649,172.16.12.129:8649,172.16.12.131:8649 
# nodemanager 所在的節點 多個用英文下的逗號隔開
maptask.sink.ganglia.servers=172.16.12.1:8649 # map reducetask.sink.ganglia.servers=172.16.12.1:8649 # rdeuce 四,在所有的hbase節點中均配置hadoop-metrics2-hbase.properties
  
 vim /opt/hbase/conf/hadoop-metrics2-hbase.properties 
  注意:這個也一定先將配置檔案中沒有是 # 開頭的配置檔案全部加上 # 將其註釋掉,這點很重要!然後再在檔案最後新增如下內容
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31    
*.sink.ganglia.period=10  
hbase.sink.ganglia.period=10
hbase.sink.ganglia.servers=172.16.12.1:8649   # hbase 主節點資訊
五, 啟動服務

    1, 啟動hadoop和hbase

start-all.sh                  #  啟動 hadoop
start-hbase.sh            #   啟動 hbase
   2, 啟動ganglia和apache 服務

       先需要重啟hadoop和hbase 。在各個節點上啟動gmond服務,主節點還需要啟動gmetad服務,同時重啟apache2。
      使用apt-get方式安裝的Ganglia,可以直接用service方式啟動。 

sudo service ganglia-monitor start #(每臺機器都需要啟動)
sudo service gmetad start          #(在安裝了ganglia-webfrontend的機器上啟動
sudo /etc/init.d/apache2 restart   #(在主機上重啟apache2)
或者: 建議用下面的方式啟動
sudo /etc/init.d/ganglia-monitor start
sudo /etc/init.d/gmetad start
sudo /etc/init.d/apache2 restart
啟動後相關資訊:

   訪問 http://172.16.12.1/ganglia 檢視狀態資訊:

   


若安裝不成功,有幾個很有用的除錯命令:
以除錯模式啟動gmetad:gmetad -d 9
檢視gmetad收集到的XML檔案:telnet zhoujun 8649

gmetad收集到的資訊被放到/var/lib/ganglia/rrds/

可以通過以下命令檢查是否有資料在傳輸 tcpdump port 8649