hadoop - Apache Kafka 是否将消息内部存储在 HDFS 或其他文件系统中

标签 hadoop hdfs apache-kafka kafka-producer-api kafka-python

我们有一个项目要求在Kafka层测试数据。所以 JSON 文件正在移动到 hadoop 区域,kafka 正在读取 hadoop 中的实时数据(原始 Json 文件)。现在我要测试从其他系统发送的数据和kafka读取的数据是否应该相同。

我可以在 kafka 验证数据吗? kafka 是否将消息内部存储在 HDFS 上?如果是,那么它是否存储在类似于 hive 内部保存的文件结构中,就像单个表的单个文件夹一样。

最佳答案

Kafka 将数据存储在本地文件中(即每个正在运行的代理的本地文件系统)。对于这些文件,Kafka 使用自己的存储格式,该格式基于分区的仅附加日志抽象。

本地存储目录,可通过参数log.dir配置。此配置针对每个代理单独发生,即每个代理可以使用不同的位置。默认值为 /tmp/kafka-logs

Kafka 社区也在致力于分层存储,这将允许代理不仅使用本地磁盘,而且可以将“冷数据”卸载到第二层:https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage

此外,每个主题都有多个分区。分区如何分布,是 Kafka 内部实现的细节。因此,您现在应该依赖它。要获取集群的当前状态,您可以请求有关主题和分区等的元数据(有关代码示例,请参见 https://cwiki.apache.org/confluence/display/KAFKA/Finding+Topic+and+Partition+Leader)。还要记住,分区是复制的,如果你写,你总是需要写入分区领导者(如果你创建一个 KafkaProducer 会自动为你写入的每个分区找到领导者)。

欲了解更多信息,请浏览 https://cwiki.apache.org/confluence/display/KAFKA/Index

关于hadoop - Apache Kafka 是否将消息内部存储在 HDFS 或其他文件系统中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37268747/

相关文章:

akka - 使用 Akka 流和 http 进行连续 REST 消费

apache-kafka - kafka 启动失败(版本 0.8.0 beta1 )

mongodb - MapReduce 和 SQL GROUP BY

hadoop - Hive顶点失败,vertexName = map

java - HDFS-仅在完全复制文件后读取文件

apache-kafka - 重启后Kafka主题不再存在

apache-kafka - Kinesis如何实现Kafka风格的Consumer Groups?

java - 使用Hadoop库序列化Java对象

hadoop - Hive 支持 Nonequi 加入吗?

hadoop - Jenkins 复制到 hdfs