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
│
AssignmentManagerStatusT
│
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/
–srcDir=. –destDir=.
java -cp $javapath org.jamon.compiler.TemplateProcessor –srcDir=.
–destDir=.
java -cp $javapath org.jamon.compiler.TemplateProcessor –srcDir=.
–destDir=.
3、编译整个Hbase-src工程,然后打包成jar替换。
1)在对应Master或者RegionServer的页面内直接添加信息。信息可以直接通过Context注入的对象获取。
2)在HMaster或者RegionServer的infoServer上添加新的servlet,然后在主监控页面给一个跳转即可。