apache kafka将数据存储在broker节点的哪个目录

Posted

技术标签:

【中文标题】apache kafka将数据存储在broker节点的哪个目录【英文标题】:Which directory does apache kafka store the data in broker nodes 【发布时间】:2017-03-15 03:12:02 【问题描述】:

我可以在config/server.properties 中看到一个名为log.dir 的属性?这是否意味着 kafka 使用同一个目录来存储日志和数据?

【问题讨论】:

【参考方案1】:

Kafka 主题是“分布式和分区仅追加 日志”。参数log.dir 定义主题(即数据)的存储位置。

它与应用程序/代理日志记录无关。

默认的 log.dir/tmp/kafka-logs,如果您的操作系统有 /tmp 目录清理器,您可能需要更改它。

【讨论】:

如果没有定义 log.dir,那么它将日志存储在 /tmp/kafka-logs/- 下,至少在我的 CentOS 6 机器上。 我的理解是 Kafka 数据存储在 *.log 文件中,位置在 log.dir 属性中。在这里使用log很混乱,肯定要改吗? 我知道这可能会造成混淆。随时在邮件列表中提出。任何人都可以提出更改建议(Apache 开源项目的美妙之处)。 using.log 背后的原因是它的附加功能。许多实时流应用程序使用日志来不断追加大量数据。 值得注意的是配置文件是config/server.properties,里面保存着log.dirs属性。【参考方案2】:

config/server.properties 中的log.dir 或log.dirs 指定保存日志数据的目录。 服务器日志目录默认为 kafka_base_dir/logs。您可以通过在 log4j.properties 中为“kafka.logs.dir”指定另一个目录来修改它。

【讨论】:

我们看到它是/tmp/kafka-logs in apache-kafka v0.10.1.1。对于如此重要​​的操作,一般会避免使用/tmp。使用/tmp 是否有任何理由,或者我们也可以将其存储在/var/logs 之类的地方。我在AWS ec2 上使用RHEL LVM。也发布@serverfault.com/questions/923808/…。 如果您可以,我们将非常感激您也请在这些问题上花几分钟时间***.com/questions/51557727/…,***.com/questions/51562804/… ..【参考方案3】:

server.properties 中的log.dir 是 Kafka 代理存储包含您的数据的提交日志的地方。通常,这将是用于关键任务用例的高速挂载磁盘。

对于应用程序/代理日志记录,您可以使用一般的log4j 日志记录在您的自定义位置获取事件日志记录。以下是执行此操作的变量。

-Dlog4j.configuration=file:<configuration file with log rolling, logging level etc.>  & -Dkafka.logs.dir=<path to logs>

【讨论】:

【参考方案4】:

Mathias 完美地描述了日志和数据的目录位置。然而数据是为 Kafka 引擎的内部处理而设计的,您可以使用 Kafka Connect 来存储和操作数据。 Kafka Connect 是用于 Apache Kafka 和其他系统之间的可扩展性和可靠性数据的工具。看下图:

定义将大量数据移入和移出 Kafka 内部数据系统的连接器将变得简单。 Kafka Connect 可以摄取整个数据库,使数据可用于流处理或将单个(或多个)主题的特定数据下沉到另一个系统或数据库以进行进一步分析。

【讨论】:

以上是关于apache kafka将数据存储在broker节点的哪个目录的主要内容,如果未能解决你的问题,请参考以下文章

Kafka 之Broker工作流程节点服役和退役

大数据-kafka学习——Kafka Broker

Kafka----Apache Kafka官网首页

详解Apache Pulsar的Topic绑定Broker

kafka

Kafka内核中的分布式机制实现