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)
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.)
推薦閱讀: