Как контролировать местоположение разделяемого объекта Rocksdb в KafkaStreams - PullRequest
0 голосов
/ 03 июля 2018

У меня есть приложение Kafka Streams. У меня не было проблем с rocksdb или Kafka Streams, пока мы не развернули код на наших серверах контроля качества. Состояние потоков приложений было установлено как ошибка, и это было сообщение об ошибке:

ERROR com.sial.notifications.kafka.streams.AuditStream - Thread: notification-messages-ecf5f120-5cfb-4a2a-91b5-b145e99c3014-StreamThread-1 Uncaught streams exception /tmp/librocksdbjni6472682265799189638.so: /tmp/librocksdbjni6472682265799189638.so: failed to map segment from shared object: Operation not permitted

При запуске приложения общий объект Rocksdb записывается в / tmp. Однако в целях безопасности сервер монтирует / tmp noexec, поэтому мы не можем запустить общий объект из / tmp. Есть ли способ контролировать, где написано так?

Я обнаружил, что могу изменить его, установив системное свойство java.io.tmpdir, но это кажется очень тяжелым и может иметь побочные эффекты с другими пакетами. Существует ли системное свойство, специфичное для потоков Rocksdb или Kafka, которое будет определять, где написано так?

1 Ответ

0 голосов
/ 11 января 2019

Я также пытаюсь настроить, где потребитель kafka хранит свои вещи, и я думаю, что вы можете установить свойство для этого:

state.dir - Directory location for state stores (default value /tmp/kafka-streams)

Поэтому я думаю, что при создании вашей KafkaStreamsConfiguration вы можете добавить в нее свойство:

StreamsConfig.STATE_DIR_CONFIG 

Это также описано здесь

Если вы хотите проверить полный список недвижимости, вы можете перейти здесь

...