暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

开源工具 | HBase表管理系统——HBaseManager2.0.2

HBase工作笔记 2020-09-13
684



1. 前言

在之前的文章中已经为大家简单介绍过HBaseManager,它提供界面化的方式来帮助我们有效地管理我们集群的HBase表信息。在HBase的维护工作中,绝大多数需要在HBase Shell下执行的命令,都可以选择在系统中完成。HBaseManager部署方便,一键启动,界面美观大方,功能流畅友好,绝对能成为你HBase运维工作中的一大助力。
经过近一个月的开发迭代与BUG修复,系统的基本功能已经打磨完毕,同时决定开放源码。目前HBaseManger的最新稳定版本是2.0.2,如果你对此颇有兴趣,可以从我Gitee或GitHub的个人仓库里克隆出所有的源代码,整个系统采取MIT协议,除非你把源码用于违法犯罪活动,否则,你不会受到任何法律或道德上的谴责。

2. 源码获取

鉴于Github的网速,源码同时托管于Gitee。
git clone https://gitee.com/weixiaotome/hbase-manager.git

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

复制
gitee

github

当然,你也可以选择在这里下载最新的发行包。
replease

3. 编译部署

3.1 开始编译

HBaseManager由Java8开发,用maven进行项目依赖管理,所以你需要保证你的编译环境里安装了Java8和maven3.6+。maven3.5+应该也是可以的。
# 进入项目所在的根目录
cd hbase-manager

mvn clean package -Dmaven.test.skip=true -Phbase1.x 

or

mvn clean package -Dmaven.test.skip=true -Phbase2.x
复制
-Phbase1.x 默认加载hbase1.x的client api -Phbase2.x 默认加载hbase2.x的client api
tag: 目前HBaseManager对HBase2.0的支持度还不是很友好,但1.4.3的Client API应该还是可以操作HBase2.x的集群的。
打包成功后,在hbase-manager-admin/target/dist目录下找到我们打包的安装包。
如果想适配自己集群的HBase版本,请移步至pom.xml文件中修改,然后自行编译就好。

3.2 开始部署

示例命令:
tar -zxvf hbase-manager-2.0.2.tar.gz
rm -f hbase-manager-2.0.2.tar.gz
cd /opt/hbase-manager-2.0.2
复制
hbase-manager的目录结构:
setup
  • bin  系统启动脚本等文件的存放目录
  • conf 配置文件,以及静态文件
  • lib  第三方jar包保存目录
  • logs 系统运行日志保存目录
conf目录
conf
  • application-druid.yml 数据源配置文件
  • application.yml 系统本身配置文件
其余文件都不需要管,我们重点需要配置数据源,编辑application-druid.yml,各个配置项的作用说明,在配置文件中都有十分详细的说明。
edit-datasource
保证MySql可以连接,最好用MySql5.7,新建数据库hbase-manager,配置好连接数据库的用户名和密码,然后运行sql文件初始化所需的表和数据,sql文件在conf/sql文件夹下,名为hbase-manager.sql。
系统级别配置
系统配置一般不做修改,如果有需要请编辑application.yaml。配置文件中各个配置项的作用说明也十分详细,就不占用此处的空间。
简单的初始化工作完成之后,就可以尝试运行我们的系统,系统启动的命令更简单。
示例命令:
cd /opt/hbase-manager-1.0.0

nohup java -jar  hbase-manager-admin-1.0.0.jar > /dev/null 2>&1 &
复制
相关进程启动,且检查确定启动日志中没有报错之后,请在浏览器访问。
http://ip:9527/login

复制
index

4. 开始使用

目前系统支持的功能有:
  • 命名空间管理
  • HBase表管理 如:创建表,禁用表,查看表详情,删除表等
  • HBase列簇管理
  • 标签管理 标签管理可以更好地帮助对HBase相同业务域的表进行分类
  • HBase表数据管理 筛选表的数据,删除表的数据等。
  • 完善的角色、用户、部门权限的划分
  • 定时任务
  • 还有更多

4.1 命名空间管理

命名空间的创建和删除。
NAMESPACE

4.2 HBase表管理

HBase表信息列表展示,以及十分友好的搜索提示与分页功能。
table-list
HBase表创建:
create-table
HBase表详情查看:
table-detail

4.3 HBase表列簇管理

family

4.4 HBase表标签管理

tag

4.5 HBase表数据筛选

show-data

4.6 用户以及权限管理

user-role

5. 二次开发

5.1 RuoYi

用IDEA直接打开项目。
project
  • hbase-manager-admin 是系统的web模块,标准的SpringBoot的工程,程序的主入口
  • 系统配置文件、数据源配置文件以及web相关的静态文件均在该模块的resources文件夹之中
项目采用的技术栈:
  1. 核心框架:Spring Boot。
  2. 安全框架:Apache Shiro。
  3. 模板引擎:Thymeleaf。
  4. 持久层框架:MyBatis。
  5. 定时任务:Quartz。
  6. 数据库连接池:Druid。
  7. 工具类:Fastjson。
  8. 更多……
HBaseManager基于RuoYi后台管理系统开发而成,其官网网站有更详细的关于RuoYi框架的说明,很赞很强大,如果之前没对RuoYi有所了解,可以参考其官网文档。
http://doc.ruoyi.vip/
复制

5.2 hbase-sdk

hbase-sdk是我的另一个开源作品,基于HBase的ORM框架,可以与SpringBoot无缝集成,也可以使用在普通项目之中。hbase-sdk对hbase-client做了又一层统一的封装,赋予其ORM的特性,很方便地实现HBase查询的结果数据与模板对象进行属性绑定。
项目地址
https://gitee.com/weixiaotome/hbase-sdk
https://github.com/CCweixiao/hbase-sdk
复制
功能预览
@Service
public class UserService {
    @Autowired
    private HBaseTemplate hBaseTemplate;

 @Test
    public void testGet() {
        UserEntity userEntity = hBaseTemplate.getByRowKey("10001", UserEntity.class);
        final UserEntity userEntity1 = hBaseTemplate.getByRowKey("10002", UserEntity.class);
        System.out.println("用户数据获取成功!");
        System.out.println(userEntity);
    }
    
   }
复制
代码获取
git clone https://github.com/CCweixiao/hbase-sdk.git
git clone https://gitee.com/weixiaotome/hbase-sdk.git
cd hbase-sdk
mvn clean install -Dmaven.test.skip=true
复制
maven中央仓库中搜索 CCweixiao
maven1
maven2

6. 总结

hbase-sdk和hbase-manager算是我编程入行以来第一个真正意义上的开源作品,也是我头一回在没有工资驱动的情况下,坚持做完整的一件事。
它们的功能或许很简单,它们的实现方式或许很拙劣,甚至相比于其他世界顶级的项目,它们渺小的犹如尘埃。但是,把脑海中一个迸发的念头,一点一滴具象成一个看得见摸得着的表现形式,真的是一件非常酷的事情。
但是,个人的能力毕竟有限,如果你也有兴趣想要完善这个系统,可以参与开发,提交建议,或者在使用HBaseManager的过程当中,你发现了任何问题,欢迎下方留言。

文章转载自HBase工作笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论