Kafka与Hadoop的集成主要围绕数据传输与离线处理展开,核心是将Kafka作为Hadoop的数据源,或将Hadoop处理结果写回Kafka。
hdfs.url)、目标目录(flush.size控制批量写入大小)、数据格式(如Parquet)等参数。KafkaUtils.createDirectStream或KafkaConsumer API),进行ETL、聚合等处理,最终将结果写入HDFS或其他存储。Spark与Kafka的集成支持实时流处理,主要通过Structured Streaming(推荐)或Spark Streaming实现,适用于实时ETL、聚合、机器学习等场景。
spark-sql-kafka-0-10依赖(版本需与Spark、Kafka兼容),提供Kafka连接API。spark.readStream.format("kafka")创建Kafka流,指定Kafka集群地址(kafka.bootstrap.servers)、订阅主题(subscribe)等参数。filter过滤无效数据、groupBy聚合统计)、丰富(如关联静态数据),支持Watermark处理迟到数据、Checkpoint保证Exactly-Once语义。writeStream.format("console"))。batchDuration)匹配数据流入速率,启用反压机制(backpressure)应对突发流量,合理设置并行度(repartition)。Flink与Kafka的集成是实时流处理的经典组合,Flink的Exactly-Once语义与Kafka的高吞吐量结合,适用于实时风控、实时推荐、事件溯源等场景。
flink-connector-kafka依赖(版本需与Flink、Kafka兼容),提供Kafka消费者与生产者API。FlinkKafkaConsumer类创建Kafka数据源,指定Kafka集群地址、消费者组(group.id)、主题名称,以及数据反序列化器(如SimpleStringSchema)。FlinkKafkaProducer类将处理后的数据写回Kafka,支持事务写入(保证Exactly-Once),配置transaction.timeout.ms等参数。map转换字段、filter过滤异常数据、window窗口聚合),支持状态管理(如KeyedState)和事件时间处理(eventTime)。Kafka与数据湖(如Hudi、Iceberg、Delta Lake)的集成,实现实时数据湖架构,支持流批一体处理。
Kafka与日志系统(如Elasticsearch、Logstash、Kibana,即ELK Stack)的集成,实现实时日志采集与分析。
app-logs),实现日志的集中收集。Kafka与CDC工具(如Debezium)的集成,实现数据库实时同步,将数据库的变更(INSERT、UPDATE、DELETE)实时传输到Kafka,用于数据同步、缓存更新、实时分析等场景。
connector.class(如io.debezium.connector.mysql.MySqlConnector)、数据库地址、用户名、密码等参数。db-server1.inventory.customers)。