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.
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.
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.
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.
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.
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.
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).
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.
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.
ZaawansowanyInstance 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.
PoczatkujacyEMR 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.
PoczatkujacyS3 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.
PoczatkujacyIntegracja 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.
ZaawansowanyInstancje 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.
PoczatkujacyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon EMR bezposrednio w konsoli AWS.
Do czego sluzy Amazon EMR?
Przetwarzanie danych na duza skale
Uruchom zadania Apache Spark przetwarzajace petabajty danych w S3. Auto-scaling dostosowuje klaster do obciazenia.
Interaktywne zapytania SQL
Uzywaj Presto lub Trino do interaktywnych zapytan SQL na danych w S3. Szybsze niz Athena dla zlozonych zapytan analitycznych.
Streaming w czasie rzeczywistym
Apache Flink na EMR przetwarza strumienie danych z Kinesis lub Kafki z niskim opoznieniem i exactly-once semantics.
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.
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.
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?
Czesto uzywane razem z Amazon EMR
Chcesz poznac Amazon EMR w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon EMR krok po kroku. Teoria + praktyka od zera.