Panoramica
- Scopri di più sull'architettura Spark
- Scopri le diverse modalità di esecuzione
introduzione
Apache SparkApache Spark è un motore di elaborazione dati open source che consente l'analisi di grandi volumi di informazioni in modo rapido ed efficiente. Il suo design si basa sulla memoria, che ottimizza le prestazioni rispetto ad altri strumenti di elaborazione batch. Spark è ampiamente utilizzato nelle applicazioni di big data, Apprendimento automatico e analisi in tempo reale, grazie alla sua facilità d'uso e... 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 grappoloUn cluster è un insieme di aziende e organizzazioni interconnesse che operano nello stesso settore o area geografica, e che collaborano per migliorare la loro competitività. Questi raggruppamenti consentono la condivisione delle risorse, Conoscenze e tecnologie, promuovere l'innovazione e la crescita economica. I cluster possono coprire una varietà di settori, Dalla tecnologia all'agricoltura, e sono fondamentali per lo sviluppo regionale e la creazione di posti di lavoro.... 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..
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 nodoNodo è una piattaforma digitale che facilita la connessione tra professionisti e aziende alla ricerca di talenti. Attraverso un sistema intuitivo, Consente agli utenti di creare profili, condividere esperienze e accedere a opportunità di lavoro. La sua attenzione alla collaborazione e al networking rende Nodo uno strumento prezioso per chi vuole ampliare la propria rete professionale e trovare progetti in linea con le proprie competenze e obiettivi.... 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.
Ci sono molte cose utili a cui prestare attenzione riguardo a questa architettura:
- 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. - 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 / FILATOYARN es un gestor de paquetes para JavaScript que permite la instalación y gestión eficiente de dependencias en proyectos de desarrollo. Desarrollado por Facebook, se caracteriza por su rapidez y seguridad en comparación con otros gestores. YARN utiliza un sistema de caché para optimizar las instalaciones y proporciona un archivo de bloqueo para garantizar la consistencia de las versiones de las dependencias en diferentes entornos de desarrollo....).
- 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.
- 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 mappaMapReduce es un modelo de programación diseñado para procesar y generar grandes conjuntos de datos de manera eficiente. Desarrollado por Google, este enfoque Divide el trabajo en tareas más pequeñas, las cuales se distribuyen entre múltiples nodos en un clúster. Cada nodo procesa su parte y luego se combinan los resultados. Este método permite escalar aplicaciones y manejar volúmenes masivos de información, siendo fundamental en el mundo del Big Data.... 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:
- Modalità cluster
- Modo cliente
- 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.