Spark - Какой тип экземпляра является предпочтительным для кластера AWS EMR?

Я запускаю некоторые алгоритмы машинного обучения в EMR Spark cluster. Мне любопытно, какой экземпляр использовать, чтобы я мог получить оптимальное соотношение цены и качества?

Для такого же уровня цен я могу выбрать среди:

          vCPU  ECU  Memory(GiB)
m3.xlarge  4     13     15     
c4.xlarge  4     16      7.5
r3.xlarge  4     13     30.5

Какой экземпляр следует использовать в кластере EMR Spark?

Ответ 1

Вообще говоря, это зависит от вашего варианта использования, потребностей и т.д. Но я могу предложить минимальную конфигурацию, учитывая информацию, которую вы поделили.

Кажется, вы пытаетесь обучить факторизацию ALS или SVD на матрицах от 2 до 4 ГБ данных. Так что на самом деле это не слишком много данных.

Для настройки и настройки небольшого распределенного кластера вам понадобится как минимум 1 мастер и 2 узла. Мастер не будет делать каких-либо вычислений, поэтому ему не понадобятся большие ресурсы, но, конечно, я буду заниматься планированием задач и т.д.

Вы можете добавить ведомые (экземпляры) в соответствии с вашими потребностями.

1 x master  : m3.xlarge  - vCPU : 4 , RAM : 15 GB and 2 x 40 GB SSDs
2 x slaves  : c3.4xlarge - vCPU : 16, RAM : 30 GB and 2 x 160GB SSDs.

C3 и C4 - это оптимизированные с помощью вычислений экземпляры с высокопроизводительными процессорами и с самой низкой ценой/вычислительной производительностью в EC2 по сравнению с R3, хотя рекомендуется использовать случаи использования распределенных кэшей памяти и аналитики в памяти. Но C4 сделает работу за вас по более низкой цене.

Оптимизация производительности:

  • Amazon EMR заряжается с почасовой скоростью. Это означает, что после запуска кластера вы платите весь час. Это важно помнить, потому что, если вы платите за полный час кластера Amazon EMR, улучшение времени обработки данных в считанные минуты может не стоить вашего времени и усилий.

  • Не забывайте, что добавление большего количества узлов для повышения производительности дешевле, чем тратить время на оптимизацию вашего кластера.

Ссылка: Amazon EMR Best Practices - Parviz Deyhim.

EDIT: вы также можете рассмотреть возможность включения Ganglia для мониторинга ресурсов вашего кластера: CPU, RAM, Network I/O. Это поможет вам также настроить ваш EMR-кластер. Практически, у вас нет какой-либо конфигурации. Просто следуйте документации, чтобы добавить ее в кластер EMR при создании.

Ответ 2

Вообще говоря, предпочтительный экземпляр зависит от выполняемой вами работы (интенсивно ли он интенсивный, интенсивность процессора и т.д.). Однако Spark очень интенсивно работает с памятью, и я бы не использовал машины с меньшим чем 30 ГБ для большинства заданий.

В вашем конкретном случае (набор данных 4Gb) я не уверен, почему вы хотите использовать распределенные вычисления, чтобы начать with-, это просто заставит вашу работу работать медленно. Если вы уверены, что хотите запустить его в локальном режиме с помощью потоков X (в зависимости от того, сколько ядер у вас есть)