Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
L'architettura di servizio di Amazon EMR è composta da diversi livelli, ognuno dei quali fornisce determinate capacità e funzionalità al cluster. Questa sezione fornisce una panoramica dei livelli e i componenti di ciascuno di essi.
In questo argomento
Storage
Il livello di archiviazione include diversi file system utilizzati con il cluster. Esistono diversi tipi di opzioni di archiviazione, come indicato di seguito.
File system distribuito Hadoop (HDFS)
File system distribuito Hadoop (HDFS) è un file di sistema distribuito e scalabile per Hadoop. HDFS distribuisce i dati che archivia tra le istanze del cluster, archiviando più copie dei dati su istanze diverse per garantire che non vadano persi in caso di guasto di una singola istanza. HDFS è uno spazio di archiviazione temporaneo che viene recuperato quando si termina un cluster. HDFS è utile per memorizzare nella cache i risultati intermedi durante l' MapReduce elaborazione o per carichi di lavoro con I/O casuali significativi.
Per ulteriori informazioni, consulta Opzioni e comportamento di storage delle istanze in Amazon EMR oppure la HDFS User Guide
File system EMR (EMRFS)
Utilizzando il file system EMR (EMRFS), Amazon EMR estende Hadoop per aggiungere la possibilità di accedere direttamente ai dati memorizzati in Amazon S3 come se si trattasse di un file system del tipo di HDFS. È possibile utilizzare HDFS o Amazon S3 come file system nel cluster. Amazon S3 viene utilizzato principalmente per memorizzare i dati di input e di output, mentre i risultati intermedi sono memorizzati in HDFS.
File system locale
Il file system locale fa riferimento a un disco con connessione locale. Quando crei un cluster Hadoop, ogni nodo viene creato da un' EC2 istanza Amazon dotata di un blocco preconfigurato di storage su disco precollegato chiamato instance store. I dati sui volumi dell'instance store persistono solo durante il ciclo di vita dell'istanza Amazon corrispondente. EC2
Gestione delle risorse del cluster
Il livello di gestione delle risorse è responsabile della gestione delle risorse del cluster e della pianificazione dei processi per l'elaborazione dei dati.
Per impostazione predefinita, Amazon EMR usa YARN (Yet Another Resource Negotiator), che è un componente introdotto in Apache Hadoop 2.0 per gestire centralmente le risorse del cluster per più framework di elaborazione dati. Tuttavia, esistono altri framework e applicazioni offerti in Amazon EMR che non utilizzano YARN come gestore di risorse. Ogni nodo di Amazon EMR può inoltre contare su un agente che gestisce i componenti YARN, preserva l'integrità del cluster e comunica con Amazon EMR.
Poiché le Istanze Spot vengono spesso utilizzate per eseguire nodi attività, Amazon EMR dispone delle funzionalità predefinite per la pianificazione dei processi YARN in modo che i processi in esecuzione non abbiano esito negativo quando i nodi attività in esecuzione sulle Istanze Spot vengono terminati. Amazon EMR esegue questa operazione consentendo ai processi master delle applicazioni di funzionare solo sui nodi principali. Il processo master dell'applicazione controlla i processi in esecuzione e deve rimanere attivo per tutta la durata del processo.
Amazon EMR rilascio 5.19.0 e successivi utilizzano la caratteristica integrata etichette nodo YARNyarn-site
e capacity-scheduler
sono configurate per impostazione predefinita in modo che capacity-scheduler e fair-scheduler YARN sfruttino le etichette dei nodi. Amazon EMR etichetta in automatico i nodi principali con l'etichetta CORE
e imposta le proprietà in modo che i master dell'applicazione siano pianificati solo sui nodi con l'etichetta CORE. La modifica manuale delle proprietà correlate nelle classificazioni di configurazione del sito di YARN e del pianificatore di capacità o direttamente nei file XML associati potrebbe interrompere o alterare questa funzionalità.
Framework di elaborazione dati
Il livello di framework di elaborazione dati è il motore utilizzato per elaborare e analizzare i dati. Sono disponibili molti framework che funzionano su YARN o che hanno una propria gestione delle risorse. Sono disponibili diversi framework per diversi tipi di esigenze di elaborazione, come batch, interattivi, in-memory, streaming e così via. Il framework scelto varia a seconda del caso d'uso. Questo ha un impatto sulle lingue e sulle interfacce disponibili dal livello dell'applicazione, che è il livello utilizzato per interagire con i dati che si desidera elaborare. I principali framework di elaborazione disponibili per Amazon EMR sono Hadoop e Spark. MapReduce
Hadoop MapReduce
Hadoop MapReduce è un modello di programmazione open source per il calcolo distribuito. Questo modello semplifica il processo di scrittura di applicazioni distribuite in parallelo gestendo tutta la logica, mentre le funzioni Map e Reduce vengono fornite dall'utente. La funzione Map mappa i dati in gruppi di coppie chiave-valore denominati risultati intermedi. La funzione Reduce combina i risultati intermedi, applica algoritmi aggiuntivi e genera l'output finale. Sono disponibili diversi framework MapReduce, come Hive, che genera automaticamente i programmi Map e Reduce.
Per ulteriori informazioni, consulta How map and reduce operations are actually carried out (Come vengono eseguite le operazioni Map e Reduce)
Apache Spark
Spark è un framework di cluster e un modello di programmazione per l'elaborazione di carichi di lavoro di big data. Come Hadoop MapReduce, Spark è un sistema di elaborazione distribuito open source, ma utilizza grafici aciclici diretti per i piani di esecuzione e la memorizzazione nella cache in memoria per i set di dati. Quando si esegue Spark su Amazon EMR, è possibile utilizzare EMRFS per accedere direttamente ai dati in Amazon S3. Spark supporta più moduli di query interattivi, come SparkSQL.
Per ulteriori informazioni, consulta Apache Spark su cluster Amazon EMR nella Guida ai rilasci di Amazon EMR.
Applicazioni e programmi
Amazon EMR supporta numerose applicazioni come Hive, Pig e la libreria Spark Streaming per fornire funzionalità quali l'utilizzo di linguaggi di livello superiore per creare carichi di lavoro di elaborazione, l'utilizzo di algoritmi di machine learning, la creazione di applicazioni di elaborazione del flusso di lavoro e la creazione di data warehouse. Inoltre, Amazon EMR supporta anche i progetti open source che sfruttano le proprie funzionalità di gestione dei cluster anziché utilizzare YARN.
È possibile interagire con le applicazioni eseguite in Amazon EMR attraverso varie librerie e lingue. Ad esempio, puoi usare Java, Hive o Pig con MapReduce o Spark Streaming, Spark SQL MLlib e GraphX con Spark.
Per ulteriori informazioni, consulta la Guida ai rilasci di Amazon EMR.