在hbase的日常运维工作中,经常要用到hbase shell客户端,这个客户端提供了常用的命令让运维和开发人员可以方便的管理hbase,但有时这些常用的命令无法满足运维要求时就需要增加自己的运维命令了,比如hbase shell自带的count命令非常慢,特别是数据量大的时候,我们希望增加一个自定义的命令使用hbase的协处理器来统计表的记录数。
在hbase shell中增加自定义命令实际上不复杂,以上面的例子为例,我们来增加一个自定义的命令,命令名称叫fast_count。
1. 在hbase客户端目录下的lib/ruby/shell/commands目录下增加一个叫fast_count.rb的文件,这个文件是实现主要逻揖的地方,格式如下:
2. 在lib/ruby/shell.rb文件中增加这个自定义的命令,我们是要在dml这个组中增加,所以代码需要加在相应的地方,如图:
3. 由于我们的方法是增加在table这个类上的,这样可以充分利用到原有的代码,那我们在lib/ruby/hbase/table.rb文件中增加对应的实现fast_count的方法,如图:
4. 最后,因为我们的这个方法需要用到hbase的connection实例,而这个实例在原有的table类中是没有的,只能在lib/ruby/hbase/hbase.rb中传进来,所以需要修改到lib/ruby/hbase/table.rb和lib/ruby/hbase/hbase.rb两处的代码,如下: