Distribuire un cluster Apache Spark in modalità manager/lavoratore

Apache Spark è un framework di elaborazione cluster open source per l'analisi dei dati. Oracle Cloud Infrastructure offre una piattaforma affidabile e ad alte prestazioni per l'esecuzione e la gestione delle applicazioni Big Data basate su Apache Spark.

Architettura

Questa architettura distribuisce un cluster Apache Spark su Oracle Cloud Infrastructure utilizzando il modello manager/lavoratore. Dispone di un nodo manager e di tre nodi lavoratore, in esecuzione sulle istanze di calcolo.

Il seguente diagramma illustra questa architettura di riferimento.

Segue la descrizione di spark-oci-png.png
Descrizione dell'immagine spark-oci-png.png

spark-oci-oracle.zip

L'architettura ha i seguenti componenti:

  • Area

    Un'area Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, denominati domini di disponibilità. Le regioni sono indipendenti da altre regioni, e vaste distanze possono separarle (tra paesi o addirittura continenti).

  • Dominio di disponibilità

    I domini di disponibilità sono data center indipendenti e autonomi all'interno di un'area. Le risorse fisiche in ogni dominio di disponibilità vengono isolate dalle risorse negli altri domini di disponibilità, il che fornisce la tolleranza di errore. I domini di disponibilità non condividono infrastrutture quali l'alimentazione o il raffreddamento o la rete di dominio di disponibilità interna. È quindi improbabile che un errore a un dominio di disponibilità influenzi gli altri domini di disponibilità nell'area.

  • Dominio di errore

    Un dominio di errore è un raggruppamento di hardware e infrastruttura all'interno di un dominio di disponibilità. Ogni dominio di disponibilità ha tre domini di guasto con alimentazione e hardware indipendenti. Quando si distribuiscono risorse su più domini di errore, le applicazioni possono tollerare errori fisici del server, la manutenzione del sistema e gli errori di alimentazione all'interno di un dominio di errore.

  • Rete cloud virtuale (VCN) e subnet

    Un VCN è una rete customizzabile e definita dal software impostata in un'area Oracle Cloud Infrastructure. Come le tradizionali reti di data center, i VCN ti danno il controllo completo sul tuo ambiente di rete. Un VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo la creazione di VCN. È possibile segmentare un VCN in subnet, che possono essere definite in un'area o in un dominio di disponibilità. Ogni subnet è costituita da un intervallo contiguo di indirizzi che non si sovrappongono alle altre subnet in VCN. È possibile modificare le dimensioni di una subnet dopo la creazione. Una subnet può essere pubblica o privata.

  • Responsabile e lavoratori di Apache Spark

    L'istanza di calcolo che ospita Apache Spark Manager è collegata a una subnet pubblica regionale. I lavoratori sono collegati a una subnet privata regionale.

  • Memorizzazione a blocchi

    Con i volumi storage a blocchi, è possibile creare, collegare, connettere e spostare i volumi storage e modificare le prestazioni del volume per soddisfare i requisiti di storage, prestazioni e applicazione. Dopo aver collegato e collegato un volume a un'istanza, è possibile utilizzare il volume come un normale disco rigido. È inoltre possibile scollegare un volume e collegarlo a un'altra istanza senza perdere dati.

    Il modello Terraform Quick-start fornito per questa architettura prevede un volume a blocchi 700-GB per ogni nodo lavoratore. Durante la distribuzione dell'architettura, è possibile scegliere il numero e la dimensione dei volumi a blocchi.

    L'architettura utilizza iSCSI, uno standard basato su TCP/IP, per la comunicazione tra i volumi e le istanze associate.

  • Gateway Internet

    Il gateway Internet consente il traffico tra le subnet pubbliche in un VCN e Internet pubblico.

  • Gateway NAT (Network Address Translation)

    Un gateway NAT consente alle risorse private in una VCN di accedere agli host su Internet, senza esporre tali risorse alle connessioni Internet in entrata.

Suggerimenti

Le vostre esigenze potrebbero differire dall'architettura descritta qui. Utilizzare i suggerimenti riportati di seguito come punto di partenza.

  • VCN

    Quando si crea un VCN, determinare il numero di blocchi CIDR richiesti e la dimensione di ciascun blocco in base al numero di risorse che si prevede di associare alle subnet in VCN. Utilizzare blocchi CIDR che si trovano all'interno dello spazio degli indirizzi IP privati standard.

    Selezionare blocchi CIDR che non si sovrappongono a nessun'altra rete (in Oracle Cloud Infrastructure, nel data center in locale o in un altro provider cloud) a cui si intende impostare connessioni private.

    Dopo aver creato un VCN, è possibile modificare, aggiungere e rimuovere i blocchi CIDR.

    Quando si progettano le subnet, prendere in considerazione il flusso di traffico e i requisiti di sicurezza. Allegare tutte le risorse all'interno di uno specifico livello o ruolo alla stessa subnet, che può fungere da limite di sicurezza.

    Utilizzare subnet regionali.

  • Forme di computazione

    Questa architettura utilizza un'immagine del sistema operativo Oracle Linux 7.7 con una forma VM.Standard2.1 sia per i nodi manager che per quelli lavoratore. Se l'applicazione ha bisogno di più memoria, core o larghezza di banda di rete, è possibile scegliere una forma diversa.

  • Apache Spark e Hadoop

    Anche se Apache Spark può essere eseguito da solo, in questa architettura viene eseguito su Hadoop.

    In questa architettura, un singolo nodo manager e tre nodi lavoratore vengono distribuiti come parte del cluster Apache Spark.

  • Sicurezza
    • Utilizzare Oracle Cloud Guard per monitorare e mantenere proattivamente la sicurezza delle risorse in Oracle Cloud Infrastructure. Cloud Guard utilizza ricette di detector che è possibile definire per esaminare le risorse per individuare le debolezze di sicurezza e per monitorare gli operatori e gli utenti per attività a rischio. Quando viene rilevata un'attività di configurazione errata o non sicura, Cloud Guard consiglia azioni correttive e assiste nell'esecuzione di tali azioni, in base alle ricette del rispondente che è possibile definire.

    • Per le risorse che richiedono la massima sicurezza, Oracle consiglia di utilizzare le zone di sicurezza. Una zona di sicurezza è un compartimento associato a una ricetta definita da Oracle di criteri di sicurezza basati sulle best practice. Ad esempio, le risorse in una zona di sicurezza non devono essere accessibili da Internet pubblico e devono essere cifrate utilizzando chiavi gestite dal cliente. Quando si creano e aggiornano le risorse in una zona di sicurezza, Oracle Cloud Infrastructure convalida le operazioni in base ai criteri nella composizione della zona di sicurezza e nega le operazioni che violano uno qualsiasi dei criteri.

Considerazioni

  • Prestazioni

    Si consiglia di utilizzare forme Bare Metal per le istanze di calcolo sia per i nodi manager che per quelli lavoratore. È possibile ottenere notevoli vantaggi in termini di prestazioni eseguendo applicazioni Big Data su un cluster Spark bare metal.

  • Disponibilità

    I domini di errore forniscono la migliore resilienza all'interno di un singolo dominio di disponibilità. È possibile distribuire istanze di calcolo che eseguono gli stessi task in più domini di disponibilità. Questo design elimina un singolo punto di guasto introducendo ridondanza.

    È inoltre possibile considerare la creazione di un nodo aggiuntivo di Spark Manager come backup per l'alta disponibilità.

  • Scalabilità

    È possibile scalare l'applicazione utilizzando il pool di istanze e le funzioni di ridimensionamento automatico.

    • Utilizzando i pool di istanze è possibile eseguire il provisioning e creare più istanze di calcolo in base alla stessa configurazione all'interno della stessa area.
    • Il ridimensionamento automatico consente di regolare automaticamente il numero di istanze di calcolo in un pool di istanze, in base a metriche delle prestazioni come l'utilizzo della CPU.
  • Memoria

    È possibile utilizzare Oracle Cloud Infrastructure Object Storage per memorizzare i dati anziché i volumi a blocchi. Se si utilizza lo storage degli oggetti, creare un gateway di servizio per la connettività dai nodi nelle subnet private.

    Oracle offre anche il connettore HDFS (Distributed File System) Hadoop per Oracle Cloud Infrastructure Object Storage. Utilizzando il connettore HDFS, le applicazioni Apache Hadoop possono leggere e scrivere i dati da e per la memorizzazione degli oggetti.

  • Responsabilità

    Questa architettura utilizza Terraform per creare l'infrastruttura e distribuire il cluster Spark.

    È invece possibile utilizzare il servizio completamente gestito, Oracle Cloud Infrastructure Data Flow, che fornisce una ricca interfaccia utente per consentire agli sviluppatori e agli scienziati dei dati di creare, modificare ed eseguire applicazioni Apache Spark su qualsiasi scala senza la necessità di cluster, un team operativo o conoscenze Spark altamente specializzate. Come servizio completamente gestito, non esiste alcuna infrastruttura da distribuire o gestire.

  • Sicurezza

    Utilizzare i criteri per limitare gli utenti che possono accedere alle risorse Oracle Cloud Infrastructure e le azioni che possono eseguire.

Distribuisci

Il codice richiesto per distribuire questa architettura di riferimento è disponibile in GitHub. È possibile estrarre il codice in Oracle Cloud Infrastructure Resource Manager con un solo clic, creare lo stack e distribuirlo. In alternativa, scaricare il codice da GitHub nel computer, personalizzare il codice e distribuire l'architettura utilizzando Terraform CLI.

  • Distribuisci utilizzando Oracle Cloud Infrastructure Resource Manager:
    1. Fare clic su Distribuisci in Oracle Cloud

      Se non si è già connessi, immettere la tenancy e le credenziali utente.

    2. Rivedere e accettare i termini e le condizioni.
    3. Selezionare l'area in cui distribuire lo stack.
    4. Seguire i prompt e le istruzioni sullo schermo per creare lo stack.
    5. Dopo aver creato lo stack, fare clic su Azioni Terraform e selezionare Piano.
    6. Attendere il completamento del job e rivedere il piano.

      Per apportare eventuali modifiche, tornare alla pagina Dettagli stack, fare clic su Modifica stack e apportare le modifiche necessarie. Eseguire di nuovo l'azione Piano.

    7. Se non sono necessarie ulteriori modifiche, tornare alla pagina Dettagli stack, fare clic su Azioni Terraform e selezionare Applica.
  • Distribuire utilizzando Terraform CLI:
    1. Andare a GitHub.
    2. Duplicare o scaricare il repository nel computer locale.
    3. Seguire le istruzioni contenute nel documento README.

Log modifiche

Questo log elenca le modifiche significative: