Почему каталог состояния потоков kafka находится в / tmp / kafka-streams?

#apache-kafka #apache-kafka-streams #rocksdb

#apache-kafka #apache-kafka-streams #rocksdb

Вопрос:

Я не уверен, что на это уже дан ответ. Поскольку я не получил надлежащего объяснения, разместив свой вопрос здесь.

Почему kafka streams state.dir хранится под /tmp/kafka-streams ?

Я знаю, что могу изменить путь, указав конфигурацию каталога состояния в коде потока, как показано ниже

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

Но будет ли какое-либо влияние изменения каталога?

или

Могу ли я настроить базу данных состояния в каталоге приложения, а не в /tmp .

Согласно документации confluent, для: 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. @cricket_007: Есть мысли о последствиях изменения каталога хранилища состояния? В моем случае, только сегодня я изменил его, и, как ни странно, все сообщения отправились вниз по потоку! Например. Данные из раздела A -> aggregate (..) -> в раздел B, все события были снова созданы для раздела B, но не повторно использованы из A.

Ответ №1:

Почему kafka streams state.dir хранится в /tmp / kafka-streams?

Есть несколько причин.

  1. Обычно /tmp каталог имеет разрешение на запись по умолчанию. Таким образом, вам не придется бороться с правами на запись как новичку.
  2. /tmp каталог недолговечен. При каждой перезагрузке системы он очищается, следовательно, вы не сталкиваетесь с переполнением дискового пространства на случай, если вы забыли удалить state.dir . Недостатком является то, что вы теряете состояния из предыдущего запуска, следовательно, вам нужно перестроить состояния с нуля.

Если вы хотите повторно использовать состояния, сохраненные в state.dir , вы должны хранить его где-нибудь, кроме /tmp .

Все хранилища состояний хранятся в расположении, указанном в state.dir . Если не указано, это /tmp/kafka-streams/<app-id> каталог.