Bezserwerowy kalkulator kosztów Amazon EMR

Bezserwerowy kalkulator kosztów Amazon EMR

Węzeł źródłowy: 1776349

Bezserwerowe Amazon EMR jest opcją bezserwerową w Amazon EMR co ułatwia analitykom danych i inżynierom uruchamianie aplikacji przy użyciu struktur analizy dużych zbiorów danych typu open source, takich jak Apache Spark i Hive, bez konfigurowania, zarządzania i skalowania klastrów lub serwerów. Otrzymujesz wszystkie funkcje najnowszych frameworków open source ze zoptymalizowanym pod kątem wydajności środowiskiem wykonawczym Amazon EMR i bez konieczności planowania i obsługi instancji i klastrów.

Dzięki Amazon EMR możesz uruchamiać swoje aplikacje analityczne na dedykowanych klastrach EMR, na istniejących Elastyczna usługa Amazon Kubernetes (Amazon EKS) lub przy użyciu nowej opcji wdrażania EMR Serverless, w której nie trzeba zarządzać klastrami ani instancjami. Kiedy budujesz aplikację Spark lub Hive przy użyciu wersji Amazon EMR, powiedzmy Amazon EMR 6.8, możesz uruchomić aplikację w klastrach EMR, w klastrach EKS przy użyciu Amazon EMR na EKS, lub używając EMR Serverless bez konieczności zmiany aplikacji.

Aby dowiedzieć się o zaletach każdej opcji wdrożenia w Bezserwerowy EMR, odnoszą się do Jakie są różnice w funkcjach między EMR Serverless i Amazon EMR w EC2? w FAQ Amazon EMR. Możesz również dowiedzieć się o cenach tych opcji z Strona z cenami Amazon EMR. Wielu klientów korzysta już z aplikacji do analizy danych w klastrach EMR i stwierdza, że ​​nowa opcja bezserwerowa jest prostsza i tańsza.

W tym poście omawiamy, w jaki sposób można oszacować, ile może kosztować uruchomienie aplikacji, która obecnie działa w klastrach EMR przy użyciu nowej opcji bezserwerowej, oraz przeprowadzić tę analizę, korzystając z bieżących metryk aplikacji. Takie podejście pomaga ocenić i zastosować opcję wdrożenia, która jest najbardziej opłacalna dla aplikacji. Jednak strona z cenami Amazon EMR nie mówi, jak łatwo oszacować koszt uruchamiania istniejących aplikacji klastrowych EMR na EMR Serverless. W poniższych sekcjach opisujemy podejście, które to umożliwia.

Mimo że w przykładzie w tym poście omówiono sposób uzyskania oszacowania kosztów aplikacji działających w klastrach EMR, można również skorzystać z tej metody, jeśli używasz aplikacji Spark lub Hive w innym miejscu i chcesz oszacować koszt jej uruchomienia w EMR Bez serwera. Na przykład, jeśli uruchamiasz samodzielnie zarządzane aplikacje Spark lub Hive Elastyczna chmura obliczeniowa Amazon (Amazon EC2) klastry lub jeśli uruchamiasz zadania Spark Klej AWS, pokazujemy, jak możesz wykorzystać to podejście do oszacowania kosztu uruchomienia aplikacji na EMR Serverless.

Szacowanie kosztów uruchamiania aplikacji w klastrze EMR

Gdy uruchamiasz aplikacje w klastrach Amazon EMR, naliczane są oddzielne opłaty za:

  1. Cena Amazon EC2 za uruchomienie instancji klastra (cena za serwery bazowe)
  2. Cena Sklep Amazon Elastic Block (Amazon EBS), jeśli zdecydujesz się dołączyć woluminy EBS
  3. Cena Amazon EMR dla instancji klastra

Całkowity koszt działania klastra obejmuje wszystkie trzy. Istnieje wiele opcji cenowych Amazon EC2 do wyboru, w tym na żądanie, roczne i 1-letnie wystąpienia zarezerwowane, plany oszczędzania pojemności i wystąpienia spot. Wybrana opcja wyceny Amazon EC3 określa (a), cenę Amazon EC2. Koszt uruchomienia aplikacji na klastrach EMR jest sumą (a), (b) i (c). Koszt ten można obliczyć dla okresu istnienia klastra (od momentu uruchomienia klastra do jego zakończenia) lub dla określonego okresu działania klastra. Zalecamy uruchomienie tego pierwszego, czyli obliczenie (a), (b) i (c) od momentu uruchomienia klastra do czasu jego zakończenia. Jeśli skonfigurowałeś tagi dla swojego klastra Amazon EMR, możesz łatwo uzyskać plik szczegółowy raport kosztów dla Twojego klastra EMR za pomocą AWS Cost Explorer.

Szacowanie kosztów uruchomienia tych samych aplikacji przy użyciu EMR Serverless

Gdy uruchamiasz te same aplikacje przy użyciu rozwiązania EMR Serverless, płacisz za ilość zasobów procesora wirtualnego, pamięci i pamięci masowej zużywanych przez aplikacje. Nie ma osobnej opłaty za instancje EC2 lub woluminy EBS. Płacisz tylko za zasoby faktycznie używane przez aplikację, a nie za udostępniane instancje EC2. Na przykład podczas uruchamiania aplikacji w klastrach EMR, gdy instancja EC2 w klastrze jest częściowo wykorzystana (powiedzmy, 16 GB pamięci jest używane z 64 GB dostępnych w instancji lub 4 jednostki VCPU są wykorzystywane z 16 jednostek VCPU dostępnych w instancji ) lub gdy instancja EC2 jest bezczynna (na przykład podczas inicjowania instancji lub oczekiwania na uruchomienie aplikacji), nadal naliczane są opłaty Amazon EC2, Amazon EMR i Amazon EBS za pełną instancję EC2 i przez czas, instancja jest aktywna w klastrze EMR. Dzięki rozwiązaniu EMR Serverless płacisz tylko za zasoby procesora wirtualnego, pamięci i pamięci masowej używane od momentu, gdy pracownicy zaczynają uruchamiać Twoje zadanie Spark lub Hive, aż do momentu ich zatrzymania.

Aby oszacować koszt uruchomienia aplikacji EMR Spark lub Hive w systemie EMR Serverless, należy najpierw zagregować łączną liczbę sekund obliczeniowych rdzeni wirtualnych, sekund pamięci w MB i sekund w GB pamięci masowej zużywanych przez każdą aplikację YARN uruchomioną w klastrze EMR, od momentu uruchomienia kontenera PRZĘDZy do momentu zakończenia kontenera PRZĘDZy. Te metryki można uzyskać z dzienników menedżera zasobów YARN dostępnych z serwera osi czasu YARN lub narzędzi CLI YARN. Możesz pobrać czas działania, liczbę wirtualnych rdzeni i liczbę MB pamięci używaną przez każdą z aplikacji YARN.

Jeśli w klastrze działają tylko aplikacje platformy Spark, istnieje prostsze podejście do oszacowania. Zamiast uzyskiwać sekundy rdzeni wirtualnych, sekundy MB pamięci i GB sekund magazynu z dzienników menedżera zasobów YARN, można uzyskać te metryki z dzienników zdarzeń platformy Spark. Udostępniliśmy narzędzie Estymator bezobsługowy EMR, które mogą analizować dzienniki zdarzeń platformy Spark dla Twoich aplikacji i udostępniać zagregowane metryki do szacowania kosztów.

Po uzyskaniu metryk użycia aplikacji możesz obliczyć szacowany koszt usługi EMR Serverless Ceny EMR Serverless. Wystarczy pomnożyć zagregowaną liczbę rdzeni wirtualnych w sekundach z ceną EMR Serverless vCPU na sekundę, pomnożyć zagregowaną liczbę MB pamięci przez cenę pamięci EMR Serverless za sekundę i pomnożyć GB-sekundę pamięci masowej z ceną pamięci masowej EMR Serverless za sekundę (tylko jeśli wymagania dotyczące pamięci masowej przekraczać 20 GB na pracownika). Sumując te koszty vCPU, pamięci i pamięci masowej, możesz porównać koszty uruchamiania tych samych aplikacji w EMR Serverless.

W tym podejściu zakładamy, że wydajność aplikacji jest równoważna. Innymi słowy, rozmiar (procesor wirtualny, pamięć) i czas działania każdego kontenera YARN w klastrze EMR jest taki sam, jak liczba, rozmiar i czas działania procesów roboczych potrzebnych do uruchomienia aplikacji w systemie EMR Serverless. Przyjmujemy to założenie, ponieważ środowisko uruchomieniowe EMR dla wersji EMR jest takie samo, niezależnie od tego, czy aplikacja działa w klastrze EMR, czy w EMR Serverless.

Przykład

Zróbmy przykładowe porównanie kosztów Amazon EMR na EC2 i EMR Serverless przy użyciu jednego klastra.

Uruchomiliśmy aplikację Spark w klastrze EMR z pięcioma węzłami (jeden podstawowy, dwa rdzenie i dwa zadania oraz zebraliśmy metryki PRZĘDZy za pomocą interfejsu wiersza polecenia PRZĘDZy. Poniższy kod przedstawia naszą zagregowaną alokację zasobów.

zagregowana alokacja zasobów

Obliczyliśmy Amazon EMR na podstawie kosztów EC2 w następujący sposób:

  • Instancje klastra
    • Podstawowe: m5.2xlarge:1
    • Rdzeń: r5.2xlarge:2
    • Zadanie: r5.2xlarge:2
  • Czas działania klastra = 18 min
  • Koszt instancji na żądanie
    • m5.2xlarge (8 procesorów wirtualnych, 32 GiB pamięci)
      • Amazon EC2: 0.384 USD/godz
      • Przyrostowe wynagrodzenie Amazon EMR: 0.096 USD/godz
    • r5.2xlarge (8 procesorów wirtualnych, 64 GiB pamięci)
      • Amazon EC2: 0.504 USD/godz
      • Przyrostowe wynagrodzenie Amazon EMR: 0.126 USD/godz

Poniżej znajduje się EMR dotyczący kalkulacji kosztów EC2:

  • Koszt Amazon EMR = ((1 węzeł podstawowy x 0.096 USD/godz.) + (2 węzły podstawowe x 0.126 USD/godz.) + (2 węzły zadań x 0.126 USD/godz.)) = 0.60 USD
  • Koszt Amazon EC2 = ((1 podstawowy x 0.384 USD/godz.) + (2 węzły podstawowe x 0.504 USD/godz.) + (2 węzły zadań x 0.504 USD/godz.)) = 2.40 USD
  • Amazon EMR w klastrze EC2 koszt/godz. = 0.6 USD + 2.40 USD = 3 USD/godz. * 8/60 godz. (czas działania w godz.)

Całkowity koszt Amazon EMR na Amazon EC2 wynosi 0.40 USD/godz.

Aby obliczyć koszt rozwiązania EMR Serverless, należy zagregować liczbę sekund wirtualnych rdzeni i MB pamięci dla tej samej aplikacji, która była wcześniej uruchamiana w klastrze EMR. Następnie pomnóż te liczby przez cenę EMR Serverless vCPU i pamięci. Nasze wyniki obliczeń są następujące:

  • Suma_vcore_sekund = 5737
  • Całkowita_pamięć_mb_sekund = 120156631
  • Konwertuj na vCPU/godz. i pamięć-GB/godz.:
    • Zagregowany vCPU/godz.: 5737/(60*60)=1.59
    • Aggregated memory/hr: 120156631/(60*60*1024)=32.5
  • Całkowity koszt godzin vCPU = 33 vCPU * 0.052624 VCPU/godz. * 8/60 = 0.23 USD
  • Całkowity koszt GB pamięci = 1.59 MB * 0.0057785 pamięci/godz. * 8/60 = 0.00122 USD

W tym przykładzie całkowity koszt usługi EMR Serverless wynosi 0.231 USD, czyli 42% mniej.

Wnioski

Amazon EMR Serverless to niedawno wprowadzona opcja bezserwerowa w Amazon EMR, która ułatwia uruchamianie platform typu open source, takich jak Spark i Hive, bez konfigurowania, zarządzania i skalowania klastrów. Klienci, którzy już korzystają z klastrów EMR, chcą zrozumieć, w jaki sposób mogą oszacować koszt uruchamiania swoich aplikacji EMR przy użyciu rozwiązania EMR Serverless. Przedstawiliśmy podejście, które można wykorzystać do przeprowadzenia analizy kosztów w oparciu o analizę metryk aplikacji z klastrów EMR.

Mamy nadzieję, że spróbujesz i podzielisz się z nami swoją opinią!


O autorach

Radhika Ravirala jest głównym menedżerem produktu w AWS.

Mateusz Liem jest Senior Solution Architecture Manager w AWS.

Znak czasu:

Więcej z Duże zbiory danych AWS!