您的位置:首页 > 运维架构

kafka-hadoop-loader项目介绍

2015-09-24 16:51 295 查看
该项目主要作用是将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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: