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节点安装完后,执行 

[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 的后缀。

猜你喜欢

转载自blog.csdn.net/qq_44540985/article/details/134660435