丰富HBase-web监控信息_klose_新浪博客

Hbase

web展示界面在Release中找不到对应的源代码,我们只能看到Class文件。所以,对于想添加监控信息的同学来说,这一点是远远不够的。那么HBase的web界面是如何组织的呢?

1、在HMaster和HRegionServer中定义了对应的Servlet,分别为MasterStatusServlet和RSStatusServlet。以及其它跳转的jsp,这些内容放置在hbase-0.**.*.jar内的hbase-webapps中。

使用jar xf hbase-*.**.*.jar,里面包含了如下内容:

.

├── hbase-default.xml

├── hbase-webapps

├── META-INF

└── org

hbase 的web主要涉及了

hbase-webapps以及org/apache/hbase/tmpl下的内容。这块内存在HBASE_HOME/src/main/jamon内,.

└──

org

    └──

apache

       

└── hbase

           

└── tmpl

               

├── common

               

│   └──

TaskMonitorTmpl.jamon

               

├── master

               

│   ├──

AssignmentManagerStatusTmpl.jamon

               

│   └──

MasterStatusTmpl.jamon

               

└── regionserver

                   

└── RSStatusTmpl.jamon

7 directories, 4 files

Jamon是一种类似jsp的文件,只不过它更加简洁。通过servlet获取Context内的对象内的值,我们在HMaster.java上可以看到,this.infoServer.setAttribute(MASTER,

this);infoServer将整个HMaster实例传递给Context中。

2、将Jamon编译成java程序。 

http://www.jamon.org/ 下载并安装jamon编译器,注意下面的javapath需要包含jamon内的jar包。

cd $HBASE_HOME/src/main/jamon/

java -cp $javapath org.jamon.compiler.TemplateProcessor

–srcDir=. –destDir=.

 org/apache/hbase/tmpl/master/*

java -cp $javapath org.jamon.compiler.TemplateProcessor –srcDir=.

–destDir=.

 org/apache/hbase/tmpl/regionserver/*

java -cp $javapath org.jamon.compiler.TemplateProcessor –srcDir=.

–destDir=.

 org/apache/hbase/tmpl/common/*

3、编译整个Hbase-src工程,然后打包成jar替换。

因此,如果我们想在HBase web内添加一些新的东西,就变得非常简单,这主要有三种途径:

1)在对应Master或者RegionServer的页面内直接添加信息。信息可以直接通过Context注入的对象获取。

2)在HMaster或者RegionServer的infoServer上添加新的servlet,然后在主监控页面给一个跳转即可。

3)在hbase-webapps增加对应的jsp文件,然后在jamon中增加跳转即可。

来源URL:http://blog.sina.com.cn/s/blog_4a1f59bf010180i0.html