我们有一个项目要求在 Kafka 层测试数据。因此 JSON 文件正在移动到 hadoop 区域,而 kafka 正在读取 hadoop(原始 Json 文件)中的实时数据。现在我要测试从其他系统发送的数据和kafka读取的数据是否应该相同。
我可以在 kafka 验证数据吗?kafka 是否将消息内部存储在 HDFS 上?如果是,那么它是否存储在类似于 hive 内部保存的文件结构中,就像单个表的单个文件夹一样。
我们有一个项目要求在 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
is 将自动找到你写入的每个分区的领导者)。
欲了解更多信息,请浏览https://cwiki.apache.org/confluence/display/KAFKA/Index
我认为你可以,但你必须手动完成。您可以让 kafka 将任何输出下沉到 HDFS。也许我的回答有点晚了,之后出现了这个“融合”的参考,但简单地说,可以做以下事情:
创建您的连接器:
name=hdfs-sink
connector.class=io.confluent.connect.hdfs.HdfsSinkConnector
tasks.max=1
topics='your topic'
hdfs.url=hdfs://localhost:9000
flush.size=3
注意:该方法假设您使用的是我没有使用过的他们的平台( confluent platform )。
此外,您可能会在此Stack Overflow 讨论中找到更多有用的详细信息。
大多数初学者都会发生这种情况。让我们首先了解您在大数据处理中看到的组件可能与 Hadoop 完全无关。
Yarn、MapReduce、HDFS 是 Hadoop 的 3 个主要核心组件。Hive、Pig、OOOZIE、SQOOP、HBase 等在 Hadoop 之上工作。
像 Kafka 或 Spark 这样的框架不依赖于 Hadoop,它们是独立的实体。Spark支持Hadoop,和Yarn一样,可以用于Spark的Cluster模式,HDFS用于存储。
同样,Kafka 作为一个独立的实体,也可以与 Spark 一起使用。它将其消息存储在本地文件系统中。
log.dirs=/tmp/kafka-logs
你可以检查这个$KAFKA_HOME/config/server.properties
希望这可以帮助。