развертывание Hazelcast-Jet и прием данных - PullRequest
2 голосов
/ 25 сентября 2019

У меня есть распределенная система, работающая на экземплярах AWS EC2.В моем кластере около 2000 узлов.Я хочу представить потоковую модель обработки, которая может обрабатывать метаданные, периодически публикуемые каждым узлом (использование процессора, использование памяти, ввод-вывод и т. Д.).Моя система заботится только о последних данных.Это также нормально с отсутствием пары точек данных, когда модель обработки не работает.Таким образом, я выбрал hazelcast-jet - модель обработки в памяти с отличной производительностью.Здесь у меня есть пара вопросов относительно модели:

  1. Каков наилучший способ развертывания hazelcast-jet на нескольких экземплярах ec2?
  2. Как получать данные из тысяч источников?Источники отправляют данные, а не извлекают.
  3. Как настроить клиент так, чтобы он знал, куда отправлять задачи?

Было бы очень полезно, если бы был исчерпывающий пример, гдеЯ могу учиться у.

1 Ответ

1 голос
/ 25 сентября 2019

Каков наилучший способ развертывания hazelcast-jet на нескольких экземплярах ec2?

  1. Загрузите и разархивируйте дистрибутив Hazelcast Jet на каждом компьютере:

    $ wget https://download.hazelcast.com/jet/hazelcast-jet-3.1.zip
    $ unzip hazelcast-jet-3.1.zip
    $ cd hazelcast-jet-3.1
    
  2. Перейдите в каталог lib разархивированного дистрибутива и загрузите модуль hazelcast-aws:

    $ cd lib
    $ wget https://repo1.maven.org/maven2/com/hazelcast/hazelcast-aws/2.4/hazelcast-aws-2.4.jar
    
  3. Редактировать bin/common.shдобавить модуль в путь к классам.В конце файла находится строка

    CLASSPATH="$JET_HOME/lib/hazelcast-jet-3.1.jar:$CLASSPATH"
    

    . Вы можете продублировать эту строку и заменить -jet-3.1 на -aws-2.4.

  4. Редактировать config/hazelcast.xml ввключить обнаружение кластера AWS.Подробности здесь .На этом этапе вам придется иметь дело с ролями IAM, группами безопасности EC2, регионами и т. Д. Также имеется руководство по оптимальным методам для развертывания AWS.

  5. Startкластер с jet-start.sh.

Как настроить клиент так, чтобы он знал, куда отправлять задачи?

Простой подход заключается вукажите общедоступные IP-адреса компьютеров, на которых работает Jet, например:

ClientConfig clientConfig = new ClientConfig();
clientConfig.getGroupConfig().setName("jet");
clientConfig.addAddress("54.224.63.209", "34.239.139.244");

Однако, в зависимости от настроек AWS, они могут быть нестабильными, поэтому вы также можете настроить их обнаружение.Это объясняется здесь .

Как получать данные из тысяч источников?Источники загружают данные, а не извлекают.

Я думаю, что для этого лучше всего поместить данные в карту Hazelcast и использовать источник mapJournal для получениясобытия обновления от него.

...