標籤:

kafka topic數據如何寫入hdfs?

kafka集群的topic是可以動態添加的,添加之後就會有數據寫到topic,那麼我想問下:我怎麼把topic裡面的數據寫入到hdfs裡面,還有是什麼時候寫呢,怎麼停止topic的這個消費?


@聶偉琳@王辰光 最新發布的Kafka 9.0 版本裡面加了一個Kafka Connect,就是用於把數據從Kafka導入/導出;它本身只是一個架構,提供了Fault Tolerance和Distributed Deployment等功能。用戶可以針對自己需要的第三方系統寫自己的Connector(Kafka Connect提供現成的介面可以比較輕易完成),目前這個架構裡面已經有人提供了HDFS的Connector:

Kafka Connector Hub (Apache Wiki)
Kafka Connector Hub (Confluent Web)

當然Gobblin也是不錯的選擇,我之前在還在LI的時候就看過他們的開發,主要是用於多個數據源(可以是Kafka,也可以是別的)向HDFS的 ETL。


Hadoop Integration

  • Camus - LinkedIn"s Kafka=&>HDFS pipeline. This one is used for all data at LinkedIn, and works great. (replaced by Gobblin)
  • Kafka Hadoop Loader A different take on Hadoop loading functionality from what is included in the main distribution.
  • Flume - Contains Kafka Source (consumer) and Sink (producer)
  • KaBoom - A high-performance HDFS data loader

其他幾位朋友推薦的是比較重型的方案。輕量級的實現的話,我自己嘗試做過一個:將 Kafka 每個 Topic 的 Partition 抽象為 Hadoop MapReduce 中的一個 split(實現過程涉及到自己定義 InputFormat、RecordReader),然後再基於它們寫輸出到 HDFS 的 MapReduce 程序,部署到線上定期運行就行了。

Github 上有一個類似的實現:GitHub - Conductor/kangaroo: Hadoop utilities for Kafka, S3, and more 。


補充一個 你可以使用spark-streaming 消費kafka的數據 寫入hdfs


補充一個 :
Camus is being phased out and replaced by Gobblin.

現在gobblin正在緊鑼密鼓開發ing ~

[gobblin](GitHub - linkedin/gobblin: Universal data ingestion framework for Hadoop.)


推薦閱讀:

TAG:HDFS | Kafka |