项目需要,数据文件实时传入kafka,再流入HDFS进行存储,离线计算等,思考几个问题:
1)为什么要将Kafka的数据传输到HDFS上?
2)为什么不直接写HDFS而要通过Kafka?
HDFS一直以来是为离线数据的存储和计算设计的,因此对实时事件数据的写入并不友好,而Kafka生来就是为实时数据设计的,但是数据在Kafka上无法使用离线计算框架来作批量离线分析。
那么,Kafka为什么就不能支持批量离线分析呢?想象我们将Kafka的数据按天拆分topic,并建足够多的分区,然后通过Spark-Streaming,Flink,又或者是KSql等来处理单个topic中的所有数据--这就相当于处理某一天的所有数据。这种计算的性能从原理上来说是不比Spark或者Hive离线计算差的。
而且更好的是,这样我们就不用将kafka中的数据翻来覆去的导到hdfs,而是直接在kafka上作计算。
https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem
有以下几种方式:
一、kafka-connect方式