dbeaver连接amabri-hbase

目录

尝试过程

解决之道

总结

尝试过程

注意此章节为记录试错过程,无需跟随操作,仅作试错记录。真正操作方法请看"解决之道"章节

环境ambari安装的hbase2.1.6

使用apche phoenix默认驱动配置

备注:Apache Phoenix 是一个开源的、基于 SQL 的查询引擎,它使得可以在 Apache HBase(分布式 NoSQL 数据库)上使用标准的 SQL 查询语言。Phoenix 提供了对 HBase 的 SQL 接口,使得用户可以使用熟悉的 SQL 语法来查询和操作 HBase 中的数据。

在hbase配置文件中找到ZooKeeper Znode Parent参数的值

并在编辑驱动中添加:

添加驱动属性

测试连接

出现:

Insufficient permissions to create SYSTEM namespace and SYSTEM Tables

权限不足,无法创建 SYSTEM 命名空间和 SYSTEM空间下的 表

手动登录hbase创建SYSTEM,并授予hbase用户权限

测试连接

ERROR 1012 (42M03): Table undefined. tableName=SYSTEM.CATALOG

又出现没有SYSTEM.CATALOG表,此时怀疑是否需要提前在服务器上安装apache phoenix?

按照HBase 整合Phoenix_hbase2.0.2集成phoenix_十二同学啊的博客-CSDN博客

方法在ambari-hadoop1节点安装完后,执行

bash 复制代码
[linux@node1 phoenix]$ bin/sqlline.py  ambari-hadoop1:2181

命令时出现Caused by: org.apache.hadoop.hbase.TableNotFoundException: SYSTEM.CATALOG的错误

解决方案:重新清理hbase,如果可以的话(建议先备份,系统快照)

1 在执行命令之前:先关闭hbase(包括HMaster和regionServer)

2 /bin/hbase clean --cleanAll

注意:hbase clean --cleanAll是清楚hbase clean --cleanALL是清除所有数据慎用

3 然后重新启动hbase

4 [root@hdp1 /mnt/software/phoenix-4.10.0-cdh5.12.0/bin]#python ./sqlline.py ambari-hadoop1:2181

成功

dbeaver配置:

注意服务器ambari-hbase上 也需要配置以下两个属性的值:

测试连接

ERROR 2007 (INT09): Outdated jars. Newer Phoenix clients can't communicate with older Phoenix servers. The following servers require an updated phoenix-[version]-server.jar to be put in the classpath of HBase: region=SYSTEM.CATALOG,,1701162392278.2179ae0a2eac521be10539173a8f47be., hostname=ambari-hadoop2,16020,1701163111938, seqNum=16

额,dbeaver和服务器端Phoenix使用的jar包不一致,更换驱动之前在ambari-hadoop1节点上安装的phoenix目录下的 client jar包,测试连接后dbeaver一直connecting main,最后超时报错KeeperErrorCode = ConnectionLoss for /hbase-unsecure

但是zk服务正常、hbase服务也正常,通过zkCli.sh也能查看/hbase-unsecure下的内容,所有虚拟机节点的防火墙也处于关闭状态,百思不得其解

解决之道

这时无意中看见在hbase组件页面有一个叫做"phoenix query servers"的服务

点进去查看发现这个服务进程是在ambari-hadoop2节点上,于是去到ambari-hadoop2节点的/usr/hdp/3.1.5.0-152路径下ll查看一下,果然发现有一个名叫"phoenix"的目录,进去该目录发现

有一个client jar包

于是马上下载到本机,并修改dbeaver apache phoenix驱动配置,将驱动替换为此jar包并成功找到类

剩余驱动配置如下

测试连接成功!成功解决

解决成功后展开表出现权限问题:

org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user '18389',action: scannerOpen, tableName:SYSTEM:CATALOG, family:0, column: TYPE_NAME

解决思路:为'18389'用户赋予在SYSTEM:CATALOG表上的读写权限

解决方法:利用ranger创建一个名为'18389'的用户,并赋予其在hbase上的权限

再次展开表后,没有权限问题但是一片空白,并且 dbeaver上创建表后仍然不可见

并且其他的namspace不可见,其余表也不可见

将之前设置的phoenix.schema.isNamespaceMappingEnabled值改为false(

phoenix.schema.isNamespaceMappingEnabled 是 Apache Phoenix 中的一个配置属性,用于启用或禁用 Phoenix 对 HBase 命名空间的支持。当该属性被启用时,Phoenix 将使用 HBase 的命名空间来组织表。在启用命名空间映射后,Phoenix 表名将包括命名空间前缀。

例如,假设 phoenix.schema.isNamespaceMappingEnabled 被设置为 true,如果你在命名空间 "Test" 中创建了表 "MyTable",则 Phoenix 中的表名将是 "Test.MyTable"。

如果禁用了命名空间映射,那么 Phoenix 将使用默认的 HBase 表。在这种情况下,Phoenix 表名就是 HBase 表名,不包括命名空间前缀。

设置默认数据库为空值

再次断开重连,可以看见default命名空间下的表和其他命名空间下的表,并且执行后可以看见新建的表

总结

当利用dbeaver 连接ambari部署的hbase时,由于已经自带了phoenix query servers服务,所以需要将phoenix query servers服务所在节点目录下的client jar驱动包,下载到本地,并编辑驱动配置指定该jar包。避免使用其他jar包以免出现驱动的问题,并且需要注意在URL后面添加ZooKeeper Znode Parent 的后缀。

相关推荐
Python代狂魔12 分钟前
Redis
数据库·redis·python·缓存
柠檬茶AL23 分钟前
36 NoSQL 注入
数据库·nosql·postman
-XWB-24 分钟前
PostgreSQL诊断系列(2/6):锁问题排查全攻略——揪出“阻塞元凶”
数据库·postgresql
XiaoMu_0011 小时前
【MongoDB与MySQL对比】
数据库
2501_924878591 小时前
强光干扰下漏检率↓78%!陌讯动态决策算法在智慧交通违停检测的实战优化
大数据·深度学习·算法·目标检测·视觉检测
做科研的周师兄2 小时前
【机器学习入门】1.2 初识机器学习:从数据到智能的认知之旅
大数据·数据库·人工智能·python·机器学习·数据分析·机器人
qq_364371723 小时前
基于 Redis + JWT 的跨系统身份共享方案
数据库·redis
技术与健康3 小时前
LLM实践系列:利用LLM重构数据科学流程04 - 智能特征工程
数据库·人工智能·重构
007php0073 小时前
Jenkins+docker 微服务实现自动化部署安装和部署过程
运维·数据库·git·docker·微服务·自动化·jenkins
北极糊的狐3 小时前
MySQL常见报错分析及解决方案总结(1)---Can‘t connect to MySQL server on ‘localhost‘(10061)
数据库·mysql