職位畫像中phoenix連結HBase異常之版本不匹配
Phoenix簡介
Phoenix是一個基於HBase的開源SQL引擎,可以使用標準的JDBC API代替HBase客戶端API來建立表,插入資料,查詢你的HBase資料,它是完全使用Java編寫,作為HBase內嵌的JDBC驅動使用。
Phoenix查詢引擎會將SQL查詢轉換為一個或多個HBase掃描,並編排執行以生成標準的JDBC結果集。
直接使用HBase API、協同處理器與自定義過濾器,對於簡單查詢來說,其效能量級是毫秒,對於百萬級別的行數來說,其效能量級是秒。
Phoenix效能如此優秀有下面幾方面因素:
- 編譯你的SQL查詢轉為原生HBase的scan語句
- 檢測scan語句最佳的開始和結束的key
- 精心編排你的scan語句讓他們並行執行
- 推送你的WHERE子句的謂詞到服務端過濾器處理
- 執行聚合查詢透過服務端鉤子(稱為協同處理器)
- 實現了二級索引來提升非主鍵欄位查詢的效能
- 統計相關資料來提高並行化水平,並幫助選擇最佳最佳化方案
- 跳過掃描過濾器來最佳化IN,LIKE,OR查詢
- 最佳化主鍵來均勻分佈寫壓力
接下來就分享下我遇到的問題的表象,以及問題產生的原因,以及解決辦法:
按照教程的引導:
- 下載安裝包,並解壓
- 複製hbase-site.xml、core-site.xml、hdfs-site.xml
- 啟動HBase叢集
- 開啟連結,報了一堆錯誤,然後看似是開啟了互動模式,然後嘗試查表命令,顯然還是不能用的
[root@linux123 bin]# ./sqlline.py linux123:2181
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:linux123:2181 none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:linux123:2181
21/08/19 21:17:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
21/08/19 21:17:35 WARN ipc.CoprocessorRpcChannel: Call failed on IOException
org.apache.hadoop.hbase.DoNotRetryIOException: org.apache.hadoop.hbase.DoNotRetryIOException: SYSTEM.CATALOG: org.apache.hadoop.hbase.client.Scan.setRaw(Z)V
at org.apache.phoenix.util.ServerUtil.createIOException(ServerUtil.java:120)
… 13 more
Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Scan.setRaw(Z)V
at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.buildDeletedTable(MetaDataEndpointImpl.java:1230)
… 13 more
Error: ERROR 2006 (INT08): Incompatible jars detected between client and server. Ensure that phoenix-[version]-server.jar is put on the classpath of HBase in every region server: org.apache.hadoop.hbase.DoNotRetryIOException: SYSTEM.CATALOG: org.apache.hadoop.hbase.client.Scan.setRaw(Z)V
at org.apache.phoenix.util.ServerUtil.createIOException(ServerUtil.java:120)
… 13 more
sqlline version 1.2.0
0: jdbc:phoenix:linux123:2181>
搜尋開頭的警告關鍵字,確實找到了大量的同學分享相關的經驗貼,主要分兩類:Unable to load native-hadoop library
DoNotRetryIOException: SYSTEM.CATALOG
經過反覆檢查和嘗試,都沒有解決我的問題原來後面大段的紅色報錯,才是問題的關鍵
** Incompatible jars** detected between client and server. Ensure that ** phoenix-[version]-server.jar** is put on the classpath of HBase in ** every** region server
以我淺薄的單詞儲備:問題的原因應該是jar包版本跟HBase不匹配,猛然想到,自己的叢集環境很可能跟教程上的版本號不一致
經檢查,確實發現問題的關鍵:
教程中是用CDH搭建的叢集,軟體包自然選用phoenix--cdh.jar
而我自己的環境,無論是HDFS,或是ZK以及HBase都是逐個擴充套件上來的,而版本號,並沒有什麼偏好
hadoop-2.9.2
hbase-1.3.1
zookeeper-3.4.14[Phoenix官網]列出的軟體包如下:
顯然apache-phoenix-4.14.3-HBase-1.3的版本更適合我的環境,果斷替換重搞
再次替換jar包、重試連結,果然連線成功,妥了[root@linux123 bin]#** ./sqlline.py linux123:2181**
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:linux123:2181 none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:linux123:2181
21/08/20 18:15:05 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
Connected to: Phoenix (version 4.14)
Driver: PhoenixEmbeddedDriver (version 4.14)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
Building list of tables and columns for tab-completion (set fastconnect to true to skip)…
133/133 (100%) Done
Done
sqlline version 1.2.0
The End
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4650/viewspace-2797268/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- hbase與phoenix整合(使用phoenix操作hbase資料)
- HBase學習的第五天--HBase進階結尾和phoenix開頭
- DBeaver連線Phoenix
- 簡歷,需要和求職崗位匹配求職
- 用 Arthas 神器來診斷 HBase 異常程式
- mysql連結很多,批量刪除異常程式processlistMySql
- hibernate異常之--count查詢異常
- druid連線池常見異常UI
- MapReduce之----往hbase資料庫寫入資料時, 出現資料異常資料庫
- DataIntegrityViolationException異常:java利用mymatis連線資料庫異常AIExceptionJava資料庫
- HBase學習之Hbase的邏輯結構和物理結構
- 資料結構之連結串列篇(單連結串列的常見操作)資料結構
- 畫江湖之資料結構【第一話:連結串列】單向連結串列資料結構
- 畫江湖之資料結構【第一話:連結串列】雙向連結串列資料結構
- 畫江湖之資料結構 [第一話:連結串列] 單向連結串列資料結構
- 畫江湖之資料結構 [第一話:連結串列] 雙向連結串列資料結構
- PostgreSQL 連線 超時異常SQL
- milvus 異常——無法連線
- Java之常見異常 整理集合Java
- SpringBoot專案使用yml檔案連結資料庫異常Spring Boot資料庫
- hbase之hbase shell
- NodeJS之異常處理NodeJS
- Java之自定義異常Java
- MySQLNonTransientConnectionException資料庫連線異常MySqlException資料庫
- PHP 的異常處理之try和catch用法小結PHP
- 異常和中斷
- java中的異常Java
- Java 中的異常Java
- 匹配磁力連結的正規表示式
- 異常連線之未授權連線,行為風險分析的有效實踐
- Hbase單機部署 java連線HbaseJava
- OOM異常型別總結OOM型別
- Python基礎之:Python中的異常和錯誤Python
- django admin中增加自定義超連結欄位Django
- TCP連線狀態異常記錄TCP
- JavaSE基礎系列之異常Java
- Flutter之異常和錯誤Flutter
- python異常處理之returnPython