Canal简介:
Canal是纯Java开发的,基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql。
原理相对比较简单:
canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
mysql master收到dump请求,开始推送binary log给slave(也就是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源创计划”,欢迎正在阅读的你也加入,一起分享。