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/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节点的哪个目录的主要内容,如果未能解决你的问题,请参考以下文章