从提交第一行代码,到如今HBaseManager的功能越来越丰富和完善,已经过去了快一年。这个简单的系统,也极大地方便了我们对HBase表的组织和管理工作。
系统目前的功能已经很丰富了,包含多集群切换、命名空间管理、HBase表的新增、修改和删除,以及HBase表的标签管理,快照管理和基本的数据查询、增加和删除等功能。
同时,不同于HBase表的ACL,借助于若依框架本身的角色和权限管理功能,HBaseManager可以很方便地分配每一个角色相应的权限,使之可以管理对应的数据,从而保证数据安全。
当然,您也可以对HBaseManager进行深度定制,以做出更强的系统。所有前端和后台的代码都是基于若依框架进行封装,十分的精简易上手,出错概率低。 同时支持移动客户端访问(若依框架的特性)。之后系统会陆续更新越来越多实用的功能。
- 感谢 ruoyi 后台管理系统。
- namespace管理:包括namespace的创建、删除
- HBase表管理:表创建、预分区建表(内置三种预分区方案)、表删除、表信息更改、表清空
- 列簇管理:列簇新增、删除、属性修改
- 标签管理:HBase表的标签管理
- 数据管理:HBase表数据的查询、新增、删除。
- 多集群管理:多集群切换。
- 监控功能:后续可能会考虑增加丰富的监控功能,以期待代替HBase本身的监控界面
- WebShell:基于Web的HBase Shell (规划中)
- HQL: 以SQL的方式读写HBase集群中的数据
- 请求热点监控:集成hbase-hbtop的功能,图表展示RegionServer/Region/namespace/table的实时请求量
- 更多功能:......
- 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
- 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。(后续将考虑整合团队统一的登录中心,ladp等等)
- 岗位管理:配置系统用户所属担任职务。
- 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
- 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
- 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
- 参数管理:对系统动态配置常用参数。
- 通知公告:系统通知公告信息发布维护。
- 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
- 登录日志:系统登录日志记录查询包含登录异常。
- 在线用户:当前系统中活跃用户状态监控。
- 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
- 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
- 系统接口:根据业务代码自动生成相关的api接口文档。
- 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
- 在线构建器:拖动表单元素生成相应的HTML代码。
- 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
新增表
表信息列表
查看表详情
列簇信息,点击表名连接,跳转查看被选择表的列簇信息
列簇属性修改
可以对列簇的一些属性进行修改,同时支持新增列簇。
查询表数据
数据管理包括数据查看,详情查看,编辑,数据删除等功能
查看表数据详情
编辑表数据
hbase-manager 2.0.3 开始,新增了多集群管理,我们需要在配置集群中配置多个集群的连接信息,并在管理界面上手动进行集群切换。
配置多集群
配置文件说明
hbase.manager.zk.cluster.alias=localhost
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
配置Kerberos认证
如果你的HBase集群是在Kerberos环境下,那么配置文件hbase-manager.properties
中需要指定kerberos认证相关的配置。
示例配置以及配置说明如下:
hbase.manager.zk.cluster.alias=node1_dev,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[email protected]
# master 和 regionserver的principal
node1_online.hbase.master.kerberos.principal=hbase/[email protected]
node1_online.hbase.regionserver.kerberos.principal=hbase/[email protected]
##################################################################
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
切换集群
点击切换集群,就可以管理不同集群的数据。
进入首页,可以查看集群整体指标以及,HBase集群的读写请求,并支持RegionServer、Region、Namespace、Table级别的每秒读写请求量监控
往往以业务域划分的HBase表,可能分属于不同的部门或用户。HBase本身的ACL机制可以控制对HBase表资源的管理,但是,不开启ACL的时候, 在HBaseManager中也有一套丰富的用户、表权限管理工具。
用管理员账号登录系统,进入用户管理页面,可以为用户分配表
为用户分配表之后,该用户才能操作被分配的表资源,否则,该用户下无法操作任何表
鉴于GitHub的龟速,hbase-manager的所有源码,由gitee和github双平台来托管。
git clone https://github.com/CCweixiao/hbase-manager.git
git clone https://gitee.com/weixiaotome/hbase-manager.git
hbase-manager由java开发,maven管理,项目编译十分方便:
cd hbase-manager
mvn clean package -Dmaven.test.skip=true -Phbase-1.x or
mvn clean package -Dmaven.test.skip=true -Phbase-2.x
# 或者执行mvn脚本
sh bin/build-hbase-1.2.sh or
sh bin/build-hbase-2.x.sh
-Phbase-1.x 默认加载hbase1.4.3的client api -Phbase-2.x 默认加载hbase2.1.0的client api
其实,hbase1.4.3的客户端包同样可以操作2.1的集群,仅仅是有些API过时了而已。
如果想完全适配自己集群版本的HBase,还请自行对hbase-sdk
和hbase-manager
两个项目中的HBase相关的版本号进行替换。
打包成功后,在hbase-manager-admin/target/dist目录下找到我们打包的安装包。
如果想适配自己集群的HBase版本,请移步至pom.xml文件中修改,然后自行编译就好。
如果只是想抢鲜体验的话,这里提供编译好的安装包,整个系统配置简单,部署方便。 默认提供安装包基于的HBase版本分别为1.4.3和2.1.0
安装包下载地址: 链接:https://pan.baidu.com/s/1Z51tELHpkhCpE1_vzzf__g 密码:jgo5
示例命令:
tar -zxvf hbase-manager-2.0.7-hbase-2.x.tar.gz/hbase-manager-2.0.7-hbase-1.x.tar.gz
cd hbase-manager-2.0.7-hbase-2.x/hbase-manager-2.0.7-hbase-1.x
java -jar hbase-manager-admin-2.0.7.jar
or
tar -zxvf hbase-manager-2.0.7-hbase-2.x.tar.gz/hbase-manager-2.0.7-hbase-1.x.tar.gz
cd hbase-manager-2.0.7-hbase-2.x/hbase-manager-2.0.7-hbase-1.x
sh bin/hbase-manager.sh start|stop|status|restart
hbase-manager的目录结构:
配置数据源
数据源配置,请编辑conf/application-druid.yml,各个配置项的作用说明,配置文件中解释的十分详实。
保证MySql可以连接,最好用MySql5.7,新建数据库hbase-manager,配置好你数据库的用户名密码,然后运行sql文件。sql文件在conf/sql文件夹下,分为hbase-manager.sql(hbase-manager-latest.sql)和quartz.sql,分别运行两个SQL文件,创建所需的表,最新版本的sql文件请选择对应的版本编号。
配置多集群切换
请编辑conf/hbase-manager.properties,把需要管理的集群连接信息,加入到配置文件中。各个配置项的说明请参考上文。
系统级别的配置
系统配置一般不做修改,如果有需要请编辑application.yaml。配置文件中各个配置项的作用说明也十分详细,就不占用此处的空间。
一些示例命令:
# 系统配置非常简单,配置完后就可以启动系统了
cd /opt/hbase-manager-2.0.5
nohup java -jar hbase-manager-admin-1.0.0.jar > /dev/null 2>&1 &
bin/hbase-manager.sh start|stop|status|restart
浏览器访问:http://ip:9527/login
如果有朋友对这个系统比较感兴趣,在体验的过程中,有遇到任何问题,欢迎在公众号里留言。 系统其它功能模块的使用文档,可以扫一眼若依的官方文档。
HBaseManager项目中有使用到我另一个开源项目hbase-sdk。
它是一款简单易上手的hbase ORM框架,针对HBase1和HBase2的API,做了统一的封装,同时可以使用其spring-boot-starter-hbase
在SpringBoot项目中直接作为ORM框架引入,类似于spring-boot-jpa。
项目地址
https://gitee.com/weixiaotome/hbase-sdk
https://github.com/CCweixiao/hbase-sdk
API地址
https://weixiaotome.gitee.io/hbase-sdk/
基于hbase-sdk
的hql功能,你可以在hbase-manager平台之中稍作设置,就可以体验以类SQL的方式来读写集群中的数据。
在体验SQL之前,你需要定义将要操作表的schema信息。
主页->HBaseTableSchema->添加HBaseSchema
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的方式。
打开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')
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
delete语法示例
delete语法中,rowKey以及filter条件与select语句类似
delete * from TEST:USER where rowkey is stringkey ( '1001' ) ( age greater '10' and pay greater '20000' )
关于更多的语法示例,随着系统功能的完善会一一添加的
- 完善类的不兼容问题
- hbase-client依赖替换为hbase-shade-client
- 支持hbase2.x的编译打包,hbase1.x 对应hbase1.4.3,hbase2.x对应hbase2.1.0
- 完善编译脚本以及系统的启动脚本
- 新增为用户分配表的功能
- 集成hbase-hbtop的代码,HBase读写请求热点监控
- 集成Kerberos环境下的HBase集群认证
- 新增HBase SQL查询功能(持续优化中)
- 多集群切换功能完善
- 项目结构调整,代码优化,引用hbase-sdk 2.0.5
- 优化HBase表数据管理功能,完善表数据的增删改查
- 新增快照管理功能
- HBase列簇管理功能完善,包括列簇新增、以及参数更新等功能
- 还有更多 ......
- 增加多集群的切换功能
- HBase表信息数据不依赖MySQL存储
- 项目结构调整,代码优化,引用hbase-sdk 2.0.3
- 优化HBase表创建时的预分区选择功能
- HBase表数据新增功能实现
- 还有更多 ......
- 去除namespace定义的MySQL表
- 去除family定义的MySQL表
- 减少HBase table信息表的字段,初始化表数据更加方便
- HBase namespace管理
- HBase 表信息管理
- HBase 表标签管理
- HBase 表数据查询
- HBase项目开启
- HBase namespace管理
- HBase 表信息管理
- HBase 表标签管理