För att förbättra en Spark-applikations effektivitet är det viktigt att övervaka dess prestanda och beteende. I det här inlägget visar vi hur man publicerar detaljerade Spark-statistik från Amazon EMR till amazoncloudwatch. Detta ger dig möjligheten att identifiera flaskhalsar samtidigt som du optimerar resursutnyttjandet.
CloudWatch tillhandahåller en robust, skalbar och kostnadseffektiv övervakningslösning för AWS-resurser och applikationer, med kraftfulla anpassningsalternativ och sömlös integration med andra AWS-tjänster. Som standard skickar Amazon EMR grundläggande mått till CloudWatch för att spåra aktiviteten och hälsan hos ett kluster. Sparks konfigurerbara mätsystem gör att mätvärden kan samlas in i en mängd olika sänkor, inklusive HTTP-, JMX- och CSV-filer, men ytterligare konfiguration krävs för att Spark ska kunna publicera mätvärden till CloudWatch.
Lösningsöversikt
Denna lösning inkluderar Spark-konfiguration för att skicka mätvärden till en anpassad diskbänk. Den anpassade diskbänken samlar bara in mätvärdena som definieras i en Metricfilter.json-fil. Den använder CloudWatch-agenten för att publicera mätvärdena till ett anpassat Cloudwatch-namnområde. Bootstrap-åtgärdsskriptet som ingår är ansvarigt för att installera och konfigurera CloudWatch-agenten och det metriska biblioteket på Amazon Elastic Compute Cloud (Amazon EC2) EMR-instanser. En CloudWatch-instrumentpanel kan ge omedelbar insikt i prestandan för en applikation.
Följande diagram illustrerar lösningsarkitekturen och arbetsflödet.
Arbetsflödet innehåller följande steg:
- Användare startar ett Spark EMR-jobb och skapar ett steg på EMR-klustret. Med Apache Spark fördelas arbetsbelastningen över de olika noderna i EMR-klustret.
- I varje nod (EC2-instans) i klustret, fångar ett Spark-bibliotek in och skickar metrisk data till en CloudWatch-agent, som aggregerar metrisk data innan den skickas till CloudWatch varje 30 sekunder.
- Användare kan se statistiken för åtkomst till det anpassade namnutrymmet på CloudWatch-konsolen.
Vi tillhandahåller en AWS molnformation mall i detta inlägg som en allmän guide. Mallen visar hur man konfigurerar en CloudWatch-agent på Amazon EMR för att skicka Spark-mätvärden till CloudWatch. Du kan granska och anpassa den efter behov för att inkludera dina Amazon EMR-säkerhetskonfigurationer. Som en bästa praxis rekommenderar vi att du inkluderar dina Amazon EMR-säkerhetskonfigurationer i mallen till kryptera data under överföring.
Du bör också vara medveten om att vissa av resurserna som används av denna stack medför kostnader när de fortfarande används. Dessutom, EMR-mått inte ådra dig CloudWatch-kostnader. Anpassade mätvärden medför dock avgifter baserade på CloudWatch-mätvärdesprissättning. För mer information, se Amazon CloudWatch-priser.
I nästa avsnitt går vi igenom följande steg:
- Skapa och ladda upp måttenhetsbiblioteket, installationsskriptet och filterdefinitionen till en Amazon enkel lagringstjänst (Amazon S3) hink.
- Använd CloudFormation-mallen för att skapa följande resurser:
- Övervaka Spark-statistiken på CloudWatch-konsolen.
Förutsättningar
Det här inlägget förutsätter att du har följande:
- An AWS-konto.
- En S3-hink för att lagra bootstrap-skriptet, biblioteket och metriskt filterdefinition.
- En VPC skapad i Amazon Virtual Private Cloud (Amazon VPC), där ditt EMR-kluster kommer att lanseras.
- Standard IAM-tjänstroller för Amazon EMR-behörigheter till AWS-tjänster och resurser. Du kan skapa dessa roller med kommandot aws emr create-default-roles i AWS-kommandoradsgränssnitt (AWS CLI).
- Ett valfritt EC2-nyckelpar, om du planerar att ansluta till ditt kluster via SSH snarare än Sessionshanteraren, en förmåga av AWS systemchef.
Definiera nödvändiga mätvärden
För att undvika att skicka onödig data till CloudWatch implementerar vår lösning ett metriskt filter. Granska Spark dokumentation för att bekanta dig med namnområdena och deras tillhörande mätvärden. Bestäm vilka mätvärden som är relevanta för din specifika applikation och resultatmål. Olika applikationer kan kräva olika mätvärden för att övervaka, beroende på arbetsbelastningen, krav på databearbetning och optimeringsmål. De metriska namnen du vill övervaka bör definieras i Metricfilter.json-filen, tillsammans med deras associerade namnområden.
Vi har skapat ett exempel på Metricfilter.json-definition, som inkluderar att fånga mätvärden relaterade till data-I/O, sophämtning, minne och CPU-tryck, och Spark-jobb-, steg- och uppgiftsmått.
Observera att vissa mätvärden inte är tillgängliga i alla Spark-versioner (till exempel introducerades appStatus i Spark 3.0).
Skapa och ladda upp de nödvändiga filerna till en S3-bucket
För mer information, se Laddar upp objekt och Installera och köra CloudWatch-agenten på dina servrar.
Utför följande steg för att skapa och ladda upp bootstrap-skriptet:
- På Amazon S3-konsolen väljer du din S3-hink.
- På Objekt fliken, välj Ladda.
- Välja Lägg till filer, välj sedan Metricfilter.json, installer.shoch exempeljob.sh filer.
- Ladda dessutom upp
emr-custom-cw-sink-0.0.1.jar
metrics-biblioteksfil som motsvarar Amazon EMR-versionen som du kommer att använda: - Välja Ladda, och notera S3 URI:erna för filerna.
Tillhandahålla resurser med CloudFormation-mallen
Välja Starta stack för att starta en CloudFormation-stack i ditt konto och distribuera mallen:
Den här mallen skapar en IAM-roll, IAM-instansprofil, EMR-kluster och CloudWatch-instrumentpanel. Klustret startar en grundläggande Exempelapplikation för gnista. Du kommer att faktureras för de AWS-resurser som används om du skapar en stack från den här mallen.
CloudFormation-guiden kommer att be dig att ändra eller tillhandahålla dessa parametrar:
- InstanceType - Den typ av instans för alla instansgrupper. Standard är m5.2xlarge.
- InstanceCountCore – Antalet instanser i kärninstansgruppen. Standard är 4.
- EMRReaseLabel - Den Amazon EMR releaseetikett du vill använda. Standard är emr-6.9.0.
- BootstrapScriptPath – S3-sökvägen för installationsbootstrap-skriptet installationer.sh som du kopierade tidigare.
- MetricFilterPath – S3-sökvägen för din Metricfilter.json-definition som du kopierade tidigare.
- MetricsLibraryPath – S3-sökvägen till ditt CloudWatch emr-custom-cw-sink-0.0.1.jar-bibliotek som du kopierade tidigare.
- CloudWatchNamespace – Namnet på den anpassade CloudWatch-namnrymden som ska användas.
- SparkDemoApplicationPath – S3-sökvägen till ditt exempeljob.sh-skript som du kopierade tidigare.
- subnät – EC2-undernätet där klustret startar. Du måste ange denna parameter.
- EC2KeyPairName – Ett valfritt EC2-nyckelpar för anslutning till klusternoder, som ett alternativ till Session Manager.
Se mätvärdena
Efter att CloudFormation-stacken har distribuerats framgångsrikt, startar exempeljobbet automatiskt och tar cirka 15 minuter att slutföra. Välj på CloudWatch-konsolen Instrumentpaneler i navigeringsfönstret. Filtrera sedan listan efter prefixet SparkMonitoring.
Exempelinstrumentpanelen innehåller information om klustret och en översikt över Spark-jobb, stadier och uppgifter. Mätvärden är också tillgängliga under ett anpassat namnutrymme som börjar med EMRCustomSparkCloudWatchSink
.
Minne, CPU, I/O och ytterligare uppgiftsfördelningsmått ingår också.
Slutligen finns detaljerade Java-sopsamlingsmått tillgängliga per utförare.
Städa upp
För att undvika framtida debiteringar på ditt konto, radera resurserna du skapade i den här genomgången. EMR-klustret kommer att medföra avgifter så länge klustret är aktivt, så stoppa det när du är klar. Slutför följande steg:
- På CloudFormation-konsolen, i navigeringsfönstret, välj Stacks.
- Välj den stack du startade (
EMR-CloudWatch-Demo
), sedan Välj Radera. - Töm S3-hinken du skapade.
- Ta bort S3-hinken du skapade.
Slutsats
Nu när du har slutfört stegen i den här genomgången, kör CloudWatch-agenten på dina klustervärdar och konfigurerad för att skicka Spark-mätvärden till CloudWatch. Med den här funktionen kan du effektivt övervaka hälsan och prestanda för dina Spark-jobb som körs på Amazon EMR, upptäcka kritiska problem i realtid och snabbt identifiera grundorsaker.
Du kan paketera och distribuera den här lösningen genom en CloudFormation-mall som den här exempelmallen, som skapar IAM-instansprofilrollen, CloudWatch-instrumentpanelen och EMR-klustret. Källkoden för biblioteket finns tillgänglig på GitHub för anpassning.
För att ta detta längre, överväg att använda dessa mätvärden i CloudWatch-larm. Du kan samla dem med andra larm i en sammansatt larm eller konfigurera larmåtgärder som att skicka Amazon enkel meddelandetjänst (Amazon SNS) aviseringar för att trigga händelsedrivna processer som t.ex AWS Lambda funktioner.
Om författaren
Le Clue Lubbe är chefsingenjör på AWS. Han arbetar med våra största företagskunder för att lösa några av deras mest komplexa tekniska problem. Han driver breda lösningar genom innovation för att påverka och förbättra livet för våra kunder.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Fordon / elbilar, Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- ChartPrime. Höj ditt handelsspel med ChartPrime. Tillgång här.
- BlockOffsets. Modernisera miljökompensation ägande. Tillgång här.
- Källa: https://aws.amazon.com/blogs/big-data/monitor-apache-spark-applications-on-amazon-emr-with-amazon-cloudwatch/
- :är
- :inte
- :var
- 1
- 100
- 107
- 15%
- 20
- 30
- 9
- a
- förmåga
- åtkomst
- Konto
- bekant
- tvärs
- Handling
- åtgärder
- aktiv
- aktivitet
- Annat
- Dessutom
- Recensioner
- larm
- Alla
- tillåter
- längs
- också
- alternativ
- amason
- Amazon EC2
- Amazon EMR
- Amazon Web Services
- an
- och
- Apache
- Apache Spark
- Ansökan
- tillämpningar
- cirka
- arkitektoniska
- arkitektur
- ÄR
- AS
- associerad
- antar
- At
- Författaren
- automatiskt
- tillgänglig
- undvika
- medveten
- AWS
- baserat
- grundläggande
- BE
- innan
- BÄST
- Bootstrap
- bred
- men
- by
- KAN
- kapacitet
- fångar
- Fångande
- Orsakerna
- vissa
- avgifter
- Välja
- kluster
- koda
- samla
- samling
- samlar
- fullborda
- Avslutade
- komplex
- Compute
- konfiguration
- konfigurerad
- Kontakta
- Anslutning
- Tänk
- Konsol
- Kärna
- motsvarar
- kostnadseffektiv
- Kostar
- kunde
- CPU
- skapa
- skapas
- skapar
- Skapa
- kritisk
- beställnings
- Kunder
- anpassning
- skräddarsy
- instrumentbräda
- datum
- databehandling
- Standard
- definierade
- definition
- demonstrera
- demonstrerar
- beroende
- distribuera
- utplacerade
- vecklas ut
- detaljerad
- Bestämma
- olika
- distribueras
- fördelning
- gjort
- inte
- enheter
- varje
- Tidigare
- effektivt
- effektivitet
- möjliggöra
- ingenjör
- Företag
- företagskunder
- väsentlig
- Eter (ETH)
- exempel
- Leverans
- Fil
- Filer
- filtrera
- efter
- För
- från
- funktioner
- ytterligare
- framtida
- Allmänt
- skaffa sig
- Ge
- Go
- Mål
- Grupp
- Gruppens
- styra
- Har
- he
- Hälsa
- värdar
- Hur ser din drömresa ut
- How To
- Men
- html
- http
- HTTPS
- IAM
- identifiera
- identifiera
- if
- illustrerar
- som illustrerar
- Inverkan
- redskap
- förbättra
- in
- innefattar
- ingår
- innefattar
- Inklusive
- informationen
- Innovation
- insikt
- Installationen
- installera
- exempel
- omedelbar
- integrering
- in
- introducerade
- problem
- IT
- DESS
- java
- Jobb
- Lediga jobb
- json
- Nyckel
- största
- lansera
- lanserades
- lanserar
- Bibliotek
- livet
- tycka om
- linje
- Lista
- Lång
- chef
- Maj..
- Minne
- metriska
- Metrics
- minuter
- modifiera
- Övervaka
- övervakning
- mer
- mest
- måste
- namn
- namn
- Navigering
- behövs
- Nästa
- nod
- noder
- Notera
- anmälan
- anmälningar
- antal
- mål
- of
- on
- endast
- optimering
- optimera
- Tillbehör
- or
- Övriga
- vår
- Översikt
- paket
- par
- panelen
- parameter
- parametrar
- bana
- för
- prestanda
- behörigheter
- Planen
- plato
- Platon Data Intelligence
- PlatonData
- porträtt
- Inlägg
- den mäktigaste
- praktiken
- tryck
- prissättning
- Principal
- privat
- problem
- processer
- bearbetning
- Profil
- ge
- ger
- publicera
- Tryck
- skjuter
- Tryckande
- snabbt
- snarare
- verklig
- realtid
- rekommenderar
- relaterad
- frigöra
- relevanta
- förblir
- kräver
- Obligatorisk
- Krav
- resurs
- resursanvändning
- Resurser
- ansvarig
- översyn
- robusta
- Roll
- roller
- rot
- rinnande
- skalbar
- sömlös
- §
- sektioner
- säkerhet
- se
- sända
- skicka
- sänder
- service
- Tjänster
- session
- skall
- Enkelt
- So
- lösning
- Lösningar
- LÖSA
- några
- Källa
- källkod
- Gnista
- specifik
- stapel
- Etapp
- stadier
- starta
- Starta
- startar
- Steg
- Steg
- Sluta
- förvaring
- undernät
- Framgångsrikt
- sådana
- SAMMANFATTNING
- system
- System
- Ta
- tar
- uppgift
- uppgifter
- Teknisk
- mall
- än
- den där
- Smakämnen
- källan
- deras
- Dem
- sedan
- Dessa
- de
- detta
- Genom
- tid
- till
- spår
- utlösa
- under
- användning
- Begagnade
- med hjälp av
- Återvinnare
- mängd
- version
- utsikt
- Virtuell
- genomgång
- vill
- var
- we
- webb
- webbservice
- när
- som
- medan
- kommer
- med
- arbetsflöde
- fungerar
- X
- jaml
- dig
- Din
- zephyrnet