Architettura scintillante | Architettura Apache Spark per ingegneri dei dati

Contenuti

Panoramica

  • Scopri di più sull'architettura Spark
  • Scopri le diverse modalità di esecuzione

introduzione

Apache Spark es un motor informático unificado y un conjunto de bibliotecas para el procesamiento de datos en paralelo en clústeres de computadoras. È il motore open source più sviluppato per questo compito, rendendolo uno strumento standard per qualsiasi sviluppatore o data scientist interessato ai big data.

Spark supporta più linguaggi di programmazione ampiamente utilizzati (Pitone, Giava, Scala y R), include librerie per varie attività che vanno da SQL allo streaming al machine learning, e Spark corre ovunque, desde una computadora portátil hasta un grappolo de cientos de servidores. Ciò lo rende un sistema facile da avviare e scalare fino all'elaborazione di big data o su scala incredibilmente ampia..

architettura scintillante

Più di 500 collaboratori di 200 istituzioni responsabili del codice e una base di utenti di oltre 225,000 membri, Apache Spark è diventato il framework per big data più comune e richiesto in tutti i principali settori. Aziende di e-commerce come Alibaba, società di social media come Tencent e il motore di ricerca cinese Baidu eseguono operazioni di apache spark su larga scala.

Questo post è una risorsa una tantum che fornisce una panoramica dell'architettura Spark con l'aiuto di un diagramma dell'architettura Spark..

Sommario

  • L'architettura di un'applicazione Spark
    • L'autista di Spark
    • Gli esecutori di scintille
    • L'amministratore del cluster
  • Tipi di Cluster Manager
  • Modalità di esecuzione
    • Modalità cluster
    • Modo cliente
    • modalità locale

L'architettura di un'applicazione Spark

Di seguito sono riportati i componenti di alto livello dell'architettura dell'applicazione Apache Spark:

L'autista di Spark

Il driver è la procedura “al posto di guida” dalla tua applicazione Spark. È il controllore dell'esecuzione di un'applicazione Spark e mantiene tutti gli stati del cluster Spark (lo stato e i compiti degli esecutori testamentari). È necessario interagire con l'amministratore del cluster per ottenere risorse fisiche ed eseguire esecutori.

Alla fine del giorno, questa è solo una procedura su una macchina fisica che è responsabile del mantenimento dello stato dell'applicazione in esecuzione sul cluster.

Gli esecutori di scintille

Gli esecutori Spark sono i processi che eseguono le attività assegnate dal controller Spark. Gli esecutori hanno una responsabilità fondamentale: prendere i compiti assegnati dal conducente, eseguirli e riferire sul loro stato (successo o fallimento) e risultati. Ogni applicazione Spark ha i propri processi di esecuzione indipendenti.

L'amministratore del cluster

Spark Driver ed Executor non esistono nel vuoto, ed è qui che entra in gioco il gestore cluster. L'amministratore del cluster è responsabile della manutenzione di un cluster di macchine che eseguiranno le tue applicazioni Spark. In un modo un po' confuso, un amministratore del cluster avrà le proprie astrazioni di “controllore” (a volte chiamato insegnante) e “lavoratore”.

La differenza principale è che sono collegati a macchine fisiche piuttosto che a processi (come sono in Spark). La máquina a la izquierda de la ilustración es el nodo de controlador de Cluster Manager. I cerchi rappresentano i processi demone che vengono eseguiti e gestiti da ciascuno dei singoli nodi di lavoro. Nessuna applicazione Spark è ancora in esecuzione; questi sono solo i processi del gestore cluster.

Quando è il momento di eseguire un'applicazione Spark, Richiediamo risorse all'amministratore del cluster per eseguirlo. A seconda di come è configurata la nostra applicazione, questo potrebbe includere un luogo per eseguire il controller Spark o potrebbero essere solo risorse per gli esecutori della nostra applicazione Spark. Nel corso dell'esecuzione dell'applicazione Spark, l'amministratore del cluster sarà responsabile della gestione delle macchine sottostanti su cui viene eseguita la nostra applicazione.

architettura scintillante - Amministratore del cluster

Ci sono molte cose utili a cui prestare attenzione riguardo a questa architettura:

  1. Ogni applicazione ha i propri processi di esecuzione, che rimangono attivi in ​​tutta l'applicazione ed eseguono attività multi-thread. Questo ha il vantaggio di isolare le applicazioni l'una dall'altra., sia dal lato della programmazione (ogni controller pianifica i propri compiti) come lato esecutore (diverse attività dell'applicazione vengono eseguite su diverse JVM).
    Nonostante questo, significa anche che i dati non possono essere condivisi tra diverse applicazioni Spark (istanze di SparkContext) senza scriverli su un sistema di archiviazione esterno.
  2. Spark è indipendente dall'amministratore del cluster sottostante. Finché puoi ottenere processi in esecuzione e comunicano tra loro, è relativamente facile da eseguire anche in un amministratore di cluster che supporta anche altre applicazioni (come esempio, Mesi / FILATO).
  3. Il programma controller deve ascoltare e accettare le connessioni in entrata dai suoi executor per tutta la sua vita (come esempio, guarda spark.driver.port nella sezione delle impostazioni di rete). Come tale, il programma del controller deve essere indirizzabile in rete dai nodi di lavoro.
  4. Perché il controller pianifica le attività sul cluster, deve essere eseguito vicino ai nodi di lavoro, preferibilmente sulla stessa rete locale. Se vuoi inviare richieste al cluster da remoto, è meglio aprire un RPC al controller e fargli inviare operazioni da vicino piuttosto che eseguire un controller lontano dai nodi di lavoro.

Tipi di amministratori di cluster

A quest'ora, il sistema supporta più amministratori di cluster:

  • Essere unico – un semplice gestore cluster incluso in Spark che semplifica la configurazione di un cluster.
  • Apache Mesos un administrador de clúster general que además puede ejecutar Hadoop Riduci mappa y aplicaciones de servicio.
  • Hadoop HILO – il gestore delle risorse in Hadoop 2.
  • governatori – un sistema open source per automatizzare la distribuzione, ridimensionamento e gestione di applicazioni containerizzate.

C'è un progetto di terze parti (non supportato dal progetto Spark) per aggiungere supporto per Nomade come amministratore del cluster.

Modalità di esecuzione

Una modalità di esecuzione ti dà il potere di determinare dove si trovano fisicamente le risorse di cui sopra quando esegui l'applicazione. Hai tre modalità da selezionare:

  1. Modalità cluster
  2. Modo cliente
  3. modalità locale

Modalità cluster

La modalità cluster è probabilmente il modo più comune per eseguire le applicazioni Spark. In modalità cluster, un utente invia un JAR, uno script Python o uno script R precompilato a un amministratore del cluster. Dopo, l'amministratore del cluster avvia la procedura del controller su un nodo di lavoro all'interno del cluster, contemporaneamente ai processi in esecuzione. Ciò significa che l'amministratore del cluster è responsabile della gestione di tutti i processi relativi all'applicazione Spark..

Modo cliente

La modalità client è quasi la stessa della modalità cluster, tranne che il driver Spark rimane sulla macchina client che ha inviato la richiesta. Ciò significa che il computer client è responsabile della gestione della procedura del controller Spark e che l'amministratore del cluster gestisce i processi in esecuzione.. Queste macchine sono comunemente note come macchine link gate o nodi edge..

modalità locale

La modalità locale è un allontanamento significativo dalle due modalità precedenti: eseguire l'intera applicazione Spark su una singola macchina. Ottieni il parallelismo per mezzo di thread su quella singola macchina. Questo è un modo comune per imparare Spark, testa le tue applicazioni o sperimenta in modo iterativo lo sviluppo locale.

Nonostante questo, non suggeriamo di utilizzare la modalità locale per eseguire applicazioni di produzione.

conclusione

In sintesi, Spark ci aiuta a suddividere i lavori pesanti e ad alta intensità di calcolo in attività più piccole e concise che vengono poi eseguite dai nodi di lavoro.. Raggiunge anche l'elaborazione dei dati in tempo reale o archiviati utilizzando la sua architettura di base..

Consiglio vivamente di controllare le seguenti risorse di ingegneria dei dati per aumentare le tue conoscenze:

Spero che il post ti sia piaciuto. Se hai domande relative a questo post, fammi sapere nella sezione commenti qui sotto.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.