使用DBeaver访问Phoenix
应用场景
DBeaver是一个SQL客户端和数据库管理工具。对于关系数据库,使用JDBC API通过JDBC驱动程序与数据库交互。对于其他数据库(NoSQL),使用专有数据库驱动程序。
本章节以DBeaver 6.3.5版本为例,讲解如何使用DBeaver访问MRS 3.1.0未开启Kerberos认证的集群,且该集群的HBase服务未开启Ranger鉴权。
方案架构
HBase以表的形式存储数据,数据模型如图 HBase数据模型所示。表中的数据划分为多个Region,并由Master分配给对应的RegionServer进行管理。
每个Region包含了表中一段RowKey区间范围内的数据,HBase的一张数据表开始只包含一个Region,随着表中数据的增多,当一个Region的大小达到容量上限后会分裂成两个Region。可以在创建表时定义Region的RowKey区间,或者在配置文件中定义Region的大小。
Phoenix是构建在HBase之上的一个SQL中间层,提供一个客户端可嵌入的JDBC驱动,Phoenix查询引擎将SQL输入转换为一个或多个HBase scan,编译并执行扫描任务以产生一个标准的JDBC结果集。
约束与限制
- 已安装DBeaver 6.3.5版本,DBeaver软件下载链接为:https://dbeaver.io/files/6.3.5/dbeaver-ce-6.3.5-x86_64-setup.exe。
- 已安装JDK 1.8.0_x。
步骤一:配置DBeaver安装环境
- 向DBeaver安装目录下的“dbeaver.ini”文件中增加JDK 1.8.0_x的bin目录,例如:C:\Program Files\Java\jdk1.8.0_121\bin,则新增如下内容:
图2 新增JDK的bin目录
- 在https://archive.apache.org/dist/phoenix/apache-phoenix-5.0.0-HBase-2.0/bin/apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz中下载Phoenix软件包并解压,获取“phoenix-5.0.0-HBase-2.0-client.jar”。
- 创建并购买一个包含HBase组件的MRS 3.1.0未开启Kerberos认证的集群,详情可参考创建MRS集群。
- 安装包含HBase的客户端,并从客户端安装节点上的“客户端安装目录/HBase/hbase/conf”目录下载“hbase-site.xml”文件。使用压缩软件打开获取到的“phoenix-5.0.0-HBase-2.0-client.jar”,将“hbase-site.xml”拖拽到该Jar文件中。
步骤二:在DBeaver配置访问Phoenix参数
- 打开DBeaver,选择“文件 > 新建 > DBeaver > 数据库连接”。
图3 创建数据库连接
- 单击“下一步”,在选择新连接类型界面选中“Apache Phoenix”并单击“下一步”。
图4 选择数据连接类型
- 单击“编辑驱动设置”。
图5 编辑驱动设置
- 单击“添加文件”,选择准备好的“phoenix-5.0.0-HBase-2.0-client.jar”,如果有多个驱动包,需先删除,只保留手动添加的“phoenix-5.0.0-HBase-2.0-client.jar”。
图6 删除原有的驱动包
图7 添加Phoenix Jar包
- 单击“找到类”,加载完成后在左侧框中选择“org.apache.phoenix.jdbc.PhoenixDriver”。
图8 加载驱动类
- 添加Zookeeper Base Path。
- 登录FusionInsight Manager,选择“集群 > 服务 > HBase”,单击“HMaster WebUI”右侧的超链接,登录HBase WebUI界面,搜索“Zookeeper Base Path”,并获取该值,如下图所示“Zookeeper Base Path”的值为“/hbase”:
图9 查看Zookeeper Base Path
- 将“ZooKeeper Base Path”值配置到URL模板中,即在原有的URL地址后面增加“:/hbase”即可,并单击确定:
图10 配置URL模板
- 登录FusionInsight Manager,选择“集群 > 服务 > HBase”,单击“HMaster WebUI”右侧的超链接,登录HBase WebUI界面,搜索“Zookeeper Base Path”,并获取该值,如下图所示“Zookeeper Base Path”的值为“/hbase”:
- 配置EIP。如果本地Windows与集群之间网络不通,需要为每个HBase节点以及ZooKeeper节点配置EIP,并且在本地Windows的hosts文件添加所有节点的公网IP对应主机域名的映射关系,例如:
如果使用的是Windows云服务器,并且与集群的网络是通的,则无需配置EIP。
- 登录FusionInsight Manager,选择“集群 > 服务 > ZooKeeper > 实例”。
选择任一节点,将该节点对应的EIP填入主机框中(如果使用的是Windows云服务器,并且与集群的网络是通的,直接填写节点的业务IP地址即可)。
图11 配置主机
- 单击“测试连接”,如图10 测试连接所示表示对接成功,单击“确定”。
- 以客户端安装用户登录安装HBase客户端的节点,执行以下命令创建新的命名空间MY_NS:
cd 客户端安装目录
source bigdata_env
hbase shell
create_namespace "MY_NS"
步骤三:在DBeaver验证连接结果
- 打开DBeaver,选择“SQL编辑器 > 新建SQL编辑器”,即可执行相关SQL语句,例如:
- 在编辑器中输入以下命令并选择“SQL 编辑器 > 执行 SQL 语句”,即可在default中创建表TEST:
CREATE TABLE IF NOT EXISTS TEST (id VARCHAR PRIMARY KEY, name VARCHAR);
UPSERT INTO TEST(id,name) VALUES ('1','jamee');
- 在编辑器中输入以下命令并选择“SQL 编辑器 > 执行 SQL 语句”,即可在MY_NS中创建表TEST并插入数据:
CREATE TABLE IF NOT EXISTS MY_NS.TEST (id integer not null primary key, name varchar);
UPSERT INTO MY_NS.TEST VALUES(1,'John');
UPSERT INTO MY_NS.TEST VALUES(2,'Tom');
UPSERT INTO MY_NS.TEST VALUES(3,'Manson');
UPSERT INTO MY_NS.TEST VALUES(4,'Aurora');
- 在编辑器中输入以下命令并选择“SQL 编辑器 > 执行 SQL 语句”,即可在default中创建表TEST:
- 右键单击连接名称,单击“刷新”,再单击连接名称左侧的,即可查看在default和MY_NS中新建的表:
图13 查看表