joh*_*hny 2 hadoop hdfs apache-kafka kafka-python kafka-producer-api
我们有一个在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+分层+存储
此外,每个主题都有多个分区。分区如何分布,是 Kafka 的内部实现细节。因此,您现在应该依赖它。要获取集群的当前状态,您可以请求有关主题和分区等的元数据(请参阅https://cwiki.apache.org/confluence/display/KAFKA/Finding+Topic+and+Partition+Leader以获得代码例子)。还要记住,分区是复制的,如果你写,你总是需要写到分区领导者(如果你创建一个KafkaProducer会自动为你写入的每个分区找到领导者)。
如需更多信息,请浏览https://cwiki.apache.org/confluence/display/KAFKA/Index