廈門高端網(wǎng)站建設(shè)公司頁面設(shè)計(jì)
目錄
嘗試過程
解決之道
總結(jié)
嘗試過程
注意此章節(jié)為記錄試錯(cuò)過程,無需跟隨操作,僅作試錯(cuò)記錄。真正操作方法請看“解決之道”章節(jié)
環(huán)境ambari安裝的hbase2.1.6
使用apche phoenix默認(rèn)驅(qū)動(dòng)配置
備注:Apache Phoenix 是一個(gè)開源的、基于 SQL 的查詢引擎,它使得可以在 Apache HBase(分布式 NoSQL 數(shù)據(jù)庫)上使用標(biāo)準(zhǔn)的 SQL 查詢語言。Phoenix 提供了對 HBase 的 SQL 接口,使得用戶可以使用熟悉的 SQL 語法來查詢和操作 HBase 中的數(shù)據(jù)。
在hbase配置文件中找到ZooKeeper Znode Parent參數(shù)的值
并在編輯驅(qū)動(dòng)中添加:
添加驅(qū)動(dòng)屬性
測試連接
出現(xiàn):
Insufficient permissions to create SYSTEM namespace and SYSTEM Tables?
權(quán)限不足,無法創(chuàng)建 SYSTEM 命名空間和 SYSTEM空間下的 表
手動(dòng)登錄hbase創(chuàng)建SYSTEM,并授予hbase用戶權(quán)限
?測試連接
ERROR 1012 (42M03): Table undefined. tableName=SYSTEM.CATALOG
又出現(xiàn)沒有SYSTEM.CATALOG表,此時(shí)懷疑是否需要提前在服務(wù)器上安裝apache phoenix?
按照HBase 整合Phoenix_hbase2.0.2集成phoenix_十二同學(xué)啊的博客-CSDN博客
方法在ambari-hadoop1節(jié)點(diǎn)安裝完后,執(zhí)行?
[linux@node1 phoenix]$ bin/sqlline.py ?ambari-hadoop1:2181
命令時(shí)出現(xiàn)Caused by: org.apache.hadoop.hbase.TableNotFoundException: SYSTEM.CATALOG的錯(cuò)誤
解決方案:重新清理hbase,如果可以的話(建議先備份,系統(tǒng)快照)
1 ?在執(zhí)行命令之前:先關(guān)閉hbase(包括HMaster和regionServer)
2 ?/bin/hbase clean --cleanAll
注意:hbase clean --cleanAll是清楚hbase clean --cleanALL是清除所有數(shù)據(jù)慎用
3 然后重新啟動(dòng)hbase
4?[root@hdp1 /mnt/software/phoenix-4.10.0-cdh5.12.0/bin]#python ./sqlline.py ambari-hadoop1:2181
成功
dbeaver配置:
注意服務(wù)器ambari-hbase上 也需要配置以下兩個(gè)屬性的值:
測試連接?
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和服務(wù)器端Phoenix使用的jar包不一致,更換驅(qū)動(dòng)之前在ambari-hadoop1節(jié)點(diǎn)上安裝的phoenix目錄下的 client jar包,測試連接后dbeaver一直connecting main,最后超時(shí)報(bào)錯(cuò)KeeperErrorCode = ConnectionLoss for /hbase-unsecure
?但是zk服務(wù)正常、hbase服務(wù)也正常,通過zkCli.sh也能查看/hbase-unsecure下的內(nèi)容,所有虛擬機(jī)節(jié)點(diǎn)的防火墻也處于關(guān)閉狀態(tài),百思不得其解
解決之道
? ? ? ? 這時(shí)無意中看見在hbase組件頁面有一個(gè)叫做“phoenix query servers”的服務(wù)
點(diǎn)進(jìn)去查看發(fā)現(xiàn)這個(gè)服務(wù)進(jìn)程是在ambari-hadoop2節(jié)點(diǎn)上,于是去到ambari-hadoop2節(jié)點(diǎn)的/usr/hdp/3.1.5.0-152路徑下ll查看一下,果然發(fā)現(xiàn)有一個(gè)名叫“phoenix”的目錄,進(jìn)去該目錄發(fā)現(xiàn)?
有一個(gè)client jar包
于是馬上下載到本機(jī),并修改dbeaver apache phoenix驅(qū)動(dòng)配置,將驅(qū)動(dòng)替換為此jar包并成功找到類
?剩余驅(qū)動(dòng)配置如下
測試連接成功!成功解決
?
解決成功后展開表出現(xiàn)權(quán)限問題:
org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user ‘18389',action: scannerOpen, tableName:SYSTEM:CATALOG, family:0, column: TYPE_NAME
解決思路:為‘18389’用戶賦予在SYSTEM:CATALOG表上的讀寫權(quán)限?
解決方法:利用ranger創(chuàng)建一個(gè)名為‘18389’的用戶,并賦予其在hbase上的權(quán)限
再次展開表后,沒有權(quán)限問題但是一片空白,并且?dbeaver上創(chuàng)建表后仍然不可見
并且其他的namspace不可見,其余表也不可見
?將之前設(shè)置的phoenix.schema.isNamespaceMappingEnabled值改為false(
phoenix.schema.isNamespaceMappingEnabled
是 Apache Phoenix 中的一個(gè)配置屬性,用于啟用或禁用 Phoenix 對 HBase 命名空間的支持。當(dāng)該屬性被啟用時(shí),Phoenix 將使用 HBase 的命名空間來組織表。在啟用命名空間映射后,Phoenix 表名將包括命名空間前綴。
例如,假設(shè) phoenix.schema.isNamespaceMappingEnabled
被設(shè)置為 true,如果你在命名空間 "Test" 中創(chuàng)建了表 "MyTable",則 Phoenix 中的表名將是 "Test.MyTable"。
如果禁用了命名空間映射,那么 Phoenix 將使用默認(rèn)的 HBase 表。在這種情況下,Phoenix 表名就是 HBase 表名,不包括命名空間前綴。
)
設(shè)置默認(rèn)數(shù)據(jù)庫為空值?
再次斷開重連,可以看見default命名空間下的表和其他命名空間下的表,并且執(zhí)行后可以看見新建的表
總結(jié)
????????當(dāng)利用dbeaver 連接ambari部署的hbase時(shí),由于已經(jīng)自帶了phoenix query servers服務(wù),所以需要將phoenix query servers服務(wù)所在節(jié)點(diǎn)目錄下的client jar驅(qū)動(dòng)包,下載到本地,并編輯驅(qū)動(dòng)配置指定該jar包。避免使用其他jar包以免出現(xiàn)驅(qū)動(dòng)的問題,并且需要注意在URL后面添加ZooKeeper Znode Parent 的后綴。