kafka-hadoop-loader项目介绍

         该项目主要作用是将kafka的数据通过MR作业上传到hdfs中,原项目地址https://github.com/michal-harish/kafka-hadoop-loader。由于该项目目前是无人维护状态,最后一次是13年9月,不适用于当前的kafka版本0.8.2.

      在该项目的基础上,我进行了一些修改,项目地址:https://github.com/guanghualiu/kafka-hadoop-loader-my。

      项目的大体思路:

      kafka的simple consumer可以让消费者自己控制消费数据,以及自己维护每个partition的offset。

      对于一个kafka的topic,可以拥有多个分区。利用hadoop的MR原理,重写InputFormat,将每一个分区虚拟化为一个inputsplit,每一个kafkainputspit记录topic,broker,partition,以及要当前partition在执行该程序时最新的offset值。每个split将会创建一个map任务,即map数等于partition数。

      kafkaInputRecordReader中,首先从zookeeper中取到当前partition的上次已经消费的记录的offset(初始为零),

kafkainputspit中的offset为结束值,然后在nextKeyValue中消费数据,reader中每消费一个message,更新watermark指针知道该split的数据全部消费完成。在close方法中,将该次的消费结果写入到zookeeper中,这样记录已经消费的offset,便于下次取出从该条开始消费。

     之后就通过hadoop的MR框架将数据写入到hdfs,也可以自己重定义方法达到另外一些的目的。

     这个程序的用法应该是每隔一段时间跑一次,就可以将kafka新增的数据入库hdfs。


    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值