为什么Kafka Streams状态目录位于/ tmp / kafka-streams中?

时间:2019-03-11 14:50:19

标签: apache-kafka apache-kafka-streams rocksdb

我不确定是否已经回答。由于我没有得到适当的解释,请在此处发布我的问题。

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

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

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

但未指定确切的存储位置。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  

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

有几个原因。

  1. 通常/tmp目录具有默认的写许可权。因此,作为初学者,您不必为写权限而苦恼。
  2. /tmp目录是短命目录。每次重新启动系统时,它都会被清除,因此,如果您忘记删除state.dir,就不会遇到磁盘空间过大的情况。不利的一面是,您会丢失上一次运行的状态,因此需要从头开始重建状态。

如果要重用存储在state.dir中的状态,则应将其存储在/tmp之外的其他位置。

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