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 clúster es un conjunto de empresas y organizaciones interconectadas que operan en un mismo sector o área geográfica, y que colaboran para mejorar su competitividad. Estos agrupamientos permiten compartir recursos, conocimientos y tecnologías, fomentando la innovación y el crecimiento económico. Los clústeres pueden abarcar diversas industrias, desde tecnología hasta agricultura, y son fundamentales para el desarrollo regional y la creación de empleo.... 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 es una plataforma digital que facilita la conexión entre profesionales y empresas en busca de talento. A través de un sistema intuitivo, permite a los usuarios crear perfiles, compartir experiencias y acceder a oportunidades laborales. Su enfoque en la colaboración y el networking hace de Nodo una herramienta valiosa para quienes desean expandir su red profesional y encontrar proyectos que se alineen con sus habilidades y objetivos.... 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.