开源工具 _ HBase表管理系统——HBaseManager2.0.6

1. 更新预览

在HBaseManager 2.0.6 版本中,主要集成了Kerberos认证以及初步支持HQL的功能。快速体验站点:

http://www.jielongping.com:9527/index  账户密码:admin/admin123

2. Kerberos认证

如果你的HBase集群集成了Kerberos,那么你需要在配置文件hbase-manager.properties中,为HBaseManager配置Kerberos相关的认证,我的配置示例如下:

hbase.manager.zk.cluster.alias=node1_online,localhost

node1_online.hbase.quorum=node2.bigdata.leo.com,node1.bigdata.leo.com,node3.bigdata.leo.com
node1_online.hbase.zk.client.port=2181
node1_online.hbase.node.parent=/hbase
node1_online.hbase.client.properties=hbase.client.retries.number=3
node1_online.hbase.filter.namespace.prefix=SYSTEM
node1_online.hbase.filter.tableName.prefix=KYLIN
# Kerberos相关的配置信息,可以参考集群中的hbase-site.xml配置文件
node1_online.hbase.hadoop.security.authentication=kerberos
node1_online.hbase.hbase.security.authentication=kerberos
# KDC客户端配置文件,主要为了指定KDC的服务地址
node1_online.hbase.java.security.krb5.conf=/etc/krb5.conf
# 需要登录用户的keytab文件
node1_online.hbase.keytab.file=/home/hadoop/hadoop.keytab
# 登录用户principal
node1_online.hbase.kerberos.principal=hadoop@LEO.COM
# master 和 regionserver的principal
node1_online.hbase.master.kerberos.principal=hbase/_HOST@LEO.COM
node1_online.hbase.regionserver.kerberos.principal=hbase/_HOST@LEO.COM

##################################################################
localhost.hbase.quorum=localhost
localhost.hbase.zk.client.port=2181
localhost.hbase.node.parent=/hbase
localhost.hbase.client.properties=hbase.client.retries.number=3
localhost.hbase.filter.namespace.prefix=SYSTEM
localhost.hbase.filter.tableName.prefix=KYLIN

3. HQL的功能

此处的HQL不是指hive的HQL,而是针对HBase的API查询,重新定义的一种类SQL的语法。HQL的出现将大大简化HBase复杂查询API的使用。

基于`hbase-sdk项目提供的hql功能,你可以在hbase-manager平台之中稍作设置,就可以体验以类SQL的方式来读写集群中的数据,而无需集成Phoenix。

3.1 创建HBase表的schema信息

在体验SQL之前,你必须为待操作表提供schema信息。

主页->HBaseTableSchema->添加HBaseSchema

为HBase表添加Schema信息

开源工具 _ HBase表管理系统——HBaseManager2.0.6

管理schema信息

开源工具 _ HBase表管理系统——HBaseManager2.0.6

schema信息需要遵循一定模板:

{
 "tableName":"TEST:USER",
 "defaultFamily":"F",
 "columnSchema":[
  {
   "family":"F",
   "qualifier":"name",
   "typeName":"string"
  },
  {
   "family":"F",
   "qualifier":"age",
   "typeName":"int"
  },
  {
   "family":"F",
   "qualifier":"pay",
   "typeName":"int"
  },
  {
   "family":"F",
   "qualifier":"address",
   "typeName":"string"
  }
 ]
}

编辑框提供了json编辑器以及格式化的工具。后续会考虑兼容表单填写schema的方式。

3.2 insert 语句

打开HBaseSQL,在SQL编辑框中输入SQL,针对SQL的一些特殊关键字有友好的高亮和提示。只是目前SQL语法还不是很完美,对语句格式的要求还比较严格,尤其是编写SQL时需要注意空格。

开源工具 _ HBase表管理系统——HBaseManager2.0.6

insert语法示例

INSERT INTO TEST:USER ( name , age , pay , address ) VALUES ('leo', '17', '232424', 'shanghai') WHERE rowkey is stringkey ('1001') 

3.3 select 语句

select 语法示例

-- 基本的select语句
select * from TEST:USER where rowkey is stringkey ('1001')

-- 查询起止rowKey的数据
select * from TEST:USER where startKey is stringkey ( '1001' ) , endKey is stringkey ( '1003' ) limit 10

-- 查询起止rowKey 以及年龄大于10且工资大于20000的数据
select name , age , pay from TEST:USER where startKey is stringkey ( '1001' ) , endKey is stringkey ( '1003' ) ( age greater '10' and pay greater '20000' ) limit 10

--  查询起止rowKey 以及年龄大于10且工资大于20000的数据,且版本号为1,时间戳在1607771640000~1607782440000之间的数据
select name , age , pay from TEST:USER where startKey is stringkey ( '1001' ) , endKey is stringkey ( '1003' ) ( age greater '10' and pay greater '2000' ) ( maxversion is 1 ) ( startTS is '1607771687476' , endTS is '1607782947374' ) limit 10
select name , age , pay from TEST:USER where startKey is stringkey ( '1001' ) , endKey is stringkey ( '1003' ) ( age greater '10' and pay greater '2000' ) ( maxversion is 1 ) ( startTS is '1' , endTS is '2' ) limit 10

3.4 delete语句

delete语法示例

delete语法中,rowKey以及filter条件与select语句类似

delete * from TEST:USER where rowkey is stringkey ( '1001' ) ( age greater '10' and pay greater '20000' )

3.5 目前支持的查询语法

目前支持的过滤字段的语法如下:

cid EQUAL constant                   
cid EQUAL var                        
cid LESS constant                    
cid LESS var                         
cid GREATER constant                 
cid GREATER var                      
cid LESSEQUAL constant               
cid LESSEQUAL var                    
cid GREATEREQUAL constant            
cid GREATEREQUAL var                 
cid NOTEQUAL constant                
cid NOTEQUAL var                     
cid NOTMATCH constant                
cid NOTMATCH var                     
cid MATCH constant                   
cid MATCH var                        
cid IN constantList                  
cid IN var                           
cid NOTIN constantList               
cid NOTIN var                        
cid BETWEEN constant AND constant    
cid BETWEEN var AND var              
cid NOTBETWEEN constant AND constant 
cid NOTBETWEEN var AND var           
cid ISNULL                           
cid ISNOTNULL                        
cid ISMISSING                        
cid ISNOTMISSING 

目前HQL的功能还有很多瑕疵,例如:对空格的语法要求比较严格,对中文的支持不太友好,性能也有没经过全面的测试等等。后续会不断优化这块的功能,以简化项目开发中对HBase复杂查询API的使用。

4. 项目地址

https://gitee.com/weixiaotome/hbase-manager
https://github.com/CCweixiao/hbase-manager
上一篇:sql 函数 根据父级 id ,找子级


下一篇:大数据基础:HQL 入门必练50题_2