Оцінювач вартості Amazon EMR Serverless

Оцінювач вартості Amazon EMR Serverless

Вихідний вузол: 1776349

Amazon EMR без сервера є варіантом без сервера Amazon EMR це спрощує для аналітиків даних та інженерів запускати додатки за допомогою фреймворків аналітики великих даних з відкритим кодом, таких як Apache Spark і Hive, без налаштування, керування та масштабування кластерів або серверів. Ви отримуєте всі функції найновіших фреймворків із відкритим вихідним кодом із оптимізованим для продуктивності часом виконання Amazon EMR без необхідності планувати та керувати інстансами та кластерами.

За допомогою Amazon EMR ви можете запускати свої аналітичні програми на виділених кластерах EMR на наявних Послуга Amazon Elastic Kubernetes (Amazon EKS) або використовувати новий варіант розгортання EMR Serverless, де вам не потрібно керувати кластерами чи екземплярами. Коли ви створюєте програму Spark або Hive за допомогою випуску Amazon EMR, скажімо Amazon EMR 6.8, ви можете запускати програму на кластерах EMR, на кластерах EKS за допомогою Amazon EMR на EKS, або за допомогою EMR Serverless без зміни програми.

Щоб дізнатися про переваги кожного варіанта розгортання в EMR без сервера, звертатися до Які деякі відмінності функцій між EMR Serverless і Amazon EMR на EC2? у поширених питаннях Amazon EMR. Ви також можете дізнатися про ціни на ці опції в Сторінка цін Amazon EMR. Багато клієнтів уже запускають програми аналізу даних на кластерах EMR і вважають, що новий безсерверний варіант простіший і дешевший.

У цій публікації ми обговорюємо, як ви можете оцінити, скільки може коштувати запуск програми, яка зараз працює на кластерах EMR, використовуючи нову безсерверну опцію, і виконати цей аналіз, просто використовуючи поточні показники програми. Цей підхід допоможе вам оцінити та прийняти варіант розгортання, який є найбільш економічно ефективним для програми. Однак на сторінці цін на Amazon EMR не вказано, як можна легко оцінити вартість запуску існуючих програм кластера EMR на EMR Serverless. У наступних розділах ми описуємо підхід, який дозволяє це зробити.

Хоча приклад у цій публікації обговорює, як можна отримати оцінку вартості програм, що працюють на кластерах EMR, ви також можете використовувати цей підхід, якщо ви використовуєте програму Spark або Hive деінде та хочете оцінити вартість її запуску на EMR Безсерверний. Наприклад, якщо ви запускаєте самокеровані програми Spark або Hive на Обчислювальна хмара Amazon Elastic (Amazon EC2) кластери або якщо ви запускаєте завдання Spark Клей AWS, ми покажемо вам, як ви можете використовувати цей підхід для оцінки вартості запуску програми на EMR Serverless.

Оцінка вартості запуску додатків у вашому кластері EMR

Коли ви запускаєте програми в кластерах Amazon EMR, з вас стягується окрема плата за:

  1. Ціна запуску екземплярів кластера Amazon EC2 (ціна базових серверів)
  2. Ціна за Магазин еластичних блоків Amazon томи (Amazon EBS), якщо ви вирішите приєднати томи EBS
  3. Ціна Amazon EMR для екземплярів кластера

Загальна вартість роботи кластера включає всі три. Ви можете вибрати різні варіанти ціноутворення Amazon EC2, зокрема On Demand, 1- та 3-річні зарезервовані інстанси, плани заощадження ємності та спотові інстанси. Вибраний вами варіант ціноутворення Amazon EC2 визначає (a) ціну Amazon EC2. Вартість запуску програми в кластерах EMR є сумою (a), (b) і (c). Ви можете обчислити цю вартість за весь час роботи кластера (від моменту запуску кластера до моменту завершення роботи кластера) або за певний період часу, коли кластер працює. Ми рекомендуємо запустити перше, тобто виконати обчислення (a), (b) і (c) від моменту запуску кластера до моменту завершення роботи кластера. Якщо ви налаштували теги для свого кластера Amazon EMR, ви можете легко отримати докладний звіт про витрати для вашого кластера EMR за допомогою AWS Cost Explorer.

Оцінка вартості запуску тих самих програм за допомогою EMR Serverless

Коли ви запускаєте ті самі програми за допомогою EMR Serverless, ви платите за кількість віртуального процесора, пам’яті та ресурсів зберігання, які споживають ваші програми. Немає окремої плати за екземпляри EC2 або томи EBS. Крім того, ви платите лише за ресурси, які фактично використовуються програмою, а не за надані екземпляри EC2. Наприклад, під час запуску програм у кластерах EMR, коли екземпляр EC2 у кластері використовується частково (скажімо, використовується 16 ГБ пам’яті з 64 ГБ, доступних на екземплярі, або використовуються 4 VCPU з 16 VCPU, доступних на екземплярі) ) або коли екземпляр EC2 неактивний (наприклад, коли екземпляр ініціалізується або очікує запуску програми), ви все одно несете плату за Amazon EC2, Amazon EMR і Amazon EBS за повний екземпляр EC2 і протягом усього періоду, коли примірник активний у кластері EMR. З EMR Serverless ви платите лише за vCPU, пам’ять і ресурси зберігання, що використовуються з моменту, коли працівники починають виконувати ваше завдання Spark або Hive, до моменту, коли вони припиняються.

Щоб оцінити вартість роботи вашої програми EMR Spark або Hive на EMR Serverless, вам потрібно спочатку агрегувати загальні обчислювальні секунди vCore, пам’ять у МБ і ГБ у секундах, спожиті кожною програмою YARN, яка працювала на вашому кластері EMR, від моменту запуску контейнера YARN до моменту завершення роботи контейнера YARN. Ви можете отримати ці показники з журналів менеджера ресурсів YARN, доступних із сервера часової шкали YARN або інструментів YARN CLI. Ви можете отримати час роботи, vCore-секунди та МБ-секунди пам’яті, використані кожною з програм YARN.

Якщо ваш кластер запускає лише програми Spark, існує простіший підхід до оцінки. Замість отримання vCore-секунд, МБ-секунд пам’яті та ГБ-секунд зберігання з журналів менеджера ресурсів YARN, ви можете отримати ці показники з журналів подій Spark. Ми надали інструмент EMR Servless Естіматор, який може аналізувати журнали подій Spark для ваших програм і надавати зведені показники для вашої оцінки витрат.

Отримавши показники використання програми, ви можете обчислити приблизну вартість EMR Serverless за допомогою Безсерверні ціни EMR. Просто помножте ваші загальні vCore-секунди з EMR Serverless vCPU тарифікацією за секунду, помножте сукупну пам’ять МБ з тарифікацією EMR Serverless пам’яті за секунду та помножте кількість ГБ-секунд зберігання з тарифом EMR Serverless за секунду (лише якщо вимоги до пам’яті перевищує 20 ГБ на одного працівника). Додавши ці витрати на vCPU, пам’ять і сховище, ви можете порівняти вартість запуску тих самих програм на EMR Serverless.

У цьому підході ми припускаємо, що продуктивність програми еквівалентна. Іншими словами, розмір (vCPU, пам’ять) і тривалість виконання для кожного контейнера YARN у кластері EMR збігаються з кількістю, розміром і тривалістю виконання робочих програм, необхідних для запуску програми на EMR Serverless. Ми робимо це припущення, оскільки час виконання EMR для випуску EMR є однаковим незалежно від того, чи працює програма на кластері EMR чи на EMR Serverless.

Приклад

Давайте зробимо приклад порівняння вартості Amazon EMR на EC2 та EMR Serverless за допомогою одного кластера.

Ми запустили програму Spark на кластері EMR із п’ятьма вузлами (один основний, два основні та два завдання) і зібрали показники YARN за допомогою YARN CLI. Наступний код показує наше сукупне розподілення ресурсів.

сукупний розподіл ресурсів

Ми обчислили витрати Amazon EMR на EC2 таким чином:

  • Екземпляри кластера
    • Первинний: m5.2xlarge:1
    • Ядро: r5.2xlarge:2
    • Завдання: r5.2xlarge:2
  • Час роботи кластера = 18 хв
  • Вартість екземпляра на вимогу
    • m5.2xlarge (8 vCPU, 32 GiB пам'яті)
      • Amazon EC2: $0.384/год
      • Amazon EMR інкрементально: $0.096/год
    • r5.2xlarge (8 vCPU, 64 GiB пам'яті)
      • Amazon EC2: $0.504/год
      • Amazon EMR інкрементально: $0.126/год

Нижче наведено розрахунок вартості EMR для EC2:

  • Вартість Amazon EMR = ((1 основний вузол x 0.096 $/год) + (2 основні вузли x 0.126 $/год) + (2 вузли завдання x 0.126 $/год)) = 0.60 $
  • Вартість Amazon EC2 = ((1 основний x 0.384 $/год) + (2 основні вузли x 0.504 $/год) + (2 вузли завдань x 0.504 $/год)) = 2.40 $
  • Amazon EMR на кластері EC2 вартість/год = 0.6 $ + 2.40 $ = 3 $/год * 8/60 год (час роботи в годинах)

Загальна вартість Amazon EMR на Amazon EC2 становить $0.40/год.

Щоб обчислити вартість EMR Serverless, об’єднайте vCore-секунди та МБ-секунди пам’яті для тієї самої програми, яку ви раніше запускали в кластері EMR. Потім помножте ці числа на EMR Serverless vCPU і ціну пам’яті. Результати наших розрахунків такі:

  • Total_vcore_seconds = 5737
  • Total_Memory_mb_seconds = 120156631
  • Конвертувати у vCPU/год і ГБ пам'яті/год:
    • Сумарна швидкість ЦП/год: 5737/(60*60)=1.59
    • Aggregated memory/hr: 120156631/(60*60*1024)=32.5
  • Загальна вартість vCPU-годин = 33 vCPU * 0.052624 VCPU/год * 8/60 = $0.23
  • Загальна вартість ГБ пам’яті = 1.59 МБ * 0.0057785 пам’яті/год * 8/60 = 0.00122 $

У цьому прикладі загальна вартість EMR Serverless становить 0.231 дол. США, тобто зменшення на 42%.

Висновок

Amazon EMR Serverless — це нещодавно запущена безсерверна опція в Amazon EMR, яка дозволяє легко запускати фреймворки з відкритим кодом, такі як Spark і Hive, без налаштування, керування та масштабування кластерів. Клієнти, які вже використовують кластери EMR, хочуть зрозуміти, як вони можуть оцінити вартість запуску своїх програм EMR за допомогою EMR Serverless. Ми представили підхід, який можна використовувати для проведення аналізу витрат на основі аналізу метрик додатків із ваших кластерів EMR.

Ми сподіваємося, що ви спробуєте це, і поділіться з нами своїми відгуками!


Про авторів

Радхіка Равірала є головним менеджером із продуктів в AWS.

Метью Лієм є старшим менеджером з архітектури рішень в AWS.

Часова мітка:

Більше від Великі дані AWS