阿里 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源创计划”,欢迎正在阅读的你也加入,一起分享。

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