kafka-connect-hbase 架构分析

       由于项目需将kafka的数据存储至hbase中,有幸了解了confluent 的kafka-connect-hbase 组件,官方提供了基础版本(https://github.com/mravi/kafka-connect-hbase),,而我采用了改进版nishutayalhttps://github.com/nishutayal/kafka-connect-hbase),并对改进版进行了更改,增加了topic和hbase表之间的映射关系配置以及从kafka解析中项的配置,其中对比如下:

 

版本对比
confluent 基础版本不支持对多个列族的写入
nishutayal 增强版本zhi支持对多个列族的写入,topic和hbase表为一一对应的关系,较为固定,不支持多个topic往同一个hbase写入
改进版本

增加支持多个topic往同一个hbase表的写入

增加kafka数据解析项的配置,可根据配置解析指定item

 

     由于kafka-connect-hbase依托于confluent框架,梳理kafka-connect-hbase 类图如下:

     其中:

  1.  HbaseSinkConnector为 connector中的配置类
  2.  task启动调用HBaseSinkTask中的start 方法,初始化HbaseClient 、toPutFunction 。
  3. 根据kafka consumer配置 (consumer.max.poll.records、consumer.max.poll.interval.ms),定时定量的调用HBaseSinkTask的put方法,在此方法中调用toPutFunction中的appliy方法,利用EventParser进行数据的解析,生成byte[],最后调用HBaseClient中的write方法写入至HBase中。

kafka-connect-hbase 组件其实并不复杂,只要按照confluent的框架要求编写相关实现类即可。

新增配置如下:

topics.assign.db.tables
topic与hbase表之间的映射关系,如device_profile_test|device_profile,即将topic中的device_profile_test数据写入至hbase表device_profile中
event.parse.item
kafka 消息中value中的解析项,如event.parse.item=payload,则只解析kafka中的payload项
hbase.tableName.rowkey.columns
hbase.tableName.rowkey.delimiter
hbase.tableName.family
hbase.tableName.xxfamliy.columns

 

以前根据topic配置,现在全部改为hbase的tableName进行配置,更好的便于理解和支持多个topic写入同一个hbase表中。

参考:

  1. confluent kafka-connect-hbase基础版本
  2. https://github.com/nishutayal/kafka-connect-hbase

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值