Skip to content

Latest commit

 

History

History
488 lines (314 loc) · 18.2 KB

README.md

File metadata and controls

488 lines (314 loc) · 18.2 KB

1. 平台简介

从提交第一行代码,到如今HBaseManager的功能越来越丰富和完善,已经过去了快一年。这个简单的系统,也极大地方便了我们对HBase表的组织和管理工作。

系统目前的功能已经很丰富了,包含多集群切换、命名空间管理、HBase表的新增、修改和删除,以及HBase表的标签管理,快照管理和基本的数据查询、增加和删除等功能。

同时,不同于HBase表的ACL,借助于若依框架本身的角色和权限管理功能,HBaseManager可以很方便地分配每一个角色相应的权限,使之可以管理对应的数据,从而保证数据安全。

当然,您也可以对HBaseManager进行深度定制,以做出更强的系统。所有前端和后台的代码都是基于若依框架进行封装,十分的精简易上手,出错概率低。 同时支持移动客户端访问(若依框架的特性)。之后系统会陆续更新越来越多实用的功能。

  • 感谢 ruoyi 后台管理系统。

2. 极速体验站点

体验站点: admin/admin123

3. HBaseManager功能列表

  1. namespace管理:包括namespace的创建、删除
  2. HBase表管理:表创建、预分区建表(内置三种预分区方案)、表删除、表信息更改、表清空
  3. 列簇管理:列簇新增、删除、属性修改
  4. 标签管理:HBase表的标签管理
  5. 数据管理:HBase表数据的查询、新增、删除。
  6. 多集群管理:多集群切换。
  7. 监控功能:后续可能会考虑增加丰富的监控功能,以期待代替HBase本身的监控界面
  8. WebShell:基于Web的HBase Shell (规划中)
  9. HQL: 以SQL的方式读写HBase集群中的数据
  10. 请求热点监控:集成hbase-hbtop的功能,图表展示RegionServer/Region/namespace/table的实时请求量
  11. 更多功能:......

4. 若依系统本身功能

  1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
  2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。(后续将考虑整合团队统一的登录中心,ladp等等)
  3. 岗位管理:配置系统用户所属担任职务。
  4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
  5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
  6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
  7. 参数管理:对系统动态配置常用参数。
  8. 通知公告:系统通知公告信息发布维护。
  9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
  10. 登录日志:系统登录日志记录查询包含登录异常。
  11. 在线用户:当前系统中活跃用户状态监控。
  12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
  13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
  14. 系统接口:根据业务代码自动生成相关的api接口文档。
  15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
  16. 在线构建器:拖动表单元素生成相应的HTML代码。
  17. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

5. 系统功能截图

5.1 namespace管理

namespace

5.2 表管理

新增表

add table

show1

detail

表信息列表

table-list

查看表详情

table-detail

列簇信息,点击表名连接,跳转查看被选择表的列簇信息

family

列簇属性修改

可以对列簇的一些属性进行修改,同时支持新增列簇。

add

update

5.3 表数据管理

查询表数据

数据管理包括数据查看,详情查看,编辑,数据删除等功能

data-manager

查看表数据详情

detail

编辑表数据

update

5.4 快照管理

snapshot

5.5 多集群管理

hbase-manager 2.0.3 开始,新增了多集群管理,我们需要在配置集群中配置多个集群的连接信息,并在管理界面上手动进行集群切换。

配置多集群

two-cluster-config

配置文件说明

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

切换集群

点击切换集群,就可以管理不同集群的数据。

choose-cluster

5.6 HBase集群指标图表展示

进入首页,可以查看集群整体指标以及,HBase集群的读写请求,并支持RegionServer、Region、Namespace、Table级别的每秒读写请求量监控

metric

requests

5.7 为用户分配HBase表

往往以业务域划分的HBase表,可能分属于不同的部门或用户。HBase本身的ACL机制可以控制对HBase表资源的管理,但是,不开启ACL的时候, 在HBaseManager中也有一套丰富的用户、表权限管理工具。

用管理员账号登录系统,进入用户管理页面,可以为用户分配表

auth-table

auth-table-operation

为用户分配表之后,该用户才能操作被分配的表资源,否则,该用户下无法操作任何表

6. 快速体验

6.1 clone源码

鉴于GitHub的龟速,hbase-manager的所有源码,由gitee和github双平台来托管。

git clone https://github.com/CCweixiao/hbase-manager.git
git clone https://gitee.com/weixiaotome/hbase-manager.git

gitee gitee

github github

6.2 编译项目

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-sdkhbase-manager两个项目中的HBase相关的版本号进行替换。

打包成功后,在hbase-manager-admin/target/dist目录下找到我们打包的安装包。

PACKAGE

如果想适配自己集群的HBase版本,请移步至pom.xml文件中修改,然后自行编译就好。

如果只是想抢鲜体验的话,这里提供编译好的安装包,整个系统配置简单,部署方便。 默认提供安装包基于的HBase版本分别为1.4.3和2.1.0

安装包下载地址: 链接:https://pan.baidu.com/s/1Z51tELHpkhCpE1_vzzf__g 密码:jgo5

6.3 安装部署

示例命令:

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的目录结构:

setup

配置数据源

数据源配置,请编辑conf/application-druid.yml,各个配置项的作用说明,配置文件中解释的十分详实。

edit-datasource

保证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

index

如果有朋友对这个系统比较感兴趣,在体验的过程中,有遇到任何问题,欢迎在公众号里留言。 系统其它功能模块的使用文档,可以扫一眼若依的官方文档。

find-me

7. hbase-sdk

HBaseManager项目中有使用到我另一个开源项目hbase-sdk。 它是一款简单易上手的hbase ORM框架,针对HBase1和HBase2的API,做了统一的封装,同时可以使用其spring-boot-starter-hbase在SpringBoot项目中直接作为ORM框架引入,类似于spring-boot-jpa。

项目地址

https://gitee.com/weixiaotome/hbase-sdk

gitee-hbase-sdk

https://github.com/CCweixiao/hbase-sdk

github-hbase-sdk

API地址

https://weixiaotome.gitee.io/hbase-sdk/

hbase-sdk-api

8. HQL

8.1 创建HBase表的schema信息

基于hbase-sdk的hql功能,你可以在hbase-manager平台之中稍作设置,就可以体验以类SQL的方式来读写集群中的数据。

在体验SQL之前,你需要定义将要操作表的schema信息。

主页->HBaseTableSchema->添加HBaseSchema

add-schema

schema-list

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的方式。

8.2 insert 语句

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

insert-sql

输入insert语法示例:

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

8.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

8.4 delete语句

delete语法示例

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

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

关于更多的语法示例,随着系统功能的完善会一一添加的

9. 更新日志

v2.0.9 2022.01.09

  1. 完善类的不兼容问题

v2.0.8 2021.02.06

  1. hbase-client依赖替换为hbase-shade-client
  2. 支持hbase2.x的编译打包,hbase1.x 对应hbase1.4.3,hbase2.x对应hbase2.1.0
  3. 完善编译脚本以及系统的启动脚本
  4. 新增为用户分配表的功能

v2.0.7 2021.01.17

  1. 集成hbase-hbtop的代码,HBase读写请求热点监控

v2.0.6 2020.12.12

  1. 集成Kerberos环境下的HBase集群认证
  2. 新增HBase SQL查询功能(持续优化中)

v2.0.5 2020.11.14

  1. 多集群切换功能完善
  2. 项目结构调整,代码优化,引用hbase-sdk 2.0.5
  3. 优化HBase表数据管理功能,完善表数据的增删改查
  4. 新增快照管理功能
  5. HBase列簇管理功能完善,包括列簇新增、以及参数更新等功能
  6. 还有更多 ......

v2.0.3 2020.10.08

  1. 增加多集群的切换功能
  2. HBase表信息数据不依赖MySQL存储
  3. 项目结构调整,代码优化,引用hbase-sdk 2.0.3
  4. 优化HBase表创建时的预分区选择功能
  5. HBase表数据新增功能实现
  6. 还有更多 ......

v2.0.1 2020.09.12

  1. 去除namespace定义的MySQL表
  2. 去除family定义的MySQL表
  3. 减少HBase table信息表的字段,初始化表数据更加方便
  4. HBase namespace管理
  5. HBase 表信息管理
  6. HBase 表标签管理
  7. HBase 表数据查询

v1.0.1 2020.08.31

  1. HBase项目开启
  2. HBase namespace管理
  3. HBase 表信息管理
  4. HBase 表标签管理