1. 安裝:
phoenix的官網最新版4.13.2是有parcle版本的,并不需要從cloudera的labs(實驗室)中下載下傳。
安裝完成後,可以運作一下phoenix的shell來簡單驗證一下:/opt/cloudera/parcels/APACHE_PHOENIX/bin
2. 在實際的應用中:
Caused by: java.lang.ClassNotFoundException: org.apache.http.config.Lookup
添加了httpcore的jar的最新版本的引用;
NoClassDefFoundError: org/apache/http/protocol/HttpContext
發現不能使用最新版本(4.4.9),需要使用4.4版本,問題解決
java.net.SocketTimeoutException: callTimeout=60000, callDuration=68229: row 'SYSTEM:CATALOG,,' on table 'hbase:meta' at region=hbase:meta,,1.1588230740, hostname=slave3,60020,1517911366463, seqNum=0
重新開機了Zookeeper和HBase問題解決
Exception in thread "main" java.sql.SQLException: ERROR 2006 (INT08): Incompatible jars detected between client and server. Ensure that phoenix.jar is put on the classpath of HBase in every region server: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator
這個問題沒有解決,網調原因是調用端的guava的版本和伺服器的版本不一緻;但是我嘗試了幾個版本的guava都沒有成功;于是切換到了高版本的phoenix,使用thin-client來進行處理。thin-client非常小,幾百K,但是如果想要用原生的jdbc用戶端,你需要引用整個phoenix包,100M;thin-client的引用可能就是這個原因吧。但是想要使用thin-client需要啟動thin-server。
3. 關于使用thin-client:
步驟如下:
第一步要啟動thin-server,可以通過lsof -i:8765來判斷是否啟動成功(不過queryserver的路徑比較深:/opt/cloudera/parcels/APACHE_PHOENIX/lib/phoenix/bin);
./queryserver.py start
注意,如果重複啟動,将會碰到Address已經被占用的異常;
第二步,設定maven引用:
第三步jdbc代碼實作通路: