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信息
管理schema信息
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时需要注意空格。
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