Pentru a îmbunătăți eficiența unei aplicații Spark, este esențial să monitorizați performanța și comportamentul acesteia. În această postare, demonstrăm cum să publicăm valorile Spark detaliate din Amazon EMR la Amazon CloudWatch. Acest lucru vă va oferi posibilitatea de a identifica blocajele în timp ce optimizați utilizarea resurselor.
CloudWatch oferă o soluție de monitorizare robustă, scalabilă și rentabilă pentru resursele și aplicațiile AWS, cu opțiuni puternice de personalizare și integrare perfectă cu alte servicii AWS. În mod implicit, Amazon EMR trimite metrici de bază la CloudWatch pentru a urmări activitatea și starea de sănătate a unui cluster. Sistemul de valori configurabile de la Spark permite colectarea valorilor într-o varietate de canale, inclusiv fișiere HTTP, JMX și CSV, dar este necesară o configurație suplimentară pentru a permite Spark să publice valorile în CloudWatch.
Prezentare generală a soluțiilor
Această soluție include configurația Spark pentru a trimite valori la un receptor personalizat. Receptatorul personalizat colectează numai valorile definite într-un fișier Metricfilter.json. Utilizează agentul CloudWatch pentru a publica valorile într-un spațiu de nume Cloudwatch personalizat. Scriptul de acțiune bootstrap inclus este responsabil pentru instalarea și configurarea agentului CloudWatch și a bibliotecii de metrici de pe Cloud Elastic de calcul Amazon (Amazon EC2) Instanțele EMR. Un tablou de bord CloudWatch poate oferi o perspectivă instantanee asupra performanței unei aplicații.
Următoarea diagramă ilustrează arhitectura soluției și fluxul de lucru.
Fluxul de lucru include următorii pași:
- Utilizatorii încep un job Spark EMR, creând un pas pe clusterul EMR. Cu Apache Spark, sarcina de lucru este distribuită între diferitele noduri ale clusterului EMR.
- În fiecare nod (instanță EC2) al clusterului, o bibliotecă Spark captează și transmite date de metrică către un agent CloudWatch, care agregează datele de metrică înainte de a le împinge în CloudWatch la fiecare 30 secunde.
- Utilizatorii pot vizualiza valorile accesând spațiul de nume personalizat de pe consola CloudWatch.
Oferim un Formarea AWS Cloud șablon din această postare ca ghid general. Șablonul demonstrează cum să configurați un agent CloudWatch pe Amazon EMR pentru a împinge valorile Spark către CloudWatch. Îl puteți revizui și personaliza după cum este necesar pentru a include configurațiile dvs. de securitate Amazon EMR. Ca cea mai bună practică, vă recomandăm să includeți configurațiile dvs. de securitate Amazon EMR în șablon criptați datele în tranzit.
De asemenea, ar trebui să știți că unele dintre resursele implementate de această stivă implică costuri atunci când rămân în uz. În plus, Valori EMR nu suportați costuri pentru CloudWatch. Cu toate acestea, valorile personalizate implică taxe bazate pe prețurile pentru valorile CloudWatch. Pentru mai multe informații, vezi Prețuri Amazon CloudWatch.
În secțiunile următoare, parcurgem următorii pași:
- Creați și încărcați biblioteca de valori, scriptul de instalare și definiția filtrului într-un Serviciul Amazon de stocare simplă Găleată (Amazon S3)
- Utilizați șablonul CloudFormation pentru a crea următoarele resurse:
- Monitorizați valorile Spark pe consola CloudWatch.
Cerințe preliminare
Această postare presupune că aveți următoarele:
- An Cont AWS.
- Un compartiment S3 pentru stocarea scriptului bootstrap, a bibliotecii și a definiției filtrului metric.
- Un VPC creat în Cloud virtual virtual Amazon (Amazon VPC), unde va fi lansat clusterul dvs. EMR.
- Roluri implicite de serviciu IAM pentru permisiunile Amazon EMR pentru serviciile și resursele AWS. Puteți crea aceste roluri cu comanda aws emr create-default-roles din Interfața liniei de comandă AWS (CLI AWS).
- O pereche de chei EC2 opțională, dacă intenționați să vă conectați la cluster prin SSH, mai degrabă decât Manager sesiune, o capacitate de Manager sistem AWS.
Definiți valorile necesare
Pentru a evita trimiterea de date inutile către CloudWatch, soluția noastră implementează un filtru metric. Examinați Documentația Spark pentru a se familiariza cu spațiile de nume și valorile asociate acestora. Determinați ce valori sunt relevante pentru aplicația dvs. specifice și obiectivele de performanță. Aplicațiile diferite pot necesita valori diferite pentru monitorizare, în funcție de volumul de lucru, cerințele de procesare a datelor și obiectivele de optimizare. Numele valorilor pe care doriți să le monitorizați ar trebui să fie definite în fișierul Metricfilter.json, împreună cu spațiile de nume asociate acestora.
Am creat un exemplu de definiție Metricfilter.json, care include capturarea valorilor legate de I/O de date, colectarea gunoiului, presiunea memoriei și CPU și a valorilor pentru jobul, etapa și sarcina Spark.
Rețineți că anumite valori nu sunt disponibile în toate versiunile de lansare Spark (de exemplu, appStatus a fost introdus în Spark 3.0).
Creați și încărcați fișierele necesare într-o găleată S3
Pentru mai multe informații, consultați Încărcarea obiectelor și Instalarea și rularea agentului CloudWatch pe serverele dvs.
Pentru a crea și a încărca scriptul bootstrap, parcurgeți următorii pași:
- Pe consola Amazon S3, alegeți găleata S3.
- Pe Obiecte fila, alegeți Încărcați.
- Alege Adăugați fișiere, apoi alegeți Metricfilter.json, installer.sh, și exemplu de muncă.sh fișiere.
- În plus, încărcați
emr-custom-cw-sink-0.0.1.jar
fișier bibliotecă de metrici care corespunde versiunii de lansare Amazon EMR pe care o veți utiliza: - Alege Încărcați, și luați notă de URI-urile S3 pentru fișiere.
Furnizați resurse cu șablonul CloudFormation
Alege Lansați Stack pentru a lansa o stivă CloudFormation în contul dvs. și a implementa șablonul:
Acest șablon creează un rol IAM, un profil de instanță IAM, un cluster EMR și un tablou de bord CloudWatch. Clusterul începe o bază Exemplu de aplicație Spark. Veți fi facturat pentru resursele AWS utilizate dacă creați o stivă din acest șablon.
Expertul CloudFormation vă va cere să modificați sau să furnizați acești parametri:
- InstanceType - tip de instanță pentru toate grupurile de instanță. Valoarea implicită este m5.2xlarge.
- InstanceCountCore – Numărul de instanțe din grupul de instanțe de bază. Valoarea implicită este 4.
- EMRReaseLabel - Etichetă de lansare Amazon EMR vrei să folosești. Valoarea implicită este emr-6.9.0.
- BootstrapScriptPath – Calea S3 a scriptului de bootstrap de instalare installer.sh pe care l-ați copiat mai devreme.
- MetricFilterPath – Calea S3 a definiției dvs. Metricfilter.json pe care ați copiat-o mai devreme.
- MetricsLibraryPath – Calea S3 a bibliotecii CloudWatch emr-custom-cw-sink-0.0.1.jar pe care ați copiat-o mai devreme.
- CloudWatchNamspace – Numele spațiului de nume CloudWatch personalizat care va fi utilizat.
- SparkDemoApplicationPath – Calea S3 a scriptului examplejob.sh pe care l-ați copiat mai devreme.
- Subrețea – Subrețeaua EC2 în care se lansează clusterul. Trebuie să furnizați acest parametru.
- EC2KeyPairName – O pereche de chei EC2 opțională pentru conectarea la nodurile cluster, ca alternativă la Session Manager.
Vedeți valorile
După implementarea cu succes a stivei CloudFormation, exemplul de lucru începe automat și durează aproximativ 15 minute pentru a se finaliza. Pe consola CloudWatch, alegeți Tablourile de bord în panoul de navigare. Apoi filtrați lista după prefixul SparkMonitoring.
Exemplul de tablou de bord include informații despre cluster și o prezentare generală a joburilor, etapelor și sarcinilor Spark. Valorile sunt disponibile și sub un spațiu de nume personalizat, începând cu EMRCustomSparkCloudWatchSink
.
Sunt incluse, de asemenea, memorie, procesor, I/O și metrici suplimentare de distribuție a sarcinilor.
În cele din urmă, valorile detaliate de colectare a gunoiului Java sunt disponibile pentru fiecare executant.
A curăța
Pentru a evita costuri viitoare în contul dvs., ștergeți resursele pe care le-ați creat în această explicație. Clusterul EMR va suporta taxe atâta timp cât clusterul este activ, așa că opriți-l când ați terminat. Parcurgeți următorii pași:
- Pe consola CloudFormation, în panoul de navigare, alegeți Stive.
- Alegeți stiva pe care ați lansat-o (
EMR-CloudWatch-Demo
), atunci alege Șterge. - Goliți găleata S3 ai creat.
- Ștergeți găleata S3 ai creat.
Concluzie
Acum că ați finalizat pașii din această explicație, agentul CloudWatch rulează pe gazdele dvs. de cluster și este configurat pentru a trimite valorile Spark către CloudWatch. Cu această funcție, puteți monitoriza în mod eficient sănătatea și performanța joburilor dvs. Spark care rulează pe Amazon EMR, detectând problemele critice în timp real și identificând rapid cauzele principale.
Puteți împacheta și implementa această soluție printr-un șablon CloudFormation, cum ar fi acest șablon exemplu, care creează rolul de profil al instanței IAM, tabloul de bord CloudWatch și clusterul EMR. Codul sursă pentru bibliotecă este disponibil pe GitHub pentru personalizare.
Pentru a continua acest lucru, luați în considerare utilizarea acestor valori în alarmele CloudWatch. Le puteți colecta cu alte alarme într-un alarma compozita sau configurați acțiuni de alarmă, cum ar fi trimiterea Serviciul de notificare simplă Amazon (Amazon SNS) notificări pentru a declanșa procese bazate pe evenimente, cum ar fi AWS Lambdas funcții.
Despre autor
Le Clue Lubbe este inginer principal la AWS. El lucrează cu cei mai mari clienți ai noștri întreprinderi pentru a rezolva unele dintre cele mai complexe probleme tehnice ale acestora. El conduce soluții largi prin inovare pentru a afecta și îmbunătăți viața clienților noștri.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. Automobile/VE-uri, carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- ChartPrime. Crește-ți jocul de tranzacționare cu ChartPrime. Accesați Aici.
- BlockOffsets. Modernizarea proprietății de compensare a mediului. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/big-data/monitor-apache-spark-applications-on-amazon-emr-with-amazon-cloudwatch/
- :este
- :nu
- :Unde
- 1
- 100
- 107
- 15%
- 20
- 30
- 9
- a
- capacitate
- accesarea
- Cont
- cunoscut
- peste
- Acțiune
- acțiuni
- activ
- activitate
- Suplimentar
- În plus,
- Agent
- alarmă
- TOATE
- permite
- de-a lungul
- de asemenea
- alternativă
- Amazon
- Amazon EC2
- Amazon EMR
- Amazon Web Services
- an
- și
- Apache
- Apache Spark
- aplicație
- aplicatii
- aproximativ
- arhitectural
- arhitectură
- SUNT
- AS
- asociate
- presupune
- At
- autor
- în mod automat
- disponibil
- evita
- conştient
- AWS
- bazat
- de bază
- BE
- înainte
- CEL MAI BUN
- Bootstrap
- larg
- dar
- by
- CAN
- capacitate
- capturi
- capturarea
- cauze
- sigur
- taxe
- Alege
- Grup
- cod
- colecta
- colectare
- colecte
- Completă
- Terminat
- complex
- Calcula
- Configuraţie
- configurat
- Conectați
- Conectarea
- Lua în considerare
- Consoleze
- Nucleu
- corespunde
- cost-eficiente
- Cheltuieli
- ar putea
- Procesor
- crea
- a creat
- creează
- Crearea
- critic
- personalizat
- clienţii care
- personalizare
- personaliza
- tablou de bord
- de date
- de prelucrare a datelor
- Mod implicit
- definit
- definiție
- demonstra
- demonstrează
- În funcție
- implementa
- dislocate
- implementează
- detaliat
- Determina
- diferit
- distribuite
- distribuire
- făcut
- Dont
- unități
- fiecare
- Mai devreme
- în mod eficient
- eficiență
- permite
- inginer
- Afacere
- clienții întreprinderii
- esenţial
- Eter (ETH)
- exemplu
- Caracteristică
- Fișier
- Fişiere
- filtru
- următor
- Pentru
- din
- funcții
- mai mult
- viitor
- General
- obține
- Da
- Go
- Goluri
- grup
- Grupului
- ghida
- Avea
- he
- Sănătate
- Gazdele
- Cum
- Cum Pentru a
- Totuși
- HTML
- http
- HTTPS
- IAM
- identifica
- identificarea
- if
- ilustrează
- ilustrând
- Impactul
- ustensile
- îmbunătăţi
- in
- include
- inclus
- include
- Inclusiv
- informații
- Inovaţie
- înţelegere
- instalare
- Instalarea
- instanță
- clipă
- integrare
- în
- introdus
- probleme de
- IT
- ESTE
- Java
- Loc de munca
- Locuri de munca
- JSON
- Cheie
- cea mai mare
- lansa
- a lansat
- lansează
- Bibliotecă
- Viaţă
- ca
- Linie
- Listă
- Lung
- manager
- Mai..
- Memorie
- metric
- Metrici
- minute
- modifica
- monitor
- Monitorizarea
- mai mult
- cele mai multe
- trebuie sa
- nume
- nume
- Navigare
- necesar
- următor
- nod
- noduri
- nota
- notificare
- notificări
- număr
- Obiectivele
- of
- on
- afară
- optimizare
- optimizarea
- Opţiuni
- or
- Altele
- al nostru
- Prezentare generală
- pachet
- pereche
- pâine
- parametru
- parametrii
- cale
- pentru
- performanță
- permisiuni
- plan
- Plato
- Informații despre date Platon
- PlatoData
- portret
- Post
- puternic
- practică
- presiune
- de stabilire a prețurilor
- Principal
- privat
- probleme
- procese
- prelucrare
- Profil
- furniza
- furnizează
- publica
- Împinge
- împinge
- împingerea
- repede
- mai degraba
- real
- în timp real
- recomanda
- legate de
- eliberaţi
- rămâne
- necesita
- necesar
- Cerinţe
- resursă
- utilizarea resurselor
- Resurse
- responsabil
- revizuiască
- robust
- Rol
- rolurile
- rădăcină
- funcţionare
- scalabil
- fără sudură
- Secțiune
- secțiuni
- securitate
- vedea
- trimite
- trimitere
- trimite
- serviciu
- Servicii
- sesiune
- să
- simplu
- So
- soluţie
- soluţii
- REZOLVAREA
- unele
- Sursă
- cod sursă
- Scânteie
- specific
- stivui
- Etapă
- Stadiile
- Începe
- Pornire
- începe
- Pas
- paşi
- Stop
- depozitare
- subrețea
- Reușit
- astfel de
- REZUMAT
- sistem
- sisteme
- Lua
- ia
- Sarcină
- sarcini
- Tehnic
- șablon
- decât
- acea
- Sursa
- lor
- Lor
- apoi
- Acestea
- ei
- acest
- Prin
- timp
- la
- urmări
- declanşa
- în
- utilizare
- utilizat
- folosind
- utilizează
- varietate
- versiune
- Vizualizare
- Virtual
- walkthrough
- vrea
- a fost
- we
- web
- servicii web
- cand
- care
- în timp ce
- voi
- cu
- flux de lucru
- fabrică
- X
- yaml
- tu
- Ta
- zephyrnet