apachekafka是否在hdfs或其他文件系统内部存储消息

toiithl6  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(414)

我们有一个在kafka层测试数据的项目要求。因此,json文件正在进入hadoop领域,kafka正在读取hadoop中的实时数据(原始json文件)。现在我必须测试从另一个系统发送的数据和Kafka读取的数据是否应该相同。
我能验证Kafka的数据吗?。Kafka是否将消息存储在hdfs内部?。如果是,则它存储在一个类似于hive内部保存的文件结构中,就像单个表的单个文件夹一样。

czfnxgou

czfnxgou1#

大多数初学者都会这样。首先让我们了解一下,您在大数据处理中看到的组件可能根本与hadoop无关。
yarn、mapreduce、hdfs是hadoop的三个主要核心组件。hive、pig、ooozie、sqoop、hbase等在hadoop之上工作。
像kafka或spark这样的框架并不依赖于hadoop,它们是独立的实体。spark支持hadoop,像yarn一样,可以用于spark的集群模式,hdfs用于存储。
Kafka作为一个独立的实体,同样可以与spark合作。它将其消息存储在本地文件系统中。

log.dirs=/tmp/kafka-logs

你可以在 $KAFKA_HOME/config/server.properties 希望这有帮助。

55ooxyrt

55ooxyrt2#

kafka将数据存储在本地文件中(即,每个正在运行的代理的本地文件系统)。对于这些文件,kafka使用自己的存储格式,该格式基于分区的只追加日志抽象。
本地存储目录,可通过参数配置 log.dir . 此配置针对每个代理单独进行,即每个代理可以使用不同的位置。默认值为 /tmp/kafka-logs .
此外,每个主题都有多个分区。如何分配分区,是kafka内部实现的一个细节。因此,你现在应该依赖它。要获取集群的当前状态,可以请求有关主题和分区等的元数据(请参阅)https://cwiki.apache.org/confluence/display/kafka/finding+topic+and+partition+leader 对于代码示例)。还请记住,分区是复制的,如果您写入,则始终需要写入分区的前导(如果您创建了 KafkaProducer 会自动找到每个分区的前导)。
有关详细信息,请浏览https://cwiki.apache.org/confluence/display/kafka/index

mitkmikd

mitkmikd3#

我想你可以,但你必须手动操作。你可以让Kafka接收任何输出到hdfs。也许我的回答有点晚了,这个“合流”的参考出现在那之后,但简单地说,我们可以做到以下几点:
假设所有服务器都在运行(请查看confluent网站)
创建连接器:

name=hdfs-sink

connector.class=io.confluent.connect.hdfs.HdfsSinkConnector

tasks.max=1

topics='your topic'

hdfs.url=hdfs://localhost:9000

flush.size=3

注意:该方法假设您使用的是他们的平台(合流平台),而我没有使用。
启动Kafkahdfs拖缆。
此外,您还可以在这个堆栈溢出讨论中找到更多有用的细节。

相关问题