我不确定是否已经回答。由于我没有得到适当的解释,请在此处发布我的问题。
为什么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
但未指定确切的存储位置。
有什么想法吗?
答案 0 :(得分:1)
为什么kafka流state.dir存储在/ tmp / kafka-streams下?
有几个原因。
/tmp
目录具有默认的写许可权。因此,作为初学者,您不必为写权限而苦恼。/tmp
目录是短命目录。每次重新启动系统时,它都会被清除,因此,如果您忘记删除state.dir
,就不会遇到磁盘空间过大的情况。不利的一面是,您会丢失上一次运行的状态,因此需要从头开始重建状态。 如果要重用存储在state.dir
中的状态,则应将其存储在/tmp
之外的其他位置。
所有状态存储区都存储在state.dir
中指定的位置。如果未指定,则为/tmp/kafka-streams/<app-id>
目录。