Конфигурация AWS для Apache flink с использованием EMR

У меня есть приложение производителя, которое записывает в поток Kinesis со скоростью 600 записей в секунду. Я написал приложение Apache flink для чтения / обработки и агрегирования этих потоковых данных и записи агрегированного вывода в AWS Redshift.

Средний размер каждой записи - 2 КБ. Это приложение будет работать 24 * 7.

Я хотел знать, какой должна быть конфигурация моего кластера AWS EMR. Сколько узлов мне нужно? Какой должен быть тип инстанса EC2 (R3 / C3).

Помимо производительности, для нас важна и стоимость.


person AWS Enthusiastic    schedule 11.08.2017    source источник


Ответы (1)


Выбирать ли r3 / c3 зависит от количества ресурсов, которые использует ваше приложение.

Я предполагаю, что вы используете управление окнами или какой-либо оператор с отслеживанием состояния для выполнения агрегации. Оператор с отслеживанием состояния будет поддерживать состояние в StateBackend, настроенном https://ci.apache.org/projects/flink/flink-docs-release-1.3/ops/state_backends.html#state-backends

Итак, вы можете сначала проверить, умещается ли состояние в памяти (если вы собираетесь использовать FSStateBackend), опробовав свое приложение на экземплярах типа c3. Вы можете проверить использование памяти с помощью JVisualVM. Также попробуйте проверить здесь загрузку ЦП.

С экземплярами типа r3 вы получите больше памяти при том же количестве ЦП, которое предоставляет c3. Например: экземпляры c3.4xlarge предоставляют 16 виртуальных ЦП с 30 ГБ памяти на узел, тогда как r34xlarge предоставляет 16 виртуальных ЦП с памятью 122 ГБ на узел.

Итак, от вашего приложения зависит, какой тип экземпляров вы должны использовать.

Для сравнения цен вы можете обратиться к этому: http://www.ec2instances.info/

person Vinay Patil    schedule 14.08.2017
comment
Но я предполагаю, что потоковому приложению flink потребуется больше памяти, чем CPU. Верно ли я в своем предположении? - person AWS Enthusiastic; 15.08.2017
comment
Нет, это предположение неверно. Вы можете отслеживать использование ЦП и памяти с помощью таких инструментов, как JVisualVM. Например, когда я использовал экземпляр c3.4xlarge с FSStatebackend, загрузка ЦП составляла 95%, а физическая память использовалась полностью, в результате чего диспетчер задач был убит (также были частые полные сборщики мусора), поэтому я перешел на r3, чтобы получить больше памяти, и использовал RocksDBStatebackend. Точно так же вы должны сначала контролировать свой конвейер с помощью экземпляров типа c3. - person Vinay Patil; 15.08.2017
comment
Вы можете настроить показатели, как показано здесь ci .apache.org / projects / flink / flink-docs-release-1.3 / monitoring / И затем вы можете отслеживать с помощью JVisualVM, подключившись к порту JMX. - person Vinay Patil; 15.08.2017
comment
Спасибо, Винай, попробую ур предложение. Приму ответ и закрою - person AWS Enthusiastic; 15.08.2017