paulwong

          監控HBASE

          @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
          Hadoop/Hbase是開源版的google Bigtable, GFS, MapReduce的實現,隨著互聯網的發展,大數據的處理顯得越發重要,Hadoop/Hbase的用武之地也越發廣泛。為了更好的使用Hadoop/Hbase系統,需要有一套完善的監控系統,來了解系統運行的實時狀態,做到一切盡在掌握。Hadoop/Hbase有自己非常完善的metrics framework, 里面包種各種維度的系統指標的統計,另外,這套metrics framework設計的也非常不錯,用戶可以很方便地添加自定義的metrics。更為重要的一點是metrics的展示方式,目前它支持三種方式:一種是落地到本地文件,一種是report給Ganglia系統,另一種是通過JMX來展示。本文主要介紹怎么把Hadoop/Hbase的metrics report給Ganglia系統,通過瀏覽器來查看。

          介紹后面的內容之前有必要先簡單介紹一下Ganglia系統。Ganglia是一個開源的用于系統監控的系統,它由三部分組成:gmond, gmetad, webfrontend, 三部分是這樣分工的:

          gmond: 是一個守護進程,運行在每一個需要監測的節點上,收集監測統計,發送和接受在同一個組播或單播通道上的統計信息
          gmetad: 是一個守護進程,定期檢查gmond,從那里拉取數據,并將他們的指標存儲在RRD存儲引擎中
          webfrontend: 安裝在有gmetad運行的機器上,以便讀取RRD文件,用來做前臺展示

          簡單總結它們三者的各自的功用,gmond收集數據各個node上的metrics數據,gmetad匯總gmond收集到的數據,webfrontend在前臺展示gmetad匯總的數據。Ganglia缺省是對系統的一些metric進行監控,比如cpu/memory/net等。不過Hadoop/Hbase內部做了對Ganglia的支持,只需要簡單的改配置就可以將Hadoop/Hbase的metrics也接入到ganglia系統中進行監控。

          接下來介紹如何把Hadoop/Hbase接入到Ganglia系統,這里的Hadoop/Hbase的版本號是0.94.2,早期的版本可能會有一些不同,請注意區別。Hbase本來是Hadoop下面的子項目,因此所用的metrics framework原本是同一套Hadoop metrics,但后面hadoop有了改進版本的metrics framework:metrics2(metrics version 2), Hadoop下面的項目都已經開始使用metrics2, 而Hbase成了Apache的頂級子項目,和Hadoop成為平行的項目后,目前還沒跟進metrics2,它用的還是原始的metrics.因此這里需要把Hadoop和Hbase的metrics分開介紹。

          Hadoop接入Ganglia:

          1. Hadoop metrics2對應的配置文件為:hadoop-metrics2.properties
          2. hadoop metrics2中引用了source和sink的概念,source是用來收集數據的, sink是用來把source收集的數據consume的(包括落地文件,上報ganglia,JMX等)
          3. hadoop metrics2配置支持Ganglia:
          #*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink30
          *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
           
          *.sink.ganglia.period=10
          *.sink.ganglia.supportsparse=true
          *.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
          *.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
           
          #uncomment as your needs
          namenode.sink.ganglia.servers=10.235.6.156:8649
          #datanode.sink.ganglia.servers=10.235.6.156:8649
          #jobtracker.sink.ganglia.servers=10.0.3.99:8649
          #tasktracker.sink.ganglia.servers=10.0.3.99:8649
          #maptask.sink.ganglia.servers=10.0.3.99:8649
          #reducetask.sink.ganglia.servers=10.0.3.99:8649


          這里需要注意的幾點:

          (1) 因為Ganglia3.1與3.0不兼容,需要根據Ganglia的版本選擇使用GangliaSink30或者GangliaSink31
          (2) period配置上報周期,單位是秒(s)
          (3) namenode.sink.ganglia.servers指定Ganglia gmetad所在的host:port,用來向其上報數據
          (4) 如果同一個物理機器上同時啟動了多個hadoop進程(namenode/datanode, etc),根據需要把相應的進程的sink.ganglia.servers配置好即可
          Hbase接入Ganglia:

          1. Hbase所用的hadoop metrics對應的配置文件是: hadoop-metrics.properties
          2. hadoop metrics里核心是Context,寫文件有寫文件的TimeStampingFileContext, 向Ganglia上報有GangliaContext/GangliaContext31
          3. hadoop metrics配置支持Ganglia:
          # Configuration of the "hbase" context for ganglia
          # Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)
          # hbase.class=org.apache.hadoop.metrics.ganglia.GangliaContext
          hbase.class=org.apache.hadoop.metrics.ganglia.GangliaContext31
          hbase.period=10
          hbase.servers=10.235.6.156:8649

          這里需要注意幾點:

          (1) 因為Ganglia3.1和3.0不兼容,所以如果是3.1以前的版本,需要用GangliaContext, 如果是3.1版的Ganglia,需要用GangliaContext31
          (2) period的單位是秒(s),通過period可以配置向Ganglia上報數據的周期
          (3) servers指定的是Ganglia gmetad所在的host:port,把數據上報到指定的gmetad
          (4) 對rpc和jvm相關的指標都可以進行類似的配置





          posted on 2013-02-04 15:08 paulwong 閱讀(1228) 評論(0)  編輯  收藏 所屬分類: 分布式HADOOP云計算HBASE

          主站蜘蛛池模板: 永和县| 荆州市| 隆子县| 威信县| 沁源县| 台江县| 潍坊市| 炉霍县| 晋州市| 河津市| 咸阳市| 图片| 哈巴河县| 文化| 综艺| 江安县| 和平县| 思南县| 通城县| 金坛市| 平定县| 扎囊县| 桦南县| 静海县| 周口市| 泽州县| 进贤县| 南木林县| 施甸县| 长海县| 株洲市| 彰化县| 湖州市| 沂源县| 眉山市| 隆昌县| 资中县| 全州县| 铜梁县| 石渠县| 湘潭市|