首页 > 解决方案 > 为什么 kafka 流状态目录位于 /tmp/kafka-streams 中?

问题描述

我不确定它是否已经回答。由于我没有得到正确的解释,所以在这里发布我的问题。

为什么kafka流state.dir存储在下/tmp/kafka-streams

我知道我可以通过在流代码中提供状态目录配置来更改路径,如下所示

StreamsConfig.STATE_DIR_CONFIG,"/var/abc-Streams"

但是更改目录会有什么影响吗?

或者

我可以在应用程序目录中而不是在/tmp.

根据融合文档,对于: Stateful操作:

automatically creates and manages such state stores when you are calling stateful operators such as count() or aggregate(), or when you are windowing a stream

但没有具体说明它的存储位置。

有什么想法吗?

标签: apache-kafkaapache-kafka-streamsrocksdb

解决方案


为什么 kafka 流 state.dir 存储在 /tmp/kafka-streams 下?

有几个原因。

  1. 通常/tmp目录有一个默认的写权限。因此,作为初学者,您不必为写权限而苦苦挣扎。
  2. /tmp目录是短暂的目录。每次系统重新启动时,它都会被清除,因此如果您忘记删除state.dir. 缺点是,您会丢失之前运行的状态,因此您需要从头开始重建状态。

如果要重用 中存储的状态state.dir,则应将其存储在除/tmp.

所有状态存储都存储在中指定的位置state.dir。如果未指定,则为/tmp/kafka-streams/<app-id>目录。


推荐阅读