Amazon EMR-clusters schalen
Naarmate je dataverwerkingsbehoeften veranderen, moet je mogelijk de resources van je EMR-cluster aanpassen om prestaties en kosten te waarborgen.
EMR biedt handmatige en geautomatiseerde schaalopties, zodat je het aantal instances kunt aanpassen aan de werklast.
Daarnaast kan het gebruik van Spot Instances helpen om kosten te optimaliseren en toch schaalbaarheid te garanderen.
Handmatig schalen
Met handmatig schalen kun je het aantal instances in je cluster verhogen of verlagen op basis van realtime vraag.
Deze aanpassing kan via de EMR-console, de AWS CLI of de EMR API worden gedaan.
- Via de EMR-console: navigeer naar je cluster, selecteer "Resize" en geef het gewenste aantal instances op.
- Via de AWS CLI: voer het volgende commando uit om de clustergrootte te wijzigen:
aws emr modify-instance-groups --cluster-id <your-cluster-id> --instance-groups InstanceGroupId=<your-instance-group-id>,InstanceCount=<new-instance-count>
- Via de EMR API: je kunt de
ModifyInstanceGroups-API gebruiken om dynamisch het aantal instances aan te passen.
Handmatig schalen is vooral geschikt voor voorspelbare workloads waarbij je de resourcebehoefte vooraf kunt inschatten.
Ik gebruikte bijvoorbeeld handmatig schalen toen ik wist dat mijn dataverwerkingsjob een stabiele vraag zou hebben. Zo kon ik het aantal instances afstemmen op de verwachte workload en de resources optimaal benutten.
Auto-scaling in Amazon EMR
Auto-scaling in EMR past het aantal instances dynamisch aan wanneer de workload verandert, zodat resources efficiënt worden gebruikt en de kosten onder controle blijven.
Auto-scaling policies bepalen wanneer instances moeten worden toegevoegd of verwijderd op basis van specifieke metrics zoals CPU-gebruik, YARN-geheugengebruik of de lengte van de taakwachtrij.
Belangrijke auto-scalingconfiguraties:
- Scale-out policy: voegt instances toe wanneer de werklast toeneemt, zodat jobs op tijd worden verwerkt.
- Scale-in policy: vermindert instances als de vraag daalt om onnodige kosten te voorkomen.
- Cooldownperioden: voorkomen te frequente schaalacties in korte tijdsvensters.
Om auto-scaling in te schakelen, configureer je een Auto-Scaling Policy via de AWS Management Console, CLI of API.
Een voorbeeld van een AWS CLI-commando om een auto-scaling policy in te stellen is:
aws emr put-auto-scaling-policy --cluster-id <your-cluster-id> --instance-group-id <your-instance-group-id> --auto-scaling-policy file://policy.json
Auto-scaling is vooral nuttig voor variabele workloads, zoals streaminganalytics, batchverwerking en machinelearningtaken met fluctuerende resourcebehoeften.
Zo gebruikte ik auto-scaling bij het draaien van een machinelearningmodel met onvoorspelbare pieken in verkeer. Het systeem schaalde automatisch op tijdens piekuren en weer af wanneer de vraag daalde, wat zowel kosten als prestaties optimaliseerde.
Spot-instances voor kostenoptimalisatie
Amazon EC2 Spot Instances bieden een voordelige manier om EMR-clusters te draaien door gebruik te maken van overtollige EC2-capaciteit tegen sterk gereduceerde tarieven.

Deze instances zijn ideaal voor fouttolerante workloads, zoals big dataverwerking en machine learning.
Voordelen van Spot Instances in EMR:
- Kostenbesparing: Spot Instances kunnen tot 90% goedkoper zijn dan On-Demand-instances.
- Schaalbaarheid: je kunt dynamisch meer rekenkracht toevoegen tegen lagere kosten.
- Hybride instancetypes: EMR laat je Spot, On-Demand en Reserved Instances combineren om kosten en betrouwbaarheid in balans te brengen.
Spot Instances kunnen echter worden onderbroken als AWS capaciteit terugvraagt. Om dit te beperken:
- Gebruik Instance Fleets in plaats van Instance Groups om Spot en On-Demand dynamisch te mixen.
- Implementeer checkpointing in workloads om te herstellen van mogelijke onderbrekingen.
- Zet gediversifieerde Spot-aanvragen op over meerdere Availability Zones en instancetypes voor meer stabiliteit.
Om Spot Instances in EMR te configureren, gebruik je het volgende AWS CLI-commando:
aws emr create-cluster --instance-fleets file://instance-fleet-config.json
Door handmatig schalen, auto-scaling en Spot Instances te combineren, kun je je EMR-clusters optimaliseren voor prestaties, kostenefficiëntie en betrouwbaarheid.
Beveiliging en toegangsbeheer in Amazon EMR
Verkeerd geconfigureerde IAM-rollen in EMR kunnen gevoelige data blootstellen aan onbevoegde gebruikers. Hanteer daarom altijd het principe van least privilege en beperk SSH-toegang tot alleen vertrouwde IP-adressen.
AWS biedt robuuste beveiligingsfuncties, waaronder IAM-rollen voor toegangsbeheer, versleuteling voor databeveiliging en best practices om je omgeving te beschermen.
IAM-rollen en -beleid
AWS Identity and Access Management (IAM) beheert de toegang tot EMR-clusters en gerelateerde resources.
Bij het aanmaken van een cluster moet je IAM-rollen toewijzen die rechten geven om met S3, DynamoDB en andere AWS-services te werken.
Least-privilegebeleid definieert alleen de noodzakelijke toegang en verhoogt zo de veiligheid.
De onderstaande afbeelding toont managed policies en hoe deze met EMR kunnen worden gebruikt.

Screenshot van AWS IAM-beleidsinstellingen die laten zien hoe machtigingen worden toegewezen. Source: AWS Docs
Dataversleuteling en beveiligingsbest practices
Amazon EMR ondersteunt versleuteling van data in rust met Amazon S3 server-side encryption (SSE) of AWS Key Management Service (KMS). Data in transit kan worden beveiligd met SSL/TLS-protocollen.
Belangrijke best practices zijn onder andere multi-factor authentication (MFA) voor toegang tot de AWS-console, het beperken van SSH-toegang en het veilig beheren van API-sleutels.
Wil je meer leren over AWS-beveiliging? Bekijk dan de AWS Security and Cost Management-cursus.
Probleemoplossing met Amazon EMR
Hoewel Amazon EMR is ontworpen voor schaalbaarheid en betrouwbaarheid, kunnen er tijdens clustergebruik en jobuitvoering alsnog problemen optreden.
Veelvoorkomende uitdagingen zijn prestatieknelpunten, jobstoringen en resourcebeperkingen. Weten hoe je deze problemen diagnosticeert en oplost, helpt om je workflow efficiënt te houden.
Veelvoorkomende problemen met EMR-clusters
Gebruikers krijgen vaak te maken met trage jobuitvoering, onvoldoende geheugentoewijzing, instance-storingen en inefficiënte datashuffling.
Prestatieproblemen kunnen voortkomen uit verkeerde instancetypes, ondergeprovisioneerde clusters of overmatige disk I/O. Om deze problemen aan te pakken:
- Optimaliseer jobparameters: pas instellingen aan zoals executor memory, parallelisme en shuffle partitions om het resourcegebruik in balans te brengen.
- Schaal instances passend op: gebruik auto-scaling policies om de clustergrootte dynamisch aan te passen aan de werklast.
- Monitor en bekijk logs: gebruik Amazon CloudWatch, de EMR-console of directe loginzage in Amazon S3 om knelpunten en storingspunten te identificeren.
Spark- en Hadoop-jobs diagnosticeren
Wanneer Spark- of Hadoop-jobs falen, is het cruciaal de oorzaak te achterhalen om te kunnen herstellen.
Logs die zijn opgeslagen in Amazon S3 of toegankelijk via de EMR-console geven waardevolle inzichten in uitvoeringsfouten, geheugenproblemen en trage taken.
- Gebruik de Spark history server: deze tool helpt bij het analyseren van jobtijden, shuffle-operaties en taakverdeling om prestatieknelpunten te vinden.
- Gebruik de Hadoop job tracker: voor MapReduce-workloads geeft de Job Tracker gedetailleerde statistieken, zodat je problemen zoals langlopende taken of datascheefheid kunt aanwijzen.
- Prestaties tunen met Dr. Elephant en Sparklens: deze tools geven aanbevelingen voor het optimaliseren van Spark- en Hadoop-workloads op basis van historische uitvoeringsmetrics.
De onderstaande afbeelding laat zien hoe Dr. Elephant en Sparklens kunnen worden gebruikt om prestaties in Hadoop en Spark op Amazon EMR te tunen.
De interfaces van Dr. Elephant en Sparklens met inzichten voor prestatieafstemming van Hadoop- en Spark-jobs op Amazon EMR. Source: AWS Blogs
Clustergezondheid en herstel
Als een cluster storingen ondervindt, kun je door snel te diagnosticeren de downtime minimaliseren en dataverlies voorkomen.
Amazon CloudWatch en AWS CloudTrail bieden monitoring en waarschuwingen die helpen om onderliggende problemen te identificeren.
- Controleer CloudWatch-metrics: bekijk CPU-gebruik, geheugengebruik en disk I/O om te bepalen of resources onder- of overbenut zijn.
- Herstart mislukte instances: als een instance faalt door hardware- of softwareproblemen, kan herstarten of vervangen door een nieuwe instance de clusterstabiliteit herstellen.
- Start een nieuw cluster vanuit opgeslagen configuraties: om te herstellen van kritieke storingen kun je de kloonfunctie van Amazon EMR gebruiken om een nieuw cluster te starten met dezelfde instellingen en bootstrap-acties.
Diagram dat manieren laat zien om de clustergezondheid en het herstel in Amazon EMR te optimaliseren. Afbeelding gemaakt met Napkin AI
Kostenbeheer met Amazon EMR
Effectief kostenbeheer is cruciaal bij het draaien van workloads op Amazon EMR. De prijs is afhankelijk van factoren zoals instancetypes, opslag en dataverkeer, maar er zijn strategieën om uitgaven te optimaliseren.
Prijzen begrijpen
Amazon EMR-prijzen zijn primair gebaseerd op enkele kernfactoren: compute-instances, opslag en dataverkeer.
- On-Demand-instances laten je clusters opschalen naar behoefte en bieden flexibiliteit zonder langetermijnverplichtingen. Dit kan echter duur zijn voor doorlopende workloads.
- Spot Instances bieden een voordelig alternatief door ongebruikte EC2-capaciteit te gebruiken tegen aanzienlijk lagere tarieven. Hoewel Spot Instances veel kunnen besparen, zijn ze afhankelijk van beschikbaarheid en kunnen ze worden onderbroken.
Om kosten nauwkeurig te schatten, kun je de AWS Pricing Calculator gebruiken, die rekening houdt met clusterconfiguraties, instancetypes en werklast.
Door deze prijsstructuren te begrijpen, kun je beter voorspellen en budgetteren, wat zorgt voor efficiënte resource-allocatie.
Daarnaast kun je met AWS Savings Plans of Reserved Instances voor voorspelbare workloads lagere tarieven vastleggen en de totale kosten verlagen.
Kostenoptimalisatiestrategieën
Om kosten te optimaliseren, kun je verschillende best practices toepassen bij het draaien van Amazon EMR-workloads:
- Auto-scaling: door de clustergrootte dynamisch aan te passen aan de vraag, gebruik je alleen de benodigde resources. Dit voorkomt overprovisioning en verspilling.
- Right-sizing van instances: het kiezen van de meest geschikte instancetypes voor je workloads verbetert de prestaties en minimaliseert kosten. Compute-geoptimaliseerde instances zijn bijvoorbeeld geschikt voor rekenintensieve taken, terwijl geheugen-geoptimaliseerde instances beter zijn voor in-memory analytics.
- Spot Instances voor kostenbesparing: waar mogelijk kunnen Spot Instances de rekenkosten aanzienlijk verlagen. Om onderbrekingen op te vangen, draai je bij voorkeur fouttolerante workloads die met beëindigingen en herverdeling kunnen omgaan.
- Clusteroptimalisatie: door clusters efficiënt te configureren met het juiste aantal nodes en het afstellen van Hadoop- of Spark-instellingen verbeter je de prestaties zonder onnodige uitgaven.
- Beëindig inactieve clusters: door clusteractiviteit te monitoren en inactieve clusters uit te schakelen, voorkom je onnodige kosten.
- Gebruik managed services: bepaalde ETL-taken uitbesteden aan AWS Glue kan goedkoper zijn dan dezelfde processen op Amazon EMR draaien. AWS Glue is serverless en schaalt automatisch mee met de werklast, waardoor je geen idle compute hoeft te beheren of te betalen.
Met deze kostenoptimalisatiestrategieën vind je de juiste balans tussen prestaties en kostenefficiëntie.
Voor een breder begrip van kostenbeheer in de AWS-cloud, bekijk de AWS Cloud Technology and Services.
Conclusie
Na mijn werk met Amazon EMR waardeer ik hoe het big dataverwerking vereenvoudigt door clustermanagement, schaling en integratie met AWS-services te automatiseren. Het is essentieel voor iedereen die met grootschalige dataworkloads werkt—of je nu net begint of een bestaande pijplijn optimaliseert.
Als je cloudgebaseerde big data-oplossingen verkent, is EMR een krachtige, schaalbare optie om te overwegen!


Stel je voor dat je terabytes aan klanttransactiedata beheert en je huidige systeem bezwijkt onder de druk.
Je hebt een oplossing nodig die on demand schaalbaar is, kosten optimaliseert en integreert met je bestaande AWS-omgeving. Amazon Elastic MapReduce (EMR) kan daarbij helpen. Toen ik net met big data begon, had ik hetzelfde probleem—tot ik EMR ontdekte.
In deze gids lopen we alles door: van het opzetten van een EMR-cluster tot het uitvoeren van workloads, het optimaliseren van prestaties, het waarborgen van veiligheid, het oplossen van problemen en het beheren van kosten.
Wat is Amazon EMR?
Amazon EMR is een fully managed, clustergebaseerde service die big dataverwerking vereenvoudigt via geautomatiseerde provisioning, schaalvergroting en configuratie van open-sourceframeworks.
Je kunt er enorme hoeveelheden gestructureerde en ongestructureerde data mee analyseren zonder gedoe met het handmatig beheren van on-premises clusters.
De onderstaande afbeelding laat zien hoe Amazon EMR op EKS samenwerkt met andere AWS-services en geeft een visuele weergave van de integratie en workflow.
Een diagram dat laat zien hoe Amazon EMR integreert met Amazon EKS en andere AWS-services voor big dataverwerking. Source: AWS Docs
Als je nieuw bent bij AWS, raad ik aan om eerst deze Introduction to AWS-cursus te bekijken om een goede basis op te bouwen.
Enkele belangrijke functies van Amazon EMR zijn:
Door clusterbeheer en schaling te automatiseren, verlaag je de operationele complexiteit en kun je je richten op dataverwerking en -analyse.
Wil je eerst AWS-opslagservices zoals Amazon S3 beter begrijpen voordat je met Amazon EMR aan de slag gaat? Bekijk dan deze AWS Storage Tutorial.
Een Amazon EMR-cluster opzetten
Om een Amazon EMR-cluster op te zetten, moet je de EMR-service openen, het cluster aanmaken en het configureren voor jouw workload.
Een EMR-cluster maken
Log in op de AWS Management Console en ga naar de EMR-service om te beginnen.
Dit kan door in het zoekveld van de AWS Management Console te zoeken op "EMR" - zoals te zien is in de afbeelding hieronder.
Klik daar op “Create Cluster” - zoals te zien in de afbeelding hieronder.
De onderstaande afbeelding toont een screenshot van de huidige EMR-interface—die kan in de loop van de tijd veranderen, maar de kerninstellingen blijven vergelijkbaar.
Om je Amazon EMR-cluster te configureren, moet je meerdere instellingen afstemmen op jouw specifieke workload. Volg de onderstaande instructies:
01: Kies een big data-framework
EMR biedt meerdere frameworks, zoals Apache Spark voor in-memory processing, Hadoop voor gedistribueerde opslag en verwerking, en Presto voor interactieve SQL-queries.
Kies het framework dat het beste past bij jouw usecase.
02: Kies een instance type
Het instance type beïnvloedt prestaties en kosten. Een veelgebruikte keuze is
m5.xlarge, omdat dit een goede balans biedt tussen rekenkracht en betaalbaarheid.Voor geheugenintensieve workloads gebruik je
r5.xlarge, terwijlc5.xlargebeter geschikt is voor compute-intensieve taken.03: Configureer clusternodes
EMR-clusters bestaan uit drie typen nodes:
04: Configureer beveiliging en toegang
Stel EC2-sleutelpaar in voor SSH-toegang en configureer IAM-rollen om rechten te beheren.
Het is een goed idee om Kerberos-authenticatie of AWS Lake Formation in te schakelen voor extra beveiliging.
05: Stel netwerk en opslag in
Definieer VPC-instellingen, schakel auto-scaling in om de clustergrootte dynamisch aan te passen, en specificeer Amazon S3 als primaire opslaglocatie (
s3://your-bucket-name/).06: Start het cluster
Klik na het controleren van de configuratie op "Create Cluster" om te starten.
Het cluster heeft enkele minuten nodig om te initialiseren voordat het beschikbaar is.
De onderstaande afbeelding markeert de interface waar je het cluster kunt aanmaken.
Applicaties en afhankelijkheden configureren
Zodra het cluster draait, kun je het verfijnen door vooraf geïnstalleerde applicaties te selecteren en bootstrap-acties te configureren:
pip install pandas numpy)Een goede configuratie zorgt ervoor dat je EMR-cluster volledig is geoptimaliseerd voor de workload, wat de verwerkingstijd en operationele kosten verlaagt.
Werken met Amazon EMR
Als je EMR-cluster is opgezet en geconfigureerd, is de volgende stap om met je data aan de slag te gaan.
Data uploaden naar Amazon EMR
Amazon EMR leunt primair op Amazon S3 om inputdatasets op te slaan en outputresultaten te bewaren.
In tegenstelling tot HDFS, dat data binnen het cluster opslaat, biedt S3 duurzaamheid, schaalbaarheid en kostenefficiëntie, waardoor het de voorkeursoptie is voor databeheer in EMR.
Volg deze stappen om data naar Amazon S3 te uploaden:
01: Ga naar de S3-console
Log in op de AWS Management Console en open de Amazon S3-service.
02: Maak of selecteer een bucket
Kies een bestaande bucket of maak een nieuwe. Zorg dat de bucket in dezelfde regio staat als je EMR-cluster om de latency te minimaliseren.
De onderstaande afbeelding toont het proces van het aanmaken van een Amazon S3-bucket.
Onthoud bij het aanmaken van een bucket dat de bucketnaam wereldwijd uniek moet zijn en moet voldoen aan de AWS-naamgevingsregels. Kies een naam die je usecase weerspiegelt en aan deze vereisten voldoet.
03: Upload databestanden
Klik op "Upload", selecteer de benodigde bestanden en stel toegangsrechten in.
De onderstaande afbeelding markeert de interface waar je bestanden naar een Amazon S3-bucket kunt uploaden.
Je kunt ook de AWS CLI gebruiken om programmatisch bestanden te uploaden.
Voordat je dit doet, moet je controleren of de AWS CLI is geïnstalleerd en geconfigureerd met de juiste referenties door het volgende uit te voeren:
Je wordt dan gevraagd je AWS Access Key ID, Secret Access Key, regio en outputindeling in te voeren om je sessie te authenticeren. Je kunt de bovenstaande stap overslaan als de AWS CLI al is geconfigureerd.
Na de configuratie kun je bestanden uploaden met het volgende commando:
04: Toegang tot data vanuit EMR
Zodra de data is geüpload, kun je deze vanuit EMR benaderen via een S3-pad:
s3://your-bucket-name/data/Applicaties zoals Spark, Hadoop en Hive kunnen de data vervolgens direct vanuit S3 verwerken.
Alternatieve dataopslagopties
Spark- of Hadoop-jobs uitvoeren
Na het uploaden van data kun je deze verwerken met Apache Spark, Hadoop of andere big data-frameworks.
EMR ondersteunt het uitvoeren van jobs via de AWS CLI, de EMR-console of via directe SSH-toegang.
Een Spark-job uitvoeren
Om een Spark-job in te dienen, maak je via SSH verbinding met het cluster en gebruik je het spark-submit-commando:
Je kunt ook jobs indienen via de AWS EMR-functie "Steps" - waarmee je jobs kunt automatiseren zonder het cluster handmatig te benaderen.
Wil je eerst de basis verkennen voordat je Spark-jobs op EMR draait? De Big Data Fundamentals with PySpark-coursus is een goed startpunt. Als je workflow het opschonen van rommelige datasets omvat, vind je de Cleaning Data with PySpark-coursus vast bijzonder nuttig.
Een Hadoop MapReduce-job uitvoeren
Voor Hadoop-jobs gebruik je de command-line interface:
Hadoop-jobs kunnen ook worden beheerd met AWS Step Functions om workflows te automatiseren.
Effectieve beveiliging en toegangscontrole zijn cruciaal bij het uitvoeren van big data-jobs.
Omdat Spark- en Hadoop-jobs met gevoelige data werken, integreert Amazon EMR met Apache Ranger om fijnmazige toegangscontrole en rechten af te dwingen.
De onderstaande afbeelding toont een voorbeeldarchitectuur van deze integratie en laat zien hoe beveiligingsbeleid wordt toegepast op EMR-clusters.
Clusterprestaties monitoren
Om efficiënte verwerking te garanderen, monitor je je EMR-cluster met Amazon CloudWatch, Ganglia en de Spark UI.
Deze tools geven realtime inzicht in resourcegebruik, jobvoortgang en mogelijke knelpunten.
Belangrijke monitoringtools
Best practices voor prestatie-optimalisatie
spark.executor.memory), parallelisme (spark.default.parallelism) en de Hadoop-blokgrootte aan voor optimale prestaties.Door deze stappen te volgen, kun je grote datasets efficiënt verwerken terwijl je EMR-cluster kosteneffectief en performant blijft.