阿里 Canal 與 Hbase 版本對應關係

Canal簡介:


Canal是純Java開發的,基於數據庫增量日誌解析,提供增量數據訂閱&消費,目前主要支持了mysql


原理相對比較簡單:

  • canal模擬mysql slave的交互協議,僞裝自己爲mysql slave,向mysql master發送dump協議

  • mysql master收到dump請求,開始推送binary logslave(也就是canal)

  • canal解析binary log對象(原始爲byte)



工作中,使用Hbase進行增量數據存儲,數據源爲MySQL,Canal監聽MySQL並推送變更數據到Hbase。


版本衝突問題:canal與hbase的protobuf版本衝突  


工作中報錯:



測試環境:canal server和client版本:v1.0.22;hbase-client版本:1.0.1.1


報錯原因:canal 1.0.22版本依賴的protobuf版本爲2.4.1,hbase依賴的protobuf版本爲2.5.0,存在衝突。canal客戶端連接canal server時,客戶端classloader加載的版本爲2.5.0,而服務端protobuf版本爲2.4.1,導致請求報錯。  


hbase依賴的protobuf版本爲2.5.0


canal版本只有在1.0.23版本之後protobuf版本爲2.6.1,在此之前均爲2.4.1,如圖:


 

故:Hbase選擇Canal版本應選擇1.0.23之後的版本。



本文分享自微信公衆號 - HBase工作筆記(HBase-Notes)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章