Amazon EMR
Analytics Cloud Practitioner Solutions Architect Associate Data Analytics Specialty

Amazon EMR

Amazon Elastic MapReduce

Zarzadzane klastry Big Data w chmurze AWS. Uruchamiaj Apache Spark, Hive, Presto i Flink na skalowalnej infrastrukturze z obsluga Spot Instances.

Amazon EMR (Elastic MapReduce) to zarzadzana platforma Big Data, ktora pozwala uruchamiac frameworki open-source takie jak Apache Spark, Hive, Presto, HBase i Flink na klastrach EC2, EKS lub w trybie Serverless. EMR automatyzuje konfiguracje, skalowanie i zarzadzanie klastrem.

EMR jest do 50% tanszy niz tradycyjne rozwiazania on-premises dzieki integracji ze Spot Instances i automatycznemu skalowaniu. EMRFS pozwala uzywac S3 jako trwalego storage zamiast HDFS, co oddziela compute od storage i obniza koszty.

Czy wiesz, ze...

Amazon EMR byl jednym z pierwszych serwisow AWS do przetwarzania Big Data, uruchomionym w 2009 roku. Nazwa "Elastic MapReduce" pochodzi od oryginalnego frameworka Hadoop MapReduce, ale dzis EMR obsluguje znacznie wiecej frameworkow - Spark jest najpopularniejszy.

Pro Tip

Uzywaj EMR Serverless do zadan ad-hoc i batch, a EMR on EC2 z auto-scalingiem i Spot Instances do stalych workloadow. Task Nodes na Spot Instances moga obnizyc koszty klastra nawet o 60% bez ryzyka utraty danych.

Amazon EMR (Elastic MapReduce) to zarzadzana platforma do przetwarzania duzych zbiorow danych z uzyciem frameworkow open-source: Apache Spark, Hive, Presto, HBase. Ponizej przedstawiamy caly cykl od utworzenia klastra po EMR Serverless.

1

Utworzenie klastra

Klaster EMR sklada sie z nodow: Primary (koordynacja, YARN ResourceManager), Core (przetwarzanie + HDFS storage) i Task (tylko przetwarzanie, bez storage). Tworzysz klaster przez konsole, CLI, SDK lub Step Functions. Wybierasz release label (np. emr-7.0.0), ktory determinuje wersje frameworkow. Klaster mozna uruchomic w VPC dla izolacji sieciowej.

2

Wybor aplikacji (Spark/Hive/Presto/HBase)

EMR oferuje pre-skonfigurowane frameworki: Spark (batch i streaming processing), Hive (SQL na duzych zbiorach), Presto/Trino (interaktywne zapytania SQL), HBase (baza NoSQL kolumnowa), Flink (real-time streaming). Mozesz zainstalowac wiele frameworkow na jednym klastrze. EMR automatycznie konfiguruje integracje miedzy nimi - np. Hive metastore wspoldzielony z Spark.

3

Konfiguracja instance fleet

Instance fleets pozwalaja mieszac typy instancji w jednym klastrze - EMR automatycznie wybiera najtansze dostepne. Definiujesz: target capacity (np. 100 vCPU), liste typow instancji (m5.xlarge, m5.2xlarge, r5.xlarge) i mix On-Demand/Spot. EMR optymalizuje rozmieszczenie po AZ i typach, aby zminimalizowac koszty i ryzyko przerwania Spot.

4

Uruchamianie jobow (Steps)

Job w EMR to "Step" - moze to byc skrypt Spark (spark-submit), zapytanie Hive, skrypt custom JAR lub komenda shell. Steps wykonuja sie sekwencyjnie na klastrze. Mozesz dodawac Steps do dzialajacego klastra lub zdefiniowac je przy tworzeniu. Po zakonczeniu ostatniego Step klaster moze sie automatycznie zamknac (transient cluster).

5

Klaster przejsciowy vs permanentny

Transient cluster: tworzysz na czas joba, po zakonczeniu klaster sie zamyka - placisz tylko za czas przetwarzania. Idealny dla nightly batch jobs. Long-running cluster: dziala ciagle, gotowy na interaktywne zapytania (Presto, JupyterHub). Dane trzymaj na S3 (nie HDFS), aby moc swobodnie tworzyc i zamykac klastry bez utraty danych.

6

EMR Serverless

EMR Serverless eliminuje potrzebe zarzadzania klastrem - wysylasz job (Spark/Hive) a EMR automatycznie przydziela i skaluje zasoby. Placisz za vCPU i pamiec uzywana podczas wykonywania joba. Idealny dla sporadycznych workloadow - nie placisz za idle klaster. Pre-initialized capacity pozwala skrocic cold start do kilku sekund.

Praktyczne wskazowki z produkcyjnego uzycia EMR - od optymalizacji kosztow z instancjami Spot po EMR on EKS.

EMR on EKS - konteneryzowany Spark

EMR on EKS uruchamia joby Spark na istniejacym klastrze Kubernetes. Zalety: wspoldzielenie zasobow z innymi workloadami, uzycie Kubernetes scheduler, szybsze uruchamianie jobow (brak provisionowania EC2), native integracja z Kubernetes ecosystem (monitoring, networking). Uzyj, gdy masz juz klaster EKS i chcesz skonsolidowac infrastructure.

Zaawansowany

Instance fleets z Spot - oszczednosc do 70%

Skonfiguruj Core nodes jako On-Demand (stabilnosc HDFS) i Task nodes jako Spot (tylko compute, mozna stracic). Podaj 5-10 typow instancji w fleet, aby zwiekszyc dostepnosc Spot. Wlacz Managed Scaling - EMR automatycznie dodaje/usuwa Task nodes na podstawie metryki YARN pending. Spot Instances dla Task nodes daja 60-70% oszczednosci vs On-Demand.

Poczatkujacy

EMR Serverless dla ad-hoc workloadow

EMR Serverless idealnie sprawdza sie dla jobow uruchamianych sporadycznie (kilka razy dziennie/tygodniowo). Nie placisz za idle zasoby - tylko za vCPU-godziny i GB-godziny pamieci. Skonfiguruj pre-initialized capacity (np. 10 vCPU, 40 GB RAM) dla jobow wymagajacych szybkiego startu. Max 1000 jednoczesnych workloadow na aplikacje.

Poczatkujacy

S3 jako zamiennik HDFS (EMRFS)

EMRFS pozwala Sparkowi i Hive czytac/pisac bezposrednio z/do S3 tak, jakby to byl HDFS. Zalety: dane przetrwaja zamkniecie klastra, nieograniczona pojemnosc, taniej niz EBS volumes na Core nodes. Uzyj S3 output committer (EMRFS S3-optimized committer) dla Sparka, aby uniknac problemow z renaming na S3. Trzymaj dane w formacie Parquet/ORC dla najlepszej wydajnosci.

Poczatkujacy

Integracja z AWS Step Functions

Step Functions orkiestruje pipeline EMR: tworzenie klastra -> dodanie Stepow -> czekanie na zakonczenie -> terminacja klastra. Stan maszyny obsluguje retry, bledy i rownolegle etapy. EMR Serverless integruje sie jeszcze prosciej - StartJobRun nie wymaga zarzadzania klastrem. Uzyj zamiast Airflow dla prostszych pipeline - mniejszy overhead operacyjny.

Zaawansowany

Instancje Graviton - lepsza wydajnosc za mniej

Instancje Graviton (m6g, m7g, r6g, r7g) oferuja do 30% lepsza cene/wydajnosc niz odpowiedniki x86 (m5, r5) dla workloadow Spark/Hive. EMR w pelni wspiera Graviton - nie wymaga zmian w kodzie. Uzyj Graviton jako domyslny typ instancji w instance fleet. Dostepne dla EMR on EC2 i EMR on EKS.

Poczatkujacy

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon EMR bezposrednio w konsoli AWS.

Do czego sluzy Amazon EMR?

01

Przetwarzanie danych na duza skale

Uruchom zadania Apache Spark przetwarzajace petabajty danych w S3. Auto-scaling dostosowuje klaster do obciazenia.

02

Interaktywne zapytania SQL

Uzywaj Presto lub Trino do interaktywnych zapytan SQL na danych w S3. Szybsze niz Athena dla zlozonych zapytan analitycznych.

03

Streaming w czasie rzeczywistym

Apache Flink na EMR przetwarza strumienie danych z Kinesis lub Kafki z niskim opoznieniem i exactly-once semantics.

04

Machine learning na duzych zbiorach

Trenuj modele ML za pomoca Spark MLlib na klastrach z GPU. EMR Notebooks umozliwiaja interaktywna eksploracje danych.

Co musisz wiedziec?

Klaster EMR

Zestaw instancji EC2: Master Node (koordynacja), Core Nodes (przetwarzanie + HDFS), Task Nodes (tylko przetwarzanie, idealne dla Spot).

EMRFS

EMR File System - pozwala klastrom EMR uzywac Amazon S3 jako trwalego storage zamiast HDFS. Oddziela compute od storage.

Bootstrap Actions

Skrypty uruchamiane automatycznie na kazdym wezle przy starcie klastra. Pozwalaja instalowac dodatkowe oprogramowanie i konfiguracje.

EMR Serverless

Tryb bez zarzadzania klastrem - podajesz zadanie Spark lub Hive, a EMR automatycznie przydziela zasoby. Platisz tylko za uzyte vCPU i RAM.

Step

Jednostka pracy w EMR - zadanie Spark, skrypt Hive, program MapReduce. Klaster moze wykonywac kroki sekwencyjnie lub rownolegle.

EMR on EKS

Uruchamianie zadan Spark na istniejacym klastrze Amazon EKS. Pozwala wspoldzielic infrastrukture Kubernetes z innymi aplikacjami.

Architektura: Data Processing Pipeline z EMR

Typowa architektura przetwarzania danych z EMR. Dane z S3 Data Lake sa przetwarzane przez klaster EMR (Spark/Hive), a wyniki trafiaja z powrotem do S3 lub do dalszej analizy. Monitoring przez CloudWatch i YARN.

S3 Data Lake
S3 Data Lake Zrodlowe dane w formacie Parquet/ORC/CSV na S3
EMRFS (S3)
Amazon EMR
Amazon EMR Klaster z Apache Spark, Hive, Presto - przetwarzanie petabajtow danych
YARN submit
Spark / Hive Jobs ETL transformacje, agregacje, machine learning (MLlib)
Output
S3 Results
S3 Results Przetworzone dane, raporty, modele ML w S3
Monitoring
Amazon CloudWatch
Amazon CloudWatch Metryki klastra, logi aplikacji, alarmy na awarie jobow
Uzyj S3 jako glowny storage zamiast HDFS - pozwala to na transient clusters (uruchom, przetwarzaj, zamknij) i redukuje koszty o 40-60% w porownaniu z ciagle dzialajacym klastrem.
Skonfiguruj EMR Managed Scaling z minimalnym rozmiarem klastra i pozwol EMR automatycznie dodawac Task nodes (Spot) w szczycie obciazenia - oszczednosc do 70%.
Dla regularnych jobow ETL uzyj AWS Step Functions do orkiestracji zamiast cron + skrypty - Step Functions obsluguje retry, error handling i ma pelny audit trail w konsoli.

Ile kosztuje Amazon EMR?

EMR on EC2

Platisz za instancje EC2 + oplata EMR (ok. 25% ceny On-Demand instancji). Spot Instances daja oszczednosci do 90%.

m5.xlarge: ~$0.048/godz. oplata EMR + cena EC2

EMR Serverless

Platisz za vCPU-godziny i GB-godziny RAM faktycznie uzyte przez zadania. Brak oplat za idle.

vCPU-godz.: ~$0.052, GB-godz. RAM: ~$0.0057

EMR on EKS

Oplata EMR za vCPU-godziny uzyte przez zadania Spark na klastrze EKS. Platisz osobno za infrastrukture EKS.

vCPU-godz.: ~$0.01012 oplata EMR

Przyklady AWS CLI

Utworz klaster EMR

Tworzy klaster EMR z Apache Spark i 3 wezlami

aws emr create-cluster \
 --name "Spark-Cluster" \
 --release-label emr-7.0.0 \
 --applications Name=Spark Name=Hive \
 --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m5.xlarge InstanceGroupType=CORE,InstanceCount=2,InstanceType=m5.xlarge \
 --use-default-roles \
 --log-uri s3://moje-logi-emr/

Dodaj krok Spark do klastra

Uruchamia zadanie Spark na istniejacym klastrze EMR

aws emr add-steps \
 --cluster-id j-XXXXXXXXXXXXX \
 --steps Type=Spark,Name="Moj-Spark-Job",ActionOnFailure=CONTINUE,Args=[--deploy-mode,cluster,--class,com.example.Main,s3://moje-jary/app.jar]

Lista aktywnych klastrow

Wyswietla wszystkie aktywne klastry EMR z ich statusem

aws emr list-clusters \
 --active \
 --query 'Clusters[].{Id:Id,Name:Name,State:Status.State}' \
 --output table

Uruchom zadanie EMR Serverless

Startuje zadanie Spark w trybie serverless

aws emr-serverless start-job-run \
 --application-id app-XXXXXXXXXXXXX \
 --execution-role-arn arn:aws:iam::123456789012:role/EMRServerlessRole \
 --job-driver '{"sparkSubmit":{"entryPoint":"s3://moje-skrypty/etl.py"}}'

Quiz: Amazon EMR

Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.

Twoj wynik: 0 / 4

1. Czym jest EMRFS?

2. Ktory typ wezla EMR jest idealny dla Spot Instances?

3. Co to jest EMR Serverless?

4. Ile wynosi dodatkowa oplata EMR ponad koszt instancji EC2?

Chcesz poznac Amazon EMR w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon EMR krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy