For at forbedre en Spark-applikations effektivitet er det vigtigt at overvåge dens ydeevne og adfærd. I dette indlæg demonstrerer vi, hvordan man udgiver detaljerede Spark-metrics fra Amazon EMR til amazoncloudwatch. Dette vil give dig mulighed for at identificere flaskehalse og samtidig optimere ressourceudnyttelsen.
CloudWatch leverer en robust, skalerbar og omkostningseffektiv overvågningsløsning til AWS-ressourcer og -applikationer med kraftfulde tilpasningsmuligheder og problemfri integration med andre AWS-tjenester. Som standard sender Amazon EMR grundlæggende målinger til CloudWatch for at spore aktiviteten og sundheden for en klynge. Sparks konfigurerbare metric-system gør det muligt at indsamle metrics i en række forskellige sinks, herunder HTTP-, JMX- og CSV-filer, men yderligere konfiguration er påkrævet for at sætte Spark i stand til at publicere metrics til CloudWatch.
Løsningsoversigt
Denne løsning inkluderer Spark-konfiguration til at sende metrics til en brugerdefineret vask. Den brugerdefinerede sink indsamler kun de metrics, der er defineret i en Metricfilter.json-fil. Det bruger CloudWatch-agenten til at offentliggøre metrics til et tilpasset Cloudwatch-navneområde. Det inkluderede bootstrap-handlingsscript er ansvarligt for at installere og konfigurere CloudWatch-agenten og det metriske bibliotek på Amazon Elastic Compute Cloud (Amazon EC2) EMR-tilfælde. Et CloudWatch-dashboard kan give øjeblikkelig indsigt i en applikations ydeevne.
Følgende diagram illustrerer løsningsarkitekturen og arbejdsgangen.
Arbejdsgangen omfatter følgende trin:
- Brugere starter et Spark EMR-job og skaber et trin på EMR-klyngen. Med Apache Spark er arbejdsbyrden fordelt på tværs af de forskellige noder i EMR-klyngen.
- I hver node (EC2-instans) af klyngen fanger og skubber et Spark-bibliotek metriske data til en CloudWatch-agent, som samler de metriske data, før de skubbes til CloudWatch hvert 30 sekund.
- Brugere kan se metrics for at få adgang til det tilpassede navneområde på CloudWatch-konsollen.
Vi leverer en AWS CloudFormation skabelon i dette indlæg som en generel vejledning. Skabelonen viser, hvordan man konfigurerer en CloudWatch-agent på Amazon EMR til at skubbe Spark-metrics til CloudWatch. Du kan gennemgå og tilpasse det efter behov for at inkludere dine Amazon EMR-sikkerhedskonfigurationer. Som en bedste praksis anbefaler vi at inkludere dine Amazon EMR-sikkerhedskonfigurationer i skabelonen til kryptere data under transport.
Du skal også være opmærksom på, at nogle af de ressourcer, der implementeres af denne stak, medfører omkostninger, når de forbliver i brug. Derudover EMR-målinger ikke pådrage sig CloudWatch-omkostninger. Tilpassede metrics medfører dog gebyrer baseret på CloudWatch-metrics-priser. For mere information, se Amazon CloudWatch-priser.
I de næste afsnit gennemgår vi følgende trin:
- Opret og upload metrics-biblioteket, installationsscriptet og filterdefinitionen til en Amazon Simple Storage Service (Amazon S3) spand.
- Brug CloudFormation-skabelonen til at oprette følgende ressourcer:
- Overvåg Spark-metrics på CloudWatch-konsollen.
Forudsætninger
Dette indlæg forudsætter, at du har følgende:
- An AWS-konto.
- En S3-bøtte til lagring af bootstrap-scriptet, biblioteket og metrisk filterdefinition.
- En VPC oprettet i Amazon Virtual Private Cloud (Amazon VPC), hvor din EMR-klynge vil blive lanceret.
- Standard IAM-serviceroller for Amazon EMR-tilladelser til AWS-tjenester og -ressourcer. Du kan oprette disse roller med kommandoen aws emr create-default-roles i AWS kommandolinjegrænseflade (AWS CLI).
- Et valgfrit EC2-nøglepar, hvis du planlægger at oprette forbindelse til din klynge via SSH i stedet for Session Manager, en evne til AWS System Manager.
Definer de nødvendige målinger
For at undgå at sende unødvendige data til CloudWatch implementerer vores løsning et metrisk filter. Gennemgå Spark dokumentation for at stifte bekendtskab med navneområderne og deres tilknyttede metrics. Bestem, hvilke metrics der er relevante for din specifikke applikation og præstationsmål. Forskellige applikationer kan kræve forskellige metrics at overvåge, afhængigt af arbejdsbyrden, databehandlingskrav og optimeringsmål. De metriske navne, du gerne vil overvåge, skal defineres i Metricfilter.json-filen sammen med deres tilknyttede navnerum.
Vi har lavet et eksempel på Metricfilter.json-definition, som omfatter indfangning af metrics relateret til data-I/O, skraldindsamling, hukommelse og CPU-tryk og Spark-job-, scene- og opgavemetrics.
Bemærk, at visse metrics ikke er tilgængelige i alle Spark-udgivelsesversioner (for eksempel blev appStatus introduceret i Spark 3.0).
Opret og upload de nødvendige filer til en S3-bøtte
For mere information, se Uploader objekter , Installation og kørsel af CloudWatch-agenten på dine servere.
For at oprette og uploade bootstrap-scriptet skal du udføre følgende trin:
- På Amazon S3-konsollen skal du vælge din S3-spand.
- På Objekter fanebladet, vælg Upload.
- Vælg Tilføj filer, vælg derefter Metricfilter.json, installer.shog eksempeljob.sh filer.
- Derudover skal du uploade
emr-custom-cw-sink-0.0.1.jar
metrics-biblioteksfil, der svarer til Amazon EMR-udgivelsesversionen, du vil bruge: - Vælg Upload, og noter S3 URI'erne for filerne.
Levering af ressourcer med CloudFormation-skabelonen
Vælg Start Stack for at starte en CloudFormation-stak i din konto og implementere skabelonen:
Denne skabelon opretter en IAM-rolle, IAM-instansprofil, EMR-klynge og CloudWatch-dashboard. Klyngen starter en grundlæggende Eksempel på gnistapplikation. Du vil blive faktureret for de brugte AWS-ressourcer, hvis du opretter en stak fra denne skabelon.
CloudFormation-guiden vil bede dig om at ændre eller angive disse parametre:
- InstanceType - Den type instans for alle instansgrupper. Standard er m5.2xlarge.
- InstanceCountCore – Antallet af instanser i kerneinstansgruppen. Standard er 4.
- EMRReaseLabel - Den Amazon EMR release label du vil bruge. Standarden er emr-6.9.0.
- BootstrapScriptPath – S3-stien til installationsbootstrap-scriptet for installer.sh, som du kopierede tidligere.
- MetricFilterPath – S3-stien til din Metricfilter.json-definition, som du kopierede tidligere.
- MetricsLibraryPath – S3-stien til dit CloudWatch emr-custom-cw-sink-0.0.1.jar-bibliotek, som du kopierede tidligere.
- CloudWatchNamespace – Navnet på det brugerdefinerede CloudWatch-navneområde, der skal bruges.
- SparkDemoApplicationPath – S3-stien til dit examplejob.sh-script, som du kopierede tidligere.
- Subnet – EC2-undernettet, hvor klyngen starter. Du skal angive denne parameter.
- EC2KeyPairName – Et valgfrit EC2 nøglepar til tilslutning til klynge noder, som et alternativ til Session Manager.
Se metrics
Efter at CloudFormation-stakken er implementeret, starter eksempeljobbet automatisk og tager cirka 15 minutter at fuldføre. På CloudWatch-konsollen skal du vælge Dashboards i navigationsruden. Filtrer derefter listen efter præfikset SparkMonitoring.
Eksempel-dashboardet indeholder oplysninger om klyngen og en oversigt over Spark-job, stadier og opgaver. Metrics er også tilgængelige under et brugerdefineret navneområde, der starter med EMRCustomSparkCloudWatchSink
.
Hukommelse, CPU, I/O og yderligere opgavefordelingsmetrikker er også inkluderet.
Endelig er detaljerede Java-affaldsindsamlingsmetrikker tilgængelige pr.
Ryd op
For at undgå fremtidige debiteringer på din konto skal du slette de ressourcer, du oprettede i denne gennemgang. EMR-klyngen vil pålægges gebyrer, så længe klyngen er aktiv, så stop den, når du er færdig. Udfør følgende trin:
- På CloudFormation-konsollen skal du i navigationsruden vælge Stakke.
- Vælg den stak du har startet (
EMR-CloudWatch-Demo
), vælg derefter Slette. - Tøm S3-spanden du har skabt.
- Slet S3-bøtten du har skabt.
Konklusion
Nu hvor du har gennemført trinene i denne gennemgang, kører CloudWatch-agenten på dine klyngeværter og er konfigureret til at skubbe Spark-metrics til CloudWatch. Med denne funktion kan du effektivt overvåge sundheden og ydeevnen af dine Spark-job, der kører på Amazon EMR, opdage kritiske problemer i realtid og hurtigt identificere grundlæggende årsager.
Du kan pakke og implementere denne løsning gennem en CloudFormation-skabelon som denne eksempelskabelon, der opretter IAM-instansprofilrollen, CloudWatch-dashboardet og EMR-klyngen. Kildekoden til biblioteket er tilgængelig på GitHub til tilpasning.
For at tage dette videre kan du overveje at bruge disse metrics i CloudWatch-alarmer. Du kan samle dem med andre alarmer i en sammensat alarm eller konfigurer alarmhandlinger såsom afsendelse Amazon Simple Notification Service (Amazon SNS) notifikationer for at udløse hændelsesdrevne processer som f.eks AWS Lambda funktioner.
Om forfatteren
Le Clue Lubbe er Principal Engineer hos AWS. Han arbejder med vores største virksomhedskunder for at løse nogle af deres mest komplekse tekniske problemer. Han driver brede løsninger gennem innovation for at påvirke og forbedre livet for vores kunder.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk dig selv. Adgang her.
- PlatoAiStream. Web3 intelligens. Viden forstærket. Adgang her.
- PlatoESG. Automotive/elbiler, Kulstof, CleanTech, Energi, Miljø, Solenergi, Affaldshåndtering. Adgang her.
- PlatoHealth. Bioteknologiske og kliniske forsøgs intelligens. Adgang her.
- ChartPrime. Løft dit handelsspil med ChartPrime. Adgang her.
- BlockOffsets. Modernisering af miljømæssig offset-ejerskab. Adgang her.
- Kilde: https://aws.amazon.com/blogs/big-data/monitor-apache-spark-applications-on-amazon-emr-with-amazon-cloudwatch/
- :er
- :ikke
- :hvor
- 1
- 100
- 107
- 15 %
- 20
- 30
- 9
- a
- evne
- Adgang
- Konto
- bekendt
- tværs
- Handling
- aktioner
- aktiv
- aktivitet
- Yderligere
- Derudover
- Agent
- alarm
- Alle
- tillader
- sammen
- også
- alternativ
- Amazon
- Amazon EC2
- Amazon EMR
- Amazon Web Services
- an
- ,
- Apache
- Apache Spark
- Anvendelse
- applikationer
- cirka
- arkitektonisk
- arkitektur
- ER
- AS
- forbundet
- antager
- At
- forfatter
- automatisk
- til rådighed
- undgå
- opmærksom på
- AWS
- baseret
- grundlæggende
- BE
- før
- BEDSTE
- Bootstrap
- bred
- men
- by
- CAN
- kapacitet
- fanger
- Optagelse
- årsager
- vis
- afgifter
- Vælg
- Cluster
- kode
- indsamler
- samling
- indsamler
- fuldføre
- Afsluttet
- komplekse
- Compute
- Konfiguration
- konfigureret
- Tilslut
- Tilslutning
- Overvej
- Konsol
- Core
- svarer
- omkostningseffektiv
- Omkostninger
- kunne
- CPU
- skabe
- oprettet
- skaber
- Oprettelse af
- kritisk
- skik
- Kunder
- tilpasning
- tilpasse
- instrumentbræt
- data
- databehandling
- Standard
- definerede
- definition
- demonstrere
- demonstrerer
- Afhængigt
- indsætte
- indsat
- udruller
- detaljeret
- Bestem
- forskellige
- distribueret
- fordeling
- færdig
- Dont
- drev
- hver
- tidligere
- effektivt
- effektivitet
- muliggøre
- ingeniør
- Enterprise
- virksomhedskunder
- væsentlig
- Ether (ETH)
- eksempel
- Feature
- File (Felt)
- Filer
- filtrere
- efter
- Til
- fra
- funktioner
- yderligere
- fremtiden
- Generelt
- få
- Giv
- Go
- Mål
- gruppe
- Gruppens
- vejlede
- Have
- he
- Helse
- værter
- Hvordan
- How To
- Men
- HTML
- http
- HTTPS
- IAM
- identificere
- identificere
- if
- illustrerer
- illustrerer
- KIMOs Succeshistorier
- redskaber
- Forbedre
- in
- omfatter
- medtaget
- omfatter
- Herunder
- oplysninger
- Innovation
- indsigt
- installation
- installation
- instans
- øjeblikkelig
- integration
- ind
- introduceret
- spørgsmål
- IT
- ITS
- Java
- Job
- Karriere
- json
- Nøgle
- største
- lancere
- lanceret
- lanceringer
- Bibliotek
- Livet
- ligesom
- Line (linje)
- Liste
- Lang
- leder
- Kan..
- Hukommelse
- metrisk
- Metrics
- minutter
- ændre
- Overvåg
- overvågning
- mere
- mest
- skal
- navn
- navne
- Navigation
- behov
- næste
- node
- noder
- Bemærk
- underretning
- meddelelser
- nummer
- målsætninger
- of
- on
- kun
- optimering
- optimering
- Indstillinger
- or
- Andet
- vores
- oversigt
- pakke
- par
- brød
- parameter
- parametre
- sti
- per
- ydeevne
- Tilladelser
- fly
- plato
- Platon Data Intelligence
- PlatoData
- portræt
- Indlæg
- vigtigste
- praksis
- tryk
- prissætning
- Main
- private
- problemer
- Processer
- forarbejdning
- Profil
- give
- giver
- offentliggøre
- Skub ud
- skubber
- Pushing
- hurtigt
- hellere
- ægte
- realtid
- anbefaler
- relaterede
- frigive
- relevant
- forblive
- kræver
- påkrævet
- Krav
- ressource
- ressourceudnyttelse
- Ressourcer
- ansvarlige
- gennemgå
- robust
- roller
- roller
- rod
- kører
- skalerbar
- sømløs
- Sektion
- sektioner
- sikkerhed
- se
- send
- afsendelse
- sender
- tjeneste
- Tjenester
- Session
- bør
- Simpelt
- So
- løsninger
- Løsninger
- SOLVE
- nogle
- Kilde
- kildekode
- Spark
- specifikke
- stable
- Stage
- etaper
- starte
- Starter
- starter
- Trin
- Steps
- Stands
- opbevaring
- subnet
- Succesfuld
- sådan
- RESUMÉ
- systemet
- Systemer
- Tag
- tager
- Opgaver
- opgaver
- Teknisk
- skabelon
- end
- at
- The Source
- deres
- Them
- derefter
- Disse
- de
- denne
- Gennem
- tid
- til
- spor
- udløse
- under
- brug
- anvendte
- ved brug af
- udnytter
- række
- udgave
- Specifikation
- Virtual
- går igennem
- ønsker
- var
- we
- web
- webservices
- hvornår
- som
- mens
- vilje
- med
- workflow
- virker
- X
- yaml
- dig
- Din
- zephyrnet