#jvm #apache-storm
#jvm #apache-storm
Вопрос:
Из документов storm:
supervisor.slots.ports: «Для каждой рабочей машины вы настраиваете, сколько рабочих выполняется на этой машине с помощью этой конфигурации. Каждый рабочий использует один порт для приема сообщений, и этот параметр определяет, какие порты открыты для использования. Если вы определите здесь пять портов, то Storm выделит до пяти рабочих для запуска на этой машине. »
И из концепций storm:
Рабочие: топологии выполняются в одном или нескольких рабочих процессах. Каждый рабочий процесс является физической JVM и выполняет подмножество всех задач для топологии.
Мой storm.yaml
определяет:
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
А затем я запускаю топологию с topology.workers
установленным значением 3 (для kafka-spout-parallelism установлено значение 1, а для solr-bolt-parallelism установлено значение 2, других болтов нет).
Storm-ui также показывает, что моя топология работает нормально с 1 носиком и 2 болтами.
Но когда я захожу на компьютеры storm и запускаю ps -aef | grep storm
или jps -l
, я нигде не вижу процессов JVM для рабочих. Я вижу только следующие процессы:
Машина 1:
jps -l
30675 backtype.storm.daemon.supervisor
30583 backtype.storm.daemon.logviewer
Машина 2:
jps -l
6818 backtype.storm.ui.core
6995 backtype.storm.daemon.supervisor
6739 backtype.storm.daemon.nimbus
6904 backtype.storm.daemon.logviewer
Разве storm не создает одну физическую JVM на работника? И разве это не переводит в одну JVM на порт, упомянутый в supervisor.slots.ports
?
Ответ №1:
Один рабочий слот равен одному слоту JVM. Слоты используются только при развертывании топологии.
Возможно, вы проверили процессы до фактического запуска рабочих. Проверьте пользовательский интерфейс Storm, чтобы убедиться, что топология запущена, работает и обрабатывает данные. Если это не так, используйте средство просмотра журналов для поиска ошибок. Возможно, рабочие сбой из-за неперехваченных исключений.