kafka contrib包之hadoop-consumer分析

近来由于项目需要,要使用到kafka作为数据的中转站,所有的数据都会进入到kafka,再流向数据使用方,有在线的Spark,有离线的spark sql;但作为离线的使用,一般数据存入于hdfs之上,为了分析的方便。我一贯的经验是建目录类似于DB的shema存放。因此这就需要有一个Hadoop-consumer完成数据从kafka到hadoop的ETL。在kafka官网上有一个极短的介绍kafka源码contrib包就是专门做这些事情的。为些花了一时间去学习。

hadoop-consumer主要使用了lower Api去创建consumer,不像high api读起来顺畅。不过幸好有hadoop基础,关linkedin也不陌生,使用过他们的azkaban,也小看过源码。里面半于hadoop conf的创建一如即往的像azkaban。这块没问题。源码分析图如下:

《kafka contrib包之hadoop-consumer分析》
《kafka contrib包之hadoop-consumer分析》

修改适合自己环境的参数/test/test.properties文件,先运行kafka.etl.impl.DataGenerator,会创建一个生产者生成测试数据。

再运行kafka.etl.impl.SimpleKafkaETLJob。提前将相关jar上传到hdfs路径下,具体位置在/test/test.properties配置。job执行完后会在相应该目录下生成如下文件:

仔细看了下,part是kafka数据,offset是kafka数据偏移信息。这只是kafka官方给出的一个小例子,远达不到生产的需求。还需进一步学习,但从官网了解到linkedin有一个专门的项目用于kafka与hadoop的衔接,

  • Camus – LinkedIn’s Kafka=>HDFS pipeline. This one is used for all data at LinkedIn, and works great.

先写到这里,会不断的再分享,未完待续(第一次写博客)…

    原文作者:qnamqj
    原文地址: https://zhuanlan.zhihu.com/p/24034608
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞