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 之前,你必须为待操作的HBase表提供 完整的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
- END -