Как добавить JAR-файл в Apache Storm EXTLIB во время выполнения / без перезагрузки? - PullRequest
0 голосов
/ 23 января 2019

Я хочу добавить новую логику в новый файл jar в шторм Apache, когда он работает. Способ наполнить его новыми банками - скопировать их в его extlib. Проблема в том, что когда шторм работает, банки в этой библиотеке блокируются, а новые банки не загружаются. Кажется, что он читает классы jar во время загрузки и не может перечитывать их во время выполнения. Кто-нибудь может дать мне подсказку о том, как добавлять новые файлы в Storm во время выполнения?

1 Ответ

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

Обычно люди делают это, связывая зависимости с вашим топологическим jar, например, используя maven-shade-plugin.Таким образом, вы можете запускать любые юнит-тесты или интеграционные тесты с новой версией зависимостей, прежде чем запускать их в производство.Я бы предпочел сделать это, если вы обновляете код.

Если вы обновляете пакеты ресурсов или не хотите делать то, что я описал выше, я полагаю, что вы можете использовать функциональность blobstore для замены jar-файлов(еще не проверял это).Storm позволяет загружать BLOB-объекты в кластер, которые затем можно добавлять в качестве зависимостей в топологии.Если вы загружаете свои зависимости в виде больших двоичных объектов в кластер, вы можете указать Storm перезапустить своих работников при обновлении больших двоичных объектов.

Вы можете загрузить свою зависимость в хранилище больших двоичных объектов с помощью storm blobstore create --file your-plugin.jar --acl o::rwa --replication-factor 1 plugin1.

Затем вы должны отправить свою топологию, выполнив что-то вроде storm jar your-topology.jar com.yourcompany.Topology -c topology.blobstore.map='{"plugin1":{"localname":"plugin1-blob", "uncompress":false, "workerRestart":true}}'

Когда вы хотите обновить your-plugin.jar, вы делаете storm blobstore update --file your-updated-plugin.jar plugin1.Это должно заставить Storm загрузить новую версию jar с последующим перезапуском всех работников топологии.

Дополнительную документацию по хранилищу BLOB-объектов смотрите по адресу https://storm.apache.org/releases/2.0.0-SNAPSHOT/distcache-blobstore.html, и документацию по настройке topology.blobstore.map по адресуhttps://github.com/apache/storm/blob/v2.0.0/storm-client/src/jvm/org/apache/storm/Config.java#L110

...