D: Cos'è Amazon EMR?

Amazon EMR è un servizio Web che consente ad aziende, ricercatori, analisti dei dati e sviluppatori di elaborare ingenti quantità di dati in modo semplice e a prezzi competitivi. Impiega il framework Hadoop ospitato in esecuzione in un'infrastruttura Web di Amazon Elastic Compute Cloud (Amazon EC2) e Amazon Simple Storage Service (Amazon S3).

D: Cosa è possibile fare con Amazon EMR?

Usando Amazon EMR, puoi effettuare il provisioning in modo immediato di tutta la capacità che ti occorre per completare i processi a elevato traffico di dati delle tue applicazioni, ad esempio indicizzazione Web, data mining, analisi di file di log, apprendimento automatico, analisi finanziarie, simulazioni scientifiche e ricerche bioinformatiche. Amazon EMR ti consente di concentrare l'attenzione sull'elaborazione o l'analisi dei dati, senza doverti occupare di altre attività laboriose quali configurazione, gestione e ottimizzazione dei cluster Hadoop o della capacità di elaborazione da usare.

Amazon EMR è ideale per problemi che richiedono una rapida ed efficiente elaborazione di grandi volumi di dati. Grazie all'interfaccia di servizi Web, puoi creare il flusso di lavoro di elaborazione e monitorare programmaticamente l'andamento dei cluster in esecuzione. Inoltre, puoi usare l'intuitiva interfaccia Web della Console di gestione AWS per avviare i cluster e monitorare le operazioni di calcolo più onerose sui cluster delle istanze Amazon EC2.

D: Chi può usare Amazon EMR?

Chiunque necessiti di un accesso semplificato a potenti risorse di analisi dei dati può usare Amazon EMR. Non è necessario avere esperienza nello sviluppo di software per sperimentare con molte delle applicazioni di esempio disponibili nella Developer Guide e nel blog di AWS sui Big Data.

D: Cosa consente di fare Amazon EMR che non fosse possibile già fare prima?

Amazon EMR riduce in modo significativo la complessità di attività laboriose come la gestione, la configurazione e l'ottimizzazione dei cluster Hadoop o della capacità di elaborazione da usare. Puoi avviare istantaneamente cluster Hadoop di grandi dimensioni che inizieranno le operazioni di calcolo in pochi minuti invece che in ore o giorni. Quando il cluster termina l'elaborazione, se l'impostazione non è stata modificata manualmente, verrà automaticamente terminato, perciò non saranno addebitati costi di risorse inutilizzate.

Tramite il servizio, puoi eseguire rapidamente processi a elevato traffico di dati per applicazioni quali indicizzazione Web, data mining, analisi di file di log, apprendimento automatico, analisi finanziarie, simulazioni scientifiche e ricerche bioinformatiche.

In qualità di sviluppatore di software, puoi anche sviluppare ed eseguire le tue applicazioni più complesse, aggiungendo funzionalità quali la pianificazione, i flussi di lavori, il monitoraggio e altre caratteristiche.

D: Qual è il motore di elaborazione dati su cui si basa Amazon EMR?

Amazon EMR usa Apache Hadoop come motore di elaborazione dati distribuito. Hadoop è un framework software open source basato su Java che supporta applicazioni distribuite a elevato traffico di dati su cluster di grandi dimensioni in hardware di largo consumo. Hadoop implementa un modello di programmazione chiamato "MapReduce", in cui l'elaborazione di dati è divisa in porzioni di piccole dimensioni e ognuna di esse può essere eseguita su un nodo del cluster. Questo framework è largamente utilizzato da sviluppatori, grandi aziende e start-up e si è dimostrato una piattaforma software affidabile per l'elaborazione di petabyte di dati su cluster composti da migliaia di macchine di largo consumo.

D: Cos'è un cluster di Amazon EMR?

In Amazon EMR ci si riferisce ai cluster di Amazon EMR (e a tutte le fasi di elaborazione assegnate) semplicemente come "cluster". Ogni cluster ha un identificatore univoco che inizia per "j-".

D: Cos'è la fase del cluster?

La fase del cluster è un'unità di elaborazione definita dall'utente, che viene mappata a grandi linee a un algoritmo per la manipolazione di dati. Ogni fase è un'applicazione Hadoop MapReduce implementata come JAR di Java o un programma di streaming scritto in Java, Ruby, Perl, Python, PHP, R o C++. Ad esempio, per calcolare la frequenza con cui compaiono tutte le parole di un documento e ordinarle in base al numero di occorrenze, la prima fase sarebbe un'applicazione MapReduce che conta le occorrenze di ogni parola, la seconda fase un'applicazione MapReduce che ordina i risultati della prima fase in base al numero di ripetizioni.

D: Quali sono gli stati di un cluster?

STARTING: il cluster effettua il provisioning, avvia e configura le istanze EC2.
BOOTSTRAPPING: le bootstrap action vengono eseguite sul cluster.
RUNNING: il cluster sta eseguendo una fase.
WAITING: il cluster è attivo ma non sono presenti fasi da eseguire.
TERMINATING: il cluster sta per essere terminato.
TERMINATED: il cluster è stato terminato senza errori.
TERMINATED_WITH_ERRORS: il cluster è stato terminato e si sono verificati degli errori.

D: Quali sono gli stati di una fase?

PENDING: la fase è in attesa dell'esecuzione.
RUNNING: la fase è in esecuzione.
COMPLETED: la fase è stata completata correttamente.
CANCELLED: la fase è stata annullata prima dell'esecuzione perché una fase precedente non ha avuto esito positivo oppure il cluster è stato terminato prima della sua esecuzione.
FAILED: la fase non è stata eseguita correttamente.

Torna all'inizio »


D: Come si esegue l'accesso ad Amazon EMR?

Puoi accedere ad Amazon EMR tramite la Console di gestione AWS, gli strumenti a riga di comando, i kit SDK o le API di EMR.

D: Come si avvia un cluster?

Puoi avviare un cluster tramite la Console di gestione AWS, riempiendo l'apposito modulo di richiesta. In questo modulo, devi specificare il nome del cluster, il percorso in Amazon S3 dove si trovano i dati da utilizzare, l'applicazione per l'elaborazione, il percorso in cui salvare i dati in uscita e il numero e il tipo di istanze Amazon EC2 da utilizzare. Facoltativamente, puoi specificare un percorso in cui memorizzare i file di log del cluster e la chiave SSH per eseguire l'accesso al cluster mentre è in esecuzione. In alternativa, puoi avviare un cluster utilizzando l'API RunJobFlow oppure il comando "create" usando gli strumenti a riga di comando.

D: Che cosa occorre per cominciare a utilizzare Amazon EMR?

Per registrarti ad Amazon EMR, fai clic sul pulsante "Registrati ora" nella pagina dei dettagli di Amazon EMR http://aws.amazon.com/elasticmapreduce. Per accedere ad Amazon EMR devi essere registrato ad Amazon EC2 e ad Amazon S3; in caso contrario, ti verrà chiesto di farlo durante la procedura di registrazione ad Amazon EMR. Dopo esserti registrato, consulta la documentazione di Amazon EMR, che include una guida alle operazioni di base, il modo migliore per imparare come usare il servizio.

D: Come si termina un cluster?

Puoi terminare un cluster in qualsiasi momento tramite la Console di gestione AWS selezionando un cluster e facendo clic sul pulsante "Terminate". In alternativa, puoi usare l'API TerminateJobFlows. Se termini un cluster in esecuzione, i risultati non memorizzati in Amazon S3 andranno persi e tutte le istanze Amazon EC2 verranno interrotte.

D: Amazon EMR supporta più cluster contemporaneamente?

Sì. Puoi creare un nuovo cluster in qualsiasi momento, anche se uno o più cluster sono già in esecuzione.

D: Quanti cluster è possibile eseguire simultaneamente?

Puoi avviare un numero indefinito di cluster. Tuttavia potrai usare solo 20 istanze su tutti i tuoi cluster. Se ti occorrono più istanze, completa il modulo di richiesta istanze di Amazon EC2 indicando il tuo caso d'uso e la tua richiesta di aumento sarà valutata. Se il limite di istanze Amazon EC2 è già stato aumentato, il nuovo limite verrà applicato direttamente nei tuoi cluster di Amazon EMR.

Torna all'inizio >>


D: Dove è possibile trovare codice di esempio?

Se cerchi codice di esempio, consulta questi articoli e tutorial.

D: Come si sviluppa un'applicazione per l'elaborazione di dati?

Puoi sviluppare un processo di elaborazione di dati sul desktop, ad esempio utilizzando plug-in Eclipse o NetBeans come IBM MapReduce Tools for Eclipse (http://www.alphaworks.ibm.com/tech/mapreducetools). Questi strumenti facilitano lo sviluppo e il debug dei processi di MapReduce, consentendo di testarli sul computer locale. Inoltre, potrai sviluppare il tuo cluster direttamente su Amazon EMR utilizzano una o più istanze.

D: Qual è il vantaggio di utilizzare gli strumenti a riga di comando o l'API piuttosto che la Console di gestione AWS?

Gli strumenti a riga di comando e le API consentono di avviare e monitorare l'avanzamento di cluster in esecuzione in modo programmatico, creare funzionalità personalizzate aggiuntive relative ai cluster (ad esempio sequenze con più fasi di elaborazione, pianificazione, flusso di lavoro o monitoraggio) o di creare strumenti o applicazioni che migliorano l'esperienza per altri clienti di Amazon EMR. La Console di gestione AWS, invece, fornisce un'interfaccia grafica intuitiva per avviare e monitorare i cluster direttamente da un browser Web.

D: È possibile aggiungere fasi a un cluster già in esecuzione?

Sì. Quando un processo è stato avviato, se desideri puoi aggiungere altre fasi utilizzando l'API AddJobFlowSteps. L'API AddJobFlowSteps consentirà di aggiungere nuove fasi al termine della fase corrente. Questa API è ideale per implementare logica condizionale al cluster o per il debug.

D: È possibile eseguire un cluster persistente?

Sì. I cluster di Amazon EMR che vengono avviati con il flag –alive non saranno interrotti se non vengono esplicitamente terminati. In questo modo i clienti possono aggiungere fasi a un cluster quando desiderano. Puoi usare questa funzione per eseguire il debug dell'applicazione senza dover attendere continuamente l'avvio di un cluster. Puoi anche usare un cluster persistente per usarlo come data warehouse a lungo termine. In questo modo potrai sfruttare al massimo i pacchetti di data warehousing e di analisi che è possibile eseguire con Hadoop, ad esempio Hive e Pig.

D: È possibile ricevere una notifica quando un cluster termina l'elaborazione?

Puoi registrarti ad Amazon SNS e impostarlo in modo che il cluster pubblichi un argomento in SNS quando ha terminato. Puoi anche monitorare l'avanzamento del cluster nella Console di gestione AWS, oppure utilizzare la riga di comando, il kit SDK o le API per ottenere lo stato del cluster.

D: Quali linguaggi di programmazione supporta Amazon EMR?

Puoi usare Java per implementare file JAR personalizzati di Hadoop. In alternativa, sono compatibili anche altri linguaggi, tra cui Perl, Python, Ruby, C++, PHP e R utilizzando Hadoop Streaming. Consulta la Developer's Guide per istruzioni sull'utilizzo di Hadoop Streaming.

D: Quali versioni del sistema operativo sono supportate con Amazon EMR?

Al momento Amazon EMR supporta Debian/Squeeze a 32 e a 64 bit.

D: È possibile visionare l'interfaccia utente di Hadoop mentre il cluster è in esecuzione?

Sì. Consulta la sezione Hadoop UI nella Developer's Guide per istruzioni su come accedere all'interfaccia utente di Hadoop.

D: Amazon EMR supporta pacchetti software di terze parti?

Sì. Per installare pacchetti software di terze parti sul cluster consigliamo di usare delle bootstrap action. In alternativa, è possibile creare eseguibili di Mapper o di Reducer contenenti librerie di terze parti. Puoi anche caricare eseguibili compilati in modo statico usando il meccanismo di cache distribuita di Hadoop.

D: Quali versioni di Hadoop supporta Amazon EMR?

Per informazioni sulle versioni più recenti supportate da Amazon EMR, consulta la documentazione.

D: È possibile usare un motore di elaborazione dati diverso da Hadoop?

Sì, alcuni clienti di EMR usando Spark and Shark (data warehousing e mapreduce in memoria) come motore di elaborazione. Consulta questo articolo per istruzioni su come modificarlo.

D: Amazon contribuisce a migliorare Hadoop nella community open source?

Sì. Amazon EMR è attivo nella community open source e contribuisce con molte correzioni al codice sorgente di Hadoop.

D: Amazon EMR aggiorna la versione di Hadoop supportata?

Amazon EMR aggiorna periodicamente le versioni supportate di Hadoop in base alle relative release nella community. In alcuni casi, Amazon EMR potrà saltare alcune versioni di Hadoop.

D: Con quale frequenza Amazon EMR ritira il supporto per le versioni precedenti di Hadoop?

Il servizio Amazon EMR ritira il supporto delle versioni precedenti di Hadoop diversi mesi dopo che sono state dichiarate obsolete. Le API di Amazon EMR, tuttavia, sono retrocompatibili, se quindi crei uno strumento utilizzando queste API, funzionerà anche quando Amazon EMR aggiornerà la versione di Hadoop in uso.

Torna all'inizio >>


D: Come si esegue il debug di un cluster?

Prima di tutto seleziona il cluster di cui desideri eseguire il debug, quindi fai clic sul pulsante "Debug" per accedere alla relativa finestra nella Console di gestione AWS. In questo modo potrai monitorare l'avanzamento e identificare i problemi di fasi, processi, attività, o attività tentate del cluster. In alternativa puoi accedere tramite SSH direttamente alle istanze di Amazon Elastic Compute Cloud (Amazon EC2) in esecuzione nel cluster e usare i comandi di debug della riga di comando per risolverne i problemi.

D: Cos'è lo strumento di debug dei cluster?

Lo strumento di debug dei cluster è una sezione della Console di gestione AWS in cui è possibile monitorare l'avanzamento e identificare i problemi di fasi, processi, attività in corso o attività tentate del cluster. Per accedere allo strumento di debug dei cluster, seleziona il cluster di cui desideri eseguire il debug, quindi fai clic sul pulsante "Debug".

D: Come si abilita la funzione di debug su un cluster?

Per abilitare la funzione di debug, è necessario impostare il flag "Enable Debugging" nella Console di gestione AWS al momento della creazione di un cluster. In alternativa, puoi applicare i flag --enable-debugging e --log-uri nel client a riga di comando quando crei il cluster.

D: Dove è possibile trovare istruzioni su come usare la finestra di debug di un cluster?

Consulta la sezione AWS Management Console della Developer's Guide per istruzioni su come accedere e usare la finestra di debug dei cluster.

D: Su quali tipi di cluster è possibile eseguire il debug nella finestra di debug?

È possibile eseguire il debug di tutti i tipi di cluster supportati da Amazon EMR, inclusi JAR personalizzati, streaming, Hive e Pig.

D: Perché è necessario registrarsi ad Amazon SimpleDB per poter eseguire il debug di un cluster?

Amazon EMR memorizza le informazioni sullo stato di processi Hadoop, attività e attività tentate nel tuo account in Amazon SimpleDB. Puoi registrarti ad Amazon SimpleDB da questa pagina.

D: È possibile usare la funzione di debug dei cluster senza l'abbonamento ad Amazon SimpleDB?

Senza l'abbonamento ad Amazon SimpleDB potrai esplorare le fasi del cluster e i relativi log, ma non potrai esplorare processi, attività e attività tentate di Hadoop.

D: È possibile eliminare i dati nello storico dei cluster da Amazon SimpleDB?

Sì. Puoi eliminare i domini Amazon SimpleDB che Amazon EMR ha creato per te. Per istruzioni su come eseguire questa operazione, consulta la documentazione di Amazon SimpleDB.

Torna all'inizio >>


D: Come si caricano i dati in Amazon S3?

Per caricare dati su Amazon S3 puoi usare le relative API. In alternativa, puoi usare diversi client open source o commerciali.

D: Come si ottengono i log per i cluster che hanno completato l'elaborazione?

I log di sistema Hadoop e i log dell'utente vengono memorizzati nel bucket Amazon S3 specificato al momento della creazione del cluster.

D: I log vengono compressi?

No. Al momento Amazon EMR non comprime i log prima di trasferirli in Amazon S3.

D: È possibile caricare i dati da Internet o comunque da fonti esterne ad Amazon S3?

Sì. L'applicazione Hadoop può caricare dati da qualsiasi fonte su Internet e da altri servizi AWS. Se i dati vengono caricati da Internet, saranno applicate le tariffe per la larghezza di banda di EC2. Amazon EMR fornisce inoltre accesso basato su Hive ai dati in DynamoDB.

Torna all'inizio >>


D: Amazon EMR è in grado di fornire una stima di quanto durerà l'elaborazione dei dati?

No. Poiché i cluster e i dati in entrata possono variare, non è possibile ottenere la stima della durata di un processo.

D: Quanto costa Amazon EMR?

Come tutti gli altri servizi di AWS, i prezzi sono calcolati in base all'uso effettivo. Non sono previste tariffe minime, né pagamenti anticipati o contratti di lungo termine. I prezzi di Amazon EMR si sommano a quelli di Amazon EC2 e Amazon S3.

Per ulteriori informazioni sulle tariffe di Amazon EMR, consulta la pagina dei prezzi di EMR.

I costi per l'utilizzo di Amazon EC2, Amazon S3 e Amazon SimpleDB vengono addebitati separatamente. I prezzi di Amazon EMR sono calcolati in base al secondo di utilizzo per ciascun tipo di istanza (con una tariffa minima di 1 minuto), dal momento in cui viene richiesto il cluster fino al momento in cui viene terminato. Per ulteriori informazioni sui tipi di istanza di Amazon EC2, i prezzi Spot di Amazon EC2, i prezzi delle istanze riservate di Amazon EC2, i prezzi di Amazon S3 e i prezzi di Amazon SimpleDB, segui i seguenti collegamenti:

Tipi di istanze di Amazon EC2

Prezzi delle istanze riservate di Amazon EC2

Prezzi delle Istanze Spot di Amazon EC2

Prezzi di Amazon S3

Prezzi di Amazon SimpleDB

D: Quando inizia e quando termina il periodo di fatturazione dei cluster di Amazon EMR?

La fatturazione inizia quando Amazon EMR avvia l'esecuzione del cluster. Sono fatturati solo i costi per le risorse effettivamente consumate. Ad esempio, supponiamo di aver avviato 100 istanze Small Standard di Amazon EC2 per un cluster di Amazon EMR, il cui costo incrementale è di 0,015 USD all'ora. Le istanze di Amazon EC2 inizieranno ad avviarsi immediatamente, ma non si avvieranno necessariamente tutte nello stesso momento. Amazon EMR monitorerà l'avvio di ogni istanza, inserendole nel cluster in modo che possano accettare le attività di elaborazione.

Nei 10 minuti successivi alla richiesta di avvio, Amazon EMR avvia il cluster (se tutte le istanze sono disponibili) oppure inserisce tutte le istanze possibili. Passati i primi 10 minuti, Amazon EMR avvierà l'elaborazione del cluster appena è disponibile almeno il 90% delle istanze richieste (iniziando quindi la fatturazione). Quando il 10% rimanente di istanze viene aggiunto, Amazon EMR inizierà la fatturazione anche di tali istanze.

Nell'esempio, quindi, se tutte le 100 richieste di istanza sono disponibili 10 minuti dopo la richiesta di avvio, ti verranno addebitati 1,50 USD all'ora (100 * 0,015 USD) per tutta la durata dell'operazione. Se solo 90 istanze sono disponibili allo scadere dei 10 minuti, ti verranno addebitati 1,35 USD all'ora (90 * 0,015 USD) finché il numero di istanze in esecuzione nel cluster non cambia. Quando le 10 istanze rimanenti si avviano, ti verranno addebitati 1,50 USD all'ora (100 * 0,015 USD) per tutto il tempo necessario al completamento di tutte le istanze.

Ogni cluster rimarrà in esecuzione finché non si verifica una delle seguenti condizioni: termini il cluster tramite una chiamata API TerminateJobFlows API (o con modalità equivalenti); il cluster si chiude; il cluster viene terminato a causa di un errore software o di un guasto hardware.

D: Da dove è possibile monitorare l'utilizzo di Amazon EMR, Amazon EC2 e Amazon S3?

Per monitorare l'utilizzo dei servizi AWS, utilizza la console di gestione di fatturazione e costi.

D: Come vengono calcolate le ore-istanza normalizzate nella console?

Nella Console di gestione AWS, ogni cluster dispone della colonna Normalized Istance Hours, in cui viene elencata un'approssimazione di ore di elaborazione utilizzate dal cluster, arrotondate in eccesso. Le ore-istanza normalizzate corrispondono alle ore di elaborazione in base all'equazione per cui 1 ora di utilizzo di un'istanza m1.small corrisponde a 1 ora di elaborazione normalizzata. La seguente tabella mostra il fattore di normalizzazione utilizzato per calcolare le ore-istanza normalizzate a seconda delle dimensioni dell'istanza:

Dimensione istanza Fattore di normalizzazione
Small 1
Medium 2
Large 4
Xlarge 8
2xlarge 16
4xlarge 32
8xlarge 64

Ad esempio, se è in esecuzione un cluster da 10 nodi r3.8xlarge per un'ora, il numero totale di ore-istanza normalizzate nella console corrisponderà a 640: 10 (numero di nodi) x 64 (fattore di normalizzazione) x 1 (numero di ore di esecuzione del cluster) = 640.

 

Si tratta di un'approssimazione da non utilizzare a scopi di fatturazione. Consulta la Console di gestione di fatturazione e costi se desideri sapere l'esatto utilizzo di Amazon EMR. Nota: abbiamo modificato di recente il fattore di normalizzazione affinché riflettesse in modo più accurato la capacità di ciascuna istanza; il fattore di normalizzazione non influisce direttamente sulla fattura mensile.

D: Amazon EMR supporta le istanze riservate on demand, Spot e riservate di Amazon EC2?

Sì. Amazon EMR supporta le istanze on demand, le istanze Spot e le istanze riservate. Fai clic qui per ulteriori informazioni sulle istanze riservate di Amazon EC2. Fai clic qui per ulteriori informazioni sulle istanze Spot di Amazon EC2.


D: I prezzi includono le tasse?

Salvo diversa indicazione, i prezzi sono al netto di eventuali tasse e imposte doganali, inclusa l'IVA ed eventuali imposte sulle vendite. Per i clienti con indirizzo di fatturazione in Giappone, l'utilizzo dei servizi AWS è soggetto all'imposta sul consumo giapponese. Ulteriori informazioni.

Torna all'inizio >>


D: Come è possibile impedire ad altre persone di visionare i dati durante l'esecuzione di un cluster?

Amazon EMR avvia le istanze in due gruppi di sicurezza di Amazon EC2, uno master e uno slave. Il gruppo di sicurezza master mantiene una porta aperta per comunicare con il servizio. Inoltre mantiene la porta SSH aperta per consentirti di accedere tramite SSH alle istanze tramite la chiave specificata all'avvio. Le istanze slave sono avviate in un gruppo di sicurezza separato e possono comunicare esclusivamente con l'istanza master. Di default, entrambi i gruppi di sicurezza sono configurati per non consentire l'accesso dall'esterno, ad esempio da istanze Amazon EC2 di altri clienti. Poiché si tratta di gruppi di sicurezza all'interno del tuo account, puoi riconfigurarli utilizzando gli strumenti standard di EC2 o il pannello di controllo. Fai clic qui per ulteriori informazioni sui gruppi di sicurezza di EC2.

D: Qual è il livello di sicurezza dei dati?

Amazon S3 fornisce meccanismi di autenticazione che proteggono i dati memorizzati da accessi non autorizzati. A meno che il cliente che carica i dati non modifichi la configurazione, solo lui può accedere ai dati. I clienti di Amazon EMR possono anche scegliere di inviare i dati in Amazon S3 utilizzando il protocollo HTTPS per maggiore sicurezza durante il trasferimento. Inoltre, Amazon EMR utilizza sempre il protocollo HTTPS per inviare dati tra Amazon S3 e Amazon EC2. Per maggiore sicurezza, i clienti possono crittografare i dati in entrata prima di caricarli in Amazon S3 (usando i comuni strumenti di compressione dei dati); tuttavia dovranno aggiungere una fase di decrittografia all'inizio del cluster quando Amazon EMR carica i dati da Amazon S3.

D: È possibile consultare uno storico di tutte le chiamate API di EMR su un account per eseguire audit di sicurezza e di conformità?

Sì. AWS CloudTrail è un servizio Web che registra le chiamate alle API di AWS per il tuo account e fornisce i relativi file di log. Lo storico delle chiamate API di AWS creato da CloudTrail rende possibile analisi di sicurezza, monitoraggio delle modifiche alle risorse e audit di conformità. Per ulteriori informazioni su CloudTrail consulta la pagina dei dettagli di AWS CloudTrail, quindi attiva il servizio tramite la Console di gestione AWS di CloudTrail.

Torna all'inizio >>


D: In che modo Amazon EMR usa le zone di disponibilità?

Amazon EMR avvia tutti i nodi di un cluster nella stessa zona di disponibilità di Amazon EC2. Eseguire un cluster nella stessa zona di disponibilità consente migliori prestazioni perché fornisce una maggiore velocità nell'accesso ai dati. Di default, Amazon EMR avvia il cluster nella zona di disponibilità che offre la maggiore quantità di risorse. Tuttavia, se necessario, è possibile specificare una zona di disponibilità differente.

D: In quali regioni è disponibile Amazon EMR?

Per un elenco completo delle regioni AWS supportate da Amazon EMR, consulta la tabella delle regioni AWS per l'infrastruttura globale AWS.

D: Quale regione è più conveniente selezionare per l'esecuzione di un cluster?

Al momento della creazione di un cluster, consigliamo sempre di selezionare la regione in cui si trovano i dati.

D: È possibile utilizzare dati che si trovano in una regione europea per un cluster in una regione degli Stati Uniti e viceversa?

Sì. Il trasferimento di dati tra regioni diverse sarà tuttavia soggetto alle tariffe per la larghezza di banda. Per informazioni sui prezzi della larghezza di banda, visita la sezione relativa ai prezzi della pagina dei dettagli di EC2.

D: In che modo la regione AWS GovCloud (US) è diversa dalle altre?

La regione AWS GovCloud (US) è stata creata per le agenzie governative e altri clienti negli Stati Uniti. Soddisfa i requisiti delle norme ITAR negli USA. In GovCloud, EMR non supporta le istanze Spot né la funzione di abilitazione del debug. Inoltre, in GovCloud la console di gestione di EMR non è ancora disponibile.

Torna all'inizio >>


D: In che modo Amazon EMR impiega Amazon EC2 e Amazon S3?

I clienti di AWS caricano i loro dati di input e le applicazioni di elaborazione dei dati in Amazon S3. Amazon EMR avvia quindi un certo numero di istanze Amazon EC2, secondo quanto richiesto dal cliente. Il servizio avvia l'esecuzione del cluster ed estrae i dati da elaborare da Amazon S3 usando il protocollo S3N nelle istanze avviate di Amazon EC2. Una volta terminata l'elaborazione del cluster, Amazon EMR trasferisce i dati risultanti in Amazon S3, dove i clienti possono consultarli o usarli come input per un altro cluster.

D: Come funzionano le operazioni di calcolo in Amazon EMR?

Amazon EMR usa il motore di elaborazione dei dati di Hadoop per l'elaborazione dei dati con il modello di programmazione MapReduce. Il cliente implementa il proprio algoritmo in termini di funzioni map() e reduce(). Il servizio avvia il numero di istanze Amazon EC2 richieste dal cliente, di cui una master e le altre slave. Amazon EMR esegue il software Hadoop in queste istanze. Il nodo master divide i dati in entrata in blocchi, distribuendone l'elaborazione in un nodo slave. Ogni nodo slave esegue quindi la funzione map sui dati che gli sono stati allocati, generando dati parziali. Questi dati parziali vengono ordinati, partizionati e inviati ai processi che applicano la funzione reducer. Questi processi possono essere eseguiti anche su nodi slave. Infine, i dati di output provenienti dal processo reducer sono raccolti in file. Un singolo "cluster" può essere composto da una serie di simili fasi MapReduce.

D: Qual è il livello di affidabilità di Amazon EMR?

Amazon EMR gestisce i cluster di istanze di calcolo Amazon EC2 utilizzando la rete di infrastrutture e data center ad elevata affidabilità e disponibilità. Amazon EMR usa inoltre il collaudato software Hadoop, che garantisce tolleranza ai guasti, come motore di elaborazione dei dati. Hadoop divide i dati in diversi sottoinsiemi, assegnando ognuno di loro a più di un'istanza Amazon EC2. In questo modo, se un'istanza di Amazon EC2 interrompe l'elaborazione di uno dei sottoinsiemi di dati, è possibile usare i risultati provenienti da un'altra istanza.

D: Quanto impiega un cluster per avviarsi e per iniziare l'elaborazione dei dati?

Amazon EMR avvia il provisioning di risorse con istanze on demand di Amazon EC2 in modo quasi immediato. Se le istanze non sono immediatamente disponibili, Amazon EMR continuerà a tentare il provisioning di risorse per il cluster finché le raccoglie tutte o annulli la richiesta. Il provisioning dell'istanza viene effettuato sulla base delle migliori stime possibili e dipende dal numero di istanze richieste, dall'ora a cui viene creato il cluster e dal numero totale di richieste nel sistema. Quando tutte le risorse sono state assegnate, l'elaborazione inizia in genere entro 15 minuti.

Per garantire la capacità richiesta per i tuoi cluster quando occorre, ti potrà essere addebitato una tariffa una tantum per le istanze riservate di Amazon EC2, in modo da prenotare la capacità necessaria nel cloud a una tariffa oraria scontata. Analogamente a quanto avviene per le istanze on demand, vengono addebitati i costi di utilizzo solo per le istanze in esecuzione. Le istanze riservate consentono così alle aziende con requisiti prevedibili di mantenere l'elasticità e la flessibilità delle istanze on demand riducendo ulteriormente i costi di utilizzo.

D: Quali tipi di istanza Amazon EC2 supporta Amazon EMR?

Amazon EMR supporta 12 tipi di istanza EC2, inclusi Standard, CPU extra, memoria extra, cluster compute, I/O extra e storage extra. Le istanze Standard hanno un rapporto tra CPU e memoria ideale per le applicazioni di carattere generale. Le istanze con CPU extra hanno, in proporzione, più risorse CPU che memoria (RAM) e sono più adatte alle applicazioni con requisiti di elaborazione elevati. Le istanze con memoria extra offrono dimensioni maggiori, per le applicazioni con elevati throughput. Le istanze cluster compute hanno, in proporzione, più risorse CPU con prestazioni di rete elevate e sono particolarmente idonee ad applicazioni HPC (High Performance Compute) e ad altre applicazioni complesse associate alla rete. Le istanze con storage extra offrono 48 TB di storage su 24 dischi e sono ideali per le applicazioni che richiedono accessi in sequenza a set di dati di grandi dimensioni, ad esempio per data warehousing ed elaborazione di log. Consulta la pagina dei prezzi di EMR per informazioni sui tipi di istanza disponibili e sui relativi prezzi per regione.

D: Come si sceglie il tipo di istanza Amazon EC2 più adatto per un'applicazione?

Quando scegli quale tipo di istanza usare, devi considerare le caratteristiche della tua applicazione in termini di utilizzo di risorse e selezionare la famiglia di istanze più adatta. Uno dei vantaggi di utilizzare Amazon EMR con Amazon EC2 è che i prezzi sono calcolati in base all'uso effettivo, perciò puoi testare le prestazioni dei cluster con quantità e tipi di istanze differenti senza costi elevati. Per determinare quale tipo di istanza è più adatto per un'applicazione, ad esempio, puoi avviare diversi cluster di piccole dimensioni e valutarne le prestazioni.

D: Come si sceglie il numero di istanze più adatto per un cluster?

Il numero di istanze da usare in un cluster dipende dall'applicazione da eseguire e può variare in base alla quantità di risorse necessaria per memorizzare ed elaborare i dati e alla quantità di tempo che sei disposto ad attendere per il completamento del processo. In generale, consigliamo di non utilizzare più del 60% di spazio su disco per il salvataggio dei dati da elaborare; lo spazio rimanente servirà per i dati parziali. Di conseguenza, se hai configurato tre repliche in HDFS e desideri elaborare 5 TB di dati su istanze m1.xlarge, che dispongono di 1.690 GB di spazio su disco, il cluster dovrebbe contenere almeno (5 TB * 3) / (1.690 GB * 0,6) = 15 nodi principali m1.xlarge. Se l'attività genera una maggiore quantità di dati parziali o ha requisiti di I/O molto elevati, puoi anche aumentare il numero di nodi principali. Puoi anche decidere di includere nodi di task aggiuntivi per migliorare le prestazioni di elaborazione. Consulta Tipi di istanza Amazon EC2 per ulteriori informazioni sullo storage dell'istanza locale per le diverse configurazioni di tipi di istanza.

D: Quanto tempo impiega un cluster a completare l'elaborazione?

La durata dell'elaborazione del cluster dipende da diversi fattori, tra cui il tipo di cluster, la quantità di dati da elaborare e il numero e i tipi di istanze Amazon EC2 utilizzate dal cluster.

D: Se il nodo master di un cluster subisce un'interruzione, Amazon EMR può recuperare l'elaborazione?

No. Se il nodo master subisce un'interruzione, il cluster sarà terminato e dovrai eseguire nuovamente l'attività. Al momento Amazon EMR non supporta il failover automatico né il ripristino dei nodi master. In caso di errore del nodo master, la Console di gestione AWS mostra il messaggio "The master node was terminated" a indicare che il nodo master è stato terminato e che dovrai avviare un nuovo cluster. Puoi implementare dei checkpoint nei cluster per salvare in Amazon S3 i dati parziali (ossia i dati creati all'interno di un cluster ma non ancora sottoposti alla funzione reducer). In questo modo, in caso di guasto, potrai riprendere l'elaborazione del cluster dall'ultimo checkpoint.

D: Se un nodo slave di un cluster subisce un'interruzione, Amazon EMR può recuperare l'elaborazione?

Sì. Amazon EMR garantisce tolleranza ai guasti dei nodi slave e prosegue nell'elaborazione anche quando un nodo slave subisce un'interruzione. Il servizio effettua inoltre il provisioning di un nuovo nodo in caso di errore di un nodo principale. Tuttavia, non eseguirà alcuna sostituzione se tutti i nodi di un cluster subiscono un'interruzione.

D: È possibile accedere tramite SSH ai nodi di un cluster?

Sì. Puoi accedere tramite SSH ai nodi del cluster ed eseguire comandi Hadoop in modo diretto. Se desideri accedere a un nodo slave tramite SSH, devi prima accedere nello stesso modo al nodo master.

D: È possibile usare istanze di Microsoft Windows con Amazon EMR?

Al momento Amazon EMR supporta Debian/Lenny a 32 e a 64 bit. Tuttavia, ascoltiamo sempre le richieste dei clienti e in futuro verranno aggiunte nuove funzioni per migliorare le capacità di elaborazione dei dati.

D: Cos'è Bootstrap Actions di Amazon EMR?

Bootstrap Actions è una funzionalità di Amazon EMR che consente agli utenti di eseguire configurazioni personalizzate prima di eseguire un cluster. Bootstrap Actions può essere usato per installare software o per configurare le istanze prima che il cluster venga avviato. Per ulteriori informazioni sulle bootstrap action consulta la Developer Guide di EMR.

D: Come si usano le bootstrap action?

Puoi scrivere uno script bootstrap action in qualsiasi linguaggio già installato sull'istanza del cluster, ad esempio Bash, Perl, Python, Ruby, C++ e Java. Sono disponibili diverse bootstrap action predefinite. Una volta completata la compilazione dello script, devi caricarlo in Amazon S3 e indicarne il percorso all'avvio del cluster. Consulta la "Developer’s Guide": http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/ per ulteriori informazioni su come usare Bootstrap Actions.

D: Come si configurano le impostazioni di Hadoop per un cluster?

La configurazione Hadoop di default di EMR è adatta a un'ampia gamma di carichi di lavoro. A seconda dei requisiti specifici di memoria e di elaborazione del cluster, tuttavia, potrebbe essere opportuno ottimizzarne le impostazioni. Ad esempio, se le attività assegnate al cluster hanno requisiti di memoria elevati, puoi scegliere di usare meno task per nodo principale e ridurre le dimensioni di heap del monitoraggio. In questo caso, è disponibile una bootstrap action predefinita per la configurazione del cluster all'avvio. Consulta Configure Memory Intensive Bootstrap Action nella Developer's Guide per informazioni sulla configurazione e istruzioni di utilizzo. È disponibile anche una bootstrap action predefinita che consente di personalizzare tutti i valori delle impostazioni del cluster. Consulta Configure Hadoop Bootstrap Action nella Developer's Guide per istruzioni di utilizzo.

D: È possibile modificare il numero di nodi slave in un cluster in esecuzione?

Sì. I nodi slave possono essere di due tipi: (1) nodi principali, che ospitano dati persistenti tramite HDFS ed eseguono attività di Hadoop e (2) nodi di task, che possono solo eseguire attività di Hadoop. Mentre un cluster è in esecuzione, puoi aumentare il numero di nodi principali e puoi aumentare o diminuire il numero di nodi di task. Queste operazioni possono essere eseguite tramite le API, il kit SDK per Java oppure tramite il client da riga di comando. Consulta la sezione Resizing Running clusters della Developer's Guide per ulteriori informazioni su come modificare le dimensioni di un cluster in esecuzione.

D: Quando è consigliabile usare nodi principali e quando nodi di task?

I nodi principali possono ospitare dati persistenti in HDFS e non possono essere rimossi, quindi sono più adatti a offrire la capacità che occorre al cluster per l'elaborazione. I nodi di task possono essere aggiunti e rimossi in qualsiasi momento e non contengono HDFS, perciò sono più idonei per offrire capacità temporanea.

D: Quando può risultare necessario modificare il numero di nodi slave nel cluster in esecuzione?

Ci sono diversi scenari in cui può essere utile modificare il numero di nodi slave in un cluster in esecuzione. Se l'elaborazione del cluster è più lenta del previsto, oppure se cambia la scadenza entro la quale è necessario avere risultati, puoi aumentare il numero di nodi principali per migliorare le prestazioni del cluster. Se le diverse fasi di un cluster prevedono diversi requisiti di capacità, puoi iniziare con un numero non elevato di nodi principali, aumentando o diminuendo il numero di nodi di task a seconda delle esigenze.

D: È possibile modificare automaticamente il numero di nodi slave tra diverse fasi di un cluster?

Sì. Puoi includere nel flusso di lavoro una fase predefinita che determini automaticamente il ridimensionamento di un cluster tra due fasi con diversi requisiti di capacità. Poiché tutte le fasi vengono avviate in sequenza, potrai impostare il numero preciso di nodi slave per ogni fase del cluster.

D: Come si consente l'accedere a un cluster ad altri utenti IAM?

Per creare un nuovo cluster che sia visibile a tutti gli utenti IAM, aggiungi il flag --visible-to-all-users nell'interfaccia a riga di comando di EMR al momento della creazione del cluster. Ad esempio: elastic-mapreduce --create --visible-to-all-users. Nella console di gestione, seleziona "Visible to all IAM Users" nel riquadro Advanced Options della procedura guidata Create cluster.

Per rendere un cluster esistente visibile a tutti gli utenti IAM, è necessario utilizzare l'interfaccia a riga di comando di EMR. Usa --set-visible-to-all-users e specifica l'identificatore del cluster. Ad esempio: elastic-mapreduce --set-visible-to-all-users true --jobflow j-xxxxxxx. Questa operazione può essere eseguita esclusivamente dal creatore del cluster.

Per ulteriori informazioni, consulta la sezione Configuring User Permissions della EMR Developer Guide.

Torna all'inizio >>


D: Su quali risorse di Amazon EMR è possibile applicare tag?

È possibile aggiungere tag a un cluster Amazon EMR attivo. Un cluster di Amazon EMR è composto da istanze Amazon EC2, perciò un tag applicato a un cluster verrà propagato a tutte le istanze Amazon EC2 attive al suo interno. Non è possibile aggiungere, modificare o rimuovere tag per cluster terminati o per istanze Amazon EC2 terminate che facevano parte di un cluster attivo.

D: L'applicazione di tag in Amazon EMR supporta le autorizzazioni basate sulle risorse con gli utenti IAM?

No, Amazon EMR non supporta le autorizzazioni basate sulle risorse tramite tag. È importante tuttavia notare che i tag propagati alle istanze Amazon EC2 hanno gli stessi effetti dei comuni tag di Amazon EC2. Di conseguenza, una policy di IAM per Amazon EC2 si comporterà con i tag propagati da Amazon EMR come se soddisfacessero le condizioni di tale policy.

D: Quanti tag è possibile applicare a una risorsa?

Puoi applicare fino a dieci tag su un cluster Amazon EMR.

D: I tag di Amazon EMR applicati a un cluster vengono mostrati in ogni relativa istanza Amazon EC2? Se viene rimosso un tag su un cluster Amazon EMR, verrà rimosso anche dalle relative istanze EC2?

Sì, Amazon EMR propaga i tag aggiunti a un cluster anche alle relative istanze EC2. Pertanto, un tag aggiunto a un cluster Amazon EMR sarà applicato anche alle istanze Amazon EC2 ad esso associate. Analogamente, se viene rimosso un tag da un cluster Amazon EMR, verrà rimosso anche dalle relative istanze Amazon EC2. Tuttavia, se usi le policy IAM per Amazon EC2 e desideri impiegare la funzionalità di applicazione di tag di Amazon EMR, assicurati di disporre dell'autorizzazione all'utilizzo delle API di applicazione tag di Amazon EC2 CreateTags e DeleteTags.

D: Come si fa a visualizzare i tag nell'estratto conto per suddividere i costi?

Puoi selezionare i tag che desideri usare nel report di fatturazione di AWS qui. Per consultare quindi il costo complessivo delle risorse, puoi ordinare le informazioni di fatturazione raggruppando le risorse con gli stessi tag.

D: Come si specifica quali istanze Amazon EC2 fanno parte di un cluster Amazon EMR?

Un'istanza Amazon EC2 associata a un cluster Amazon EMR avrà due tag di sistema:

  • aws:elasticmapreduce:instance-group-role=CORE
    • Key = instance-group role ; Value = [CORE or TASK] 
  • aws:elasticmapreduce:job-flow-id=j-12345678
    • Key = job-flow-id ; Value = [JobFlowID]

D: È possibile modificare i tag direttamente sulle istanze Amazon EC2?

Sì, puoi aggiungere o rimuover tag direttamente sulle istanze Amazon EC2 che fanno parte di un cluster Amazon EMR. Tuttavia sconsigliamo di operare in questo modo: il sistema di tag di Amazon EMR non sincronizzerà direttamente le modifiche a un'istanza Amazon EC2 associata. Consigliamo invece di aggiungere e rimuovere i tag per i cluster Amazon EMR dalla console di Amazon EMR oppure tramite API, per assicurare che al cluster e alle relative istanze Amazon EC2 siano applicati i tag corretti.

Torna all'inizio >>

D: Cosa consente di fare Amazon EMR che non fosse possibile già fare prima?

La maggior parte delle istanza EC2 ha una capacità di storage fissa associata a un'istanza, nota come "instance store". Ora puoi personalizzare lo storage su un'istanza aggiungendo volumi EBS alle istanze nel tuo cluster Amazon EMR. Puoi inoltre eseguire i cluster Amazon EMR su famiglie di istanze che siano solo EBS quali M4 e C4.

D: Quali sono i vantaggi offerti dall'aggiunta di volumi EBS a un'istanza in esecuzione su Amazon EMR?

L'aggiunta di volumi EBS a un'istanza offre vantaggi negli scenari seguenti:

  1. I requisiti di elaborazione sono tali che è necessaria una grande quantità di storage HDFS (o locale) che sia immediatamente disponibile su un'istanza. Il supporto dei volumi EBS ti consente di personalizzare la capacità di storage su un'istanza relativa alla capacità di elaborazione fornita dall'istanza stessa. L'ottimizzazione dello storage su un'istanza ti consentirà inoltre di ridurre i costi.
  2. Stai eseguendo una famiglia di istanze di generazioni precedenti (ad esempio M1 ed M2) e desideri passare alla famiglia di istanze di ultima generazione ma sei limitato dallo storage disponibile per nodo sui tipi di istanze di prossima generazione. Ora puoi utilizzare uno qualsiasi dei tipi di istanze di nuova generazione e aggiungere volumi EBS per ottimizzare lo storage.  Valutazioni interne indicano che puoi ridurre i costi e migliorare le prestazioni passando da una famiglia di istanze di generazioni precedenti (M1 o M2) a una di nuova generazione (M4, C4 ed R3).  Il team Amazon EMR consiglia di eseguire l'applicazione per giungere alla giusta conclusione.
  3. Vuoi utilizzare o eseguire la migrazione della famiglia di istanze M4 e C4 solo EBS di prossima generazione.

D: Posso mantenere i miei dati su un volume EBS successivamente alla terminazione di un cluster?

Attualmente Amazon EMR elimina i volumi successivamente alla terminazione del cluster. Se desideri mantenere i dati oltre il ciclo di vita di un cluster, prendi in esame l'utilizzo di Amazon S3 come data store.

D: Quale tipo di volumi EBS posso associare a un'istanza?

Amazon EMR consente di utilizzare tipi di volumi EBS differenti: General Purpose SSD (GP2), Magnetic e Provisioned IOPS (SSD).

D: Una volta terminato il cluster, che fine fanno i volumi EBS?

Al termine del cluster EMR, Amazon EMR elimina i volumi.

D: Posso utilizzare un EBS con istanze che hanno già un instance store?

Sì, puoi aggiungere volumi EBS alle istanze che hanno un instance store.

D: Posso associare un volume EBS a un cluster in esecuzione?

No, attualmente è possibile solo aggiungere volumi EBS quando si avvia un cluster.

D: Posso eseguire snapshot di volumi da un cluster?

L'API di EBS consente di eseguire lo snapshot di un cluster. Amazon EMR non consente tuttavia al momento di eseguire il ripristino da uno snapshot.

D: Posso utilizzare volumi EBS crittografati?

No, i volumi crittografati non sono supportati nell'attuale versione.

D: Cosa succede quando rimuovo un volume associato da un cluster in esecuzione?

La rimozione di un volume associato da un cluster in esecuzione verrà trattata come un errore del nodo.  Amazon EMR sostituirà il nodo e il volume EBS con nodi e volumi corrispondenti.

Torna all'inizio >>


D: Cos'è Apache Hive?

Hive è un pacchetto open source di data warehouse e analisi eseguibile con Hadoop. Hive funziona con un linguaggio basato su SQL chiamato Hive QL, che consente di creare strutture, riepiloghi e query di dati memorizzati in Amazon S3. Hive QL ha più funzioni di SQL, supporta le funzioni di mappatura/riduzione e permette l'uso di tipi di dati estensibili complessi definiti dall'utente quali JSON e Thrift. Grazie a questa funzionalità, è possibile elaborare origini dati complesse e anche non strutturate quali documenti di testo e file di log. Hive consente l'utilizzo di estensioni utente tramite funzioni definite dall'utente scritte in Java e distribuite tramite lo storage in Amazon S3.

D: Cosa è possibile fare con Hive in esecuzione in Amazon EMR?

Utilizzando Hive con Amazon EMR, è possibile implementare applicazioni di elaborazione dati complesse usando un linguaggio simile al comune SQL e strumenti disponibili in Amazon EMR. Con Amazon EMR, puoi convertire le applicazioni Hive in data warehouse affidabili che eseguano attività quali analisi di dati, monitoraggio e operazioni di business intelligence.

D: In che modo Hive si differenzia dai sistemi RDBMS tradizionali?

I sistemi di gestione di database relazionali o RDBMS tradizionali forniscono semantica di transazioni e proprietà ACID. Consentono inoltre l'indicizzazione e la memorizzazione nella cache delle tabelle, per recuperare molto rapidamente piccole porzioni di dati. Permettono il rapido aggiornamento di piccole quantità di dati e l'applicazione di limitazioni per l'integrità referenziale. In genere vengono eseguiti su un singolo computer molto potente e non offrono alcun supporto per l'esecuzione di funzioni map e reduce sulle tabelle né consentono di operare su tipi di dati definiti complessi.

Hive, invece, esegue query di tipo SQL impiegando MapReduce. Di conseguenza, è ottimizzato per la scansione completa di tabelle durante l'esecuzione su cluster di computer e garantisce l'elaborazione di grandi quantità di dati. Hive fornisce tabelle partizionate, che consentono la scansione di una partizione di una tabella invece della relativa tabella completa, se possibile per la query in esecuzione.

I sistemi RDMS tradizionali offrono il massimo quando semantica di transazioni e integrità referenziale sono requisiti fondamentali e sono previsti aggiornamenti continui di minore importanza. Hive offre il massimo nella trasformazione, analisi e creazione di report offline relativi a set di dati di grandi dimensioni; ad esempio, per l'analisi dei dati di clickstream di un grande sito Web o di una serie di siti Web.

È pratica comune esportare i dati dai sistemi RDBMS in Amazon S3, da dove è possibile eseguire l'analisi offline utilizzando i cluster Amazon EMR che eseguono Hive.

D: Che cosa occorre per cominciare a utilizzare Hive su Amazon EMR?

Per iniziare, ti consigliamo di consultare i nostri tutorial di testo e video in questa pagina: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2862

D: Hive contiene nuove caratteristiche specifiche per Amazon EMR?

Sì. Sono presenti quattro nuove caratteristiche che rendono Hive ancora più potente se usato in sinergia con Amazon EMR. Queste funzionalità sono:

a) La possibilità di caricare automaticamente partizioni di tabelle da Amazon S3. In precedenza, per importare una tabella partizionata occorreva un'istruzione alter table separata per ciascuna singola partizione nella tabella. Amazon EMR invece include un nuovo tipo di istruzione per il linguaggio Hive: "alter table recover partitions". Questa istruzione consente di importare con la massima semplicità e simultaneamente diverse tabelle in più cluster senza dover conservare uno store di metadati condivisi. Utilizza questa funzionalità per leggere da tabelle in cui vengono caricati i dati provenienti da processi esterni (ad esempio file di log).

b) La possibilità di specificare uno store di metadati esterno all'istanza. Di default, lo store di metadati in cui Hive memorizzare le informazioni dello schema si trova nel nodo master e viene rimosso quando il cluster viene terminato. Questa funzione consente di ignorare il percorso dello store di metadati da usare, ad esempio un'istanza MySQL che è già in esecuzione in EC2.

c) La scrittura di dati direttamente in Amazon S3. Durante la scrittura di dati sulle tabelle in Amazon S3, la versione di Hive installata in Amazon EMR scrive direttamente in Amazon S3 senza dover utilizzare file temporanei. In questo modo le prestazioni risultano migliori; tuttavia S3 e HDFS in questo caso hanno un comportamento differente dal punto di vista di Hive. Non potrai leggere o scrivere la stessa istruzione all'interno della stessa tabella se questa si trova in Amazon S3. Se occorre aggiornare una tabella in S3, è possibile creare una tabella temporanea nel file system HDFS del cluster locale, trascrivere i risultati in questa tabella e infine copiarli in Amazon S3.

d) L'accesso alle risorse situate in Amazon S3. La versione di Hive installata in Amazon EMR consente di fare riferimento a risorse quali script per operazioni map e reduce personalizzate e librerie aggiuntive situate in Amazon S3 direttamente dallo script di Hive (ad esempio add jar s3://elasticmapreduce/samples/hive-ads/libs/jsonserde.jar).

D: Quali tipi di cluster di Hive sono supportati?

I tipi di cluster supportati con Hive sono due: interattivi e batch. In modalità interattiva puoi avviare un cluster ed eseguire script Hive in modo interattivo direttamente sul nodo master. In genere, questa modalità viene impiegata per l'analisi di dati ad hoc e per lo sviluppo di applicazioni. In modalità batch lo script viene immagazzinato in Amazon S3 e indicato all'inizio del cluster. In genere, questa modalità viene usata per le attività iterabili quali la generazione di report.

D: Come si avvia un cluster Hive?

I cluster sia interattivi sia batch possono essere avviati tramite la Console di gestione AWS, dal client da riga di comando di EMR e dalle API. Consulta la sezione Using Hive nella Developer's Guide per ulteriori dettagli su come avviare un cluster Hive.

D: Quando è preferibile usare Hive e quando PIG?

Sia Hive sia Pig forniscono linguaggi di calcolo dati di livello elevato, con supporto a tipi di dati complessi per l'elaborazione di set di dati di grandi dimensioni. Il linguaggio Hive è una variante di SQL ed è quindi più semplice per gli utenti che già conoscono SQL e i database relazionali. Hive offre il supporto per le tabelle partizionate, che consente ad Amazon EMR di scaricare solo la partizione della tabella che serve per l'esecuzione della query invece della tabella intera. Sia PIG sia Hive offrono l'ottimizzazione per piani di query. PIG consente l'ottimizzazione per uno script intero, mentre le query di Hive sono ottimizzate a livello di istruzione.

In definitiva, la scelta tra Hive o PIG dipende dai requisiti del dominio dell'applicazione e dalle preferenze degli utenti che procedono all'implementazione e di quelli che scrivono query.

D: Quali versioni di Hive supporta Amazon EMR?

Amazon EMR supporta diverse versioni di Hive, inclusa la versione 0.11.0.

D: È possibile scrivere su una tabella in due cluster contemporaneamente?

No. Hive non supporta la scrittura simultanea su più tabelle. Si consiglia di non eseguire più operazioni di scrittura contemporaneamente su più tabelle, e di non eseguire operazioni di lettura su una tabella mentre è anche in corso la scrittura. Quando lettura e scrittura o più scritture hanno luogo contemporaneamente, Hive ha un comportamento non deterministico.

D: È possibile condividere i dati tra cluster?

Sì. Puoi leggere dati in Amazon S3 tramite uno script Hive ponendo all'inizio di questo script istruzioni "create external table". Dovrai creare un'istruzione di tabella per ciascuna risorsa esterna a cui accedi.

D: È meglio eseguire un cluster di grandi dimensioni da condividere con più utenti, oppure molti cluster di piccole dimensioni?

Amazon EMR ti consente di utilizzare entrambi i metodi. Da una parte, un cluster di grandi dimensioni è più efficiente per l'elaborazione di carichi di lavoro in batch regolari. Dall'altra, quando occorre elaborare query ad hoc o carichi di lavoro variabili, può essere utile creare diversi cluster distinti, ognuno di loro ottimizzato per un determinato processo, che condividono le origini dati memorizzate in Amazon S3.

D: È possibile accedere a uno script o a una risorsa JAR che si trova nel file system locale?

No. Per poter utilizzare come riferimento lo script o la risorsa JAR, è necessario caricarli in Amazon S3 oppure nel nodo master del cluster. Per procedere al caricamento in Amazon S3, puoi usare strumenti quali s3cmd, jets3t e S3Organizer.

D: È possibile eseguire un cluster persistente con più query Hive?

Sì. Puoi eseguire un cluster configurato per l'interruzione manuale in modo che non venga terminato tra una fase e l'altra di Hive. Per ridurre il rischio di perdita di dati, consigliamo di archiviare periodicamente tutti i dati più importanti in Amazon S3. È buona norma trasferire regolarmente il tuo lavoro su un nuovo cluster per mettere alla prova il processo di ripristino in caso di errore di un nodo master.

D: È consentito a più utenti applicare fasi Hive sugli stessi dati sorgente?

Sì. Script Hive eseguiti da più utenti su cluster separati possono contenere istruzioni di tabelle esterne per importare contemporaneamente dati sorgente che si trovano in Amazon S3.

D: È consentito a più utenti eseguire query su uno stesso cluster?

Sì. In modalità batch, le fasi sono serializzate. Diversi utenti possono aggiungere fasi Hive allo stesso cluster, ma le fasi saranno eseguite in sequenza. In modalità interattiva, invece, diversi utenti possono accedere allo stesso cluster ed eseguire istruzioni Hive simultaneamente.

D: È possibile condividere dati tra più utenti AWS?

Sì. È possibile condividere dati con le modalità di condivisione standard di Amazon S3 descritte qui: http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html.

D: Hive supporta l'accesso da JDBC?

Sì. Hive fornisce driver JDBC che possono essere usati per eseguire istruzioni Hive in modo programmatico. Per avviare un servizio JDBC in un cluster, è necessario inoltrare un parametro opzionale nel client da riga di comando di Amazon EMR. Dovrai inoltre stabilire un tunnel SSH, poiché il gruppo di sicurezza non consente connessioni esterne.

D: Qual è la procedura di aggiornamento dei pacchetti nelle AMI di EMR?

Eseguiamo un gruppo selezionato di pacchetti dalla distribuzione stable di Debian, incluse patch di sicurezza. Un pacchetto viene aggiornato ogni volta che viene aggiornato nella distribuzione stable di Debian. Il pacchetto "r-recommended" nella nostra immagine è aggiornato con la distribuzione stable di Debian (http://packages.debian.org/search?keywords=r-recommended).

D: È possibile aggiornare i propri pacchetti sui cluster EMR?

Sì. Per installare aggiornamenti ai pacchetti suoi tuoi cluster, utilizza Bootstrap Actions.

D: È possibile elaborare dati di DynamoDB usando Hive?

Sì. È sufficiente definire una tabella Hive esterna basata sulla tabella DynamoDB. Quindi puoi usare Hive per analizzare i dati immagazzinati in DynamoDB e ricaricare i risultati in DynamoDB o archiviarli in Amazon S3. Per ulteriori informazioni consulta la Developer Guide.

Torna all'inizio >>


 

D: Che cos'è Impala?

Impala è uno strumento open source dell'ecosistema Hadoop per la creazione di query interattive ad hoc usando la sintassi SQL. Invece di impiegare MapReduce, sfrutta un motore a elaborazione parallela o MPP (Massively Parallel Processing) simile a quello che si trova nei comuni sistemi di gestione dei database relazionali o RDBMS (Relational Database Management System). Utilizzando questa architettura, puoi creare query dei tuoi dati nelle tabelle HDFS o HBase in modo molto rapido e sfruttare le funzionalità di Hadoop per elaborare vari tipi di dati e fornire lo schema al runtime. Per questo Impala è particolarmente adatto alle analisi interattive a bassa latenza. Impala impiega inoltre il metastore di Hive per conservare le informazioni sui dati in entrata, inclusi i nomi delle partizioni e i tipi di dati. Impala su Amazon EMR richiede AMI con Hadoop 2.x o versione successiva. Per ulteriori informazioni su Impala, fai clic qui.

D: Cosa è possibile fare con Impala in esecuzione in Amazon EMR?

Analogamente ad Hive con Amazon EMR, con Impala in Amazon EMR è possibile implementare applicazioni di elaborazione dati complesse usando una sintassi SQL. Impala, tuttavia, consente di ottenere migliori prestazioni in alcuni casi d'uso (ulteriori dettagli di seguito). Con Amazon EMR, puoi usare Impala come data warehouse affidabile che esegue attività quali analisi di dati, monitoraggio e operazioni di business intelligence. Portiamo ad esempio tre casi d'uso:

  • Usare Impala invece di Hive sui cluster che richiedono tempi di elaborazione lunghi per eseguire query ad hoc. Impala riduce le query interattive a secondi, per questo è un ottimo strumento di query. Puoi eseguire Impala sullo stesso cluster dei flussi di lavoro di MapReduce, usarlo su un cluster di analisi con lunghi tempi di elaborazione con Hive e Pig, oppure creare un cluster ottimizzato per le query di Impala.
  • Usare Impala invece di Hive per le operazioni di estrazione, trasformazione e caricamento dei dati o ETL (Extract, Transform, Load) in batch su cluster Amazon EMR temporanei. Impala consente un'elaborazione più rapida rispetto ad Hive per molti tipi di query, perciò migliora le prestazioni di questi carichi di lavoro. Come Hive, Impala usa sintassi SQL, perciò è semplice convertire le query da Hive a Impala.
  • Usare Impala in sinergia con uno strumento di business intelligence di terze parti. Collega un driver ODBC o JDBC client con il cluster per usare Impala come motore per alimentare pannelli di controllo e strumenti di visualizzazione.

In Amazon EMR è possibile creare cluster sia batch sia interattivi. Ad esempio, è possibile creare un cluster Amazon EMR permanente con Impala per l'elaborazione di query interattive ad hoc oppure usare cluster temporanei, sempre con Impala, per i carichi di lavoro ETL di breve durata.

D: In che modo Impala si differenzia dai sistemi RDBMS tradizionali?

I sistemi di database relazionali tradizionali forniscono semantica di transazioni e atomicità, coerenza, isolamento e recuperabilità, ovvero proprietà ACID (Atomicity, Consistency, Isolation, Durability). Consentono inoltre l'indicizzazione e la memorizzazione nella cache delle tabelle, per recuperare molto rapidamente piccole porzioni di dati, aggiornare velocemente piccole quantità di dati e applicare limitazioni per l'integrità referenziale. In genere vengono eseguiti su un singolo computer molto potente e non supportano operazioni su tipi di dati complessi definiti dall'utente. Impala usa un sistema di query distribuito simile a quello dei sistemi RDBMS, ma esegue le query sui dati memorizzati in HDFS e impiega il metastore di Hive per conservare le informazioni sui dati in entrata. Analogamente ad Hive, lo schema per una query viene fornito in fase di runtime, semplificando le modifiche agli schemi. Inoltre, Impala può eseguire query su un'ampia gamma di tipi di dati complessi ed eseguire funzioni definite dall'utente. Tuttavia, poiché Impala elabora i dati in memoria, è importante tenere conto delle limitazioni hardware di un cluster e ottimizzare le query per ottenere le migliori prestazioni.

D: In che modo Impala si differenzia da Hive?

Impala esegue query SQL utilizzando un motore a elaborazione parallela o MPP (massively parallel processing), mentre Hive esegue le query SQL impiegando MapReduce. Quando crea processi MapReduce, Impala non raggiunge gli stessi livelli di sovraccarico di Hive e garantisce tempi di esecuzione delle query più ristretti. Tuttavia, i requisiti di memoria di Impala sono molto elevati, perciò la capacità utilizzata dalle query è vincolata alla memoria disponibile nel cluster. Hive non soffre le stesse limitazioni, perciò, a parità di hardware, è in grado di elaborare set di dati di maggiori dimensioni. In genere, Impala è consigliato per rapide query interattive, mentre Hive è più idoneo per carichi di lavoro ETL su dataset di grandi dimensioni. Impala è stato creato per fornire maggiore velocità ed è ideale per l'esecuzione di query ad hoc, ma richiede livelli elevati di memoria per eseguire query importanti o elaborare grandi set di dati. A causa di queste limitazioni, consigliamo di utilizzare Hive quando è importante che un carico di lavoro venga portato a termine, indipendentemente dal tempo impiegato. Fai clic qui per consultare un confronto tra la velocità di esecuzione di Impala e quella di Hive.

D: È possibile usare Hadoop 1?

No, Impala richiede Hadoop 2 e non potrà essere eseguito su cluster con AMI basate su Hadoop 1.x.

D: Quali tipi di istanza sono più indicati per un cluster Impala?

Per trarre il massimo da Impala, consigliamo di utilizzare istanze con memoria ottimizzata. Tuttavia, si possono ottenere migliori prestazioni rispetto ad Hive anche usando istanze di tipo standard. Consigliamo la lettura della sezione Performance Testing and Query Optimization della Amazon EMR Developer's Guide per imparare a prevedere la quantità di memoria necessaria per un cluster in base a set di dati e tipo di query. Il tipo di compressione, le partizioni, il numero di query (numero di join, dimensioni dei risultati, ecc.) sono tutti dettagli che influiscono sulla quantità di memoria da utilizzare. Per effettuare una stima della quantità di memoria e di altre risorse necessaria per una query Impala, puoi usare l'istruzione EXPLAIN.

D: Cosa succede se la memoria si esaurisce su una query?

Se esaurisci la memoria, la query restituirà un errore e il daemon Impala installato sul relativo nodo verrà chiuso. Amazon EMR riavvierà quindi il daemon su quel nodo, per preparare Impala all'esecuzione di un'altra query. I dati in HDFS sul nodo restano disponibili, perché viene chiuso solo il daemon in esecuzione sul nodo, non l'intero nodo. Per eseguire analisi ad hoc con Impala, la durata della query può spesso venire misurata in secondi; se perciò una query restituisce un errore, è possibile individuare rapidamente il problema e inviare una nuova query in rapida successione.

D: Impala supporta le funzioni definite dall'utente?

Sì, Impala supporta le funzioni definite dall'utente o UDF (User Defined Function). Puoi scrivere UDF specifiche di Impala in Java o C++. Inoltre, puoi modificare le funzioni definite dall'utente e le funzioni di aggregazione definite dall'utente create per Hive in modo da usarle con Impala. Per informazioni sulle UDF di Hive, fai clic qui.

D: Dove sono archiviati i dati per le query di Impala?

Impala crea query sui dati in HDFS o in tabelle HBase.

D: È possibile eseguire simultaneamente Impala e MapReduce su un cluster?

Sì, puoi configurare un cluster multi-tenant con Impala e MapReduce. Tuttavia, devi assegnare risorse (memoria, disco e CPU) a tutte le applicazioni tramite il comando YARN in Hadoop 2.x. Le risorse allocate devono essere commisurate alle richieste dei singoli processi che desideri eseguire su ciascuna applicazione.

D: Impala supporta i driver ODBC e JDBC

Anche se è in grado di impiegare i driver ODBC, Impala rappresenta un motore ottimale per strumenti di terze parti collegati tramite JDBC. Puoi scaricare e installare il driver JDBC client di Impala all'indirizzo http://elasticmapreduce.s3.amazonaws.com/libs/impala/1.2.1/impala-jdbc-1.2.1.zip. Dal computer client dov'è installato lo strumento di business intelligence, collega il driver JDBC al nodo master di un cluster Impala tramite SSH o VPN sulla porta 21050. Per ulteriori informazioni, consulta Open an SSH Tunnel to the Master Node.

Torna all'inizio >>


D: Cos'è Apache Pig?

Pig è un pacchetto open source di analisi eseguibile con Hadoop. Pig funziona con un linguaggio simile a SQL chiamato Pig Latin, che consente di creare strutture, riepiloghi e query di dati memorizzati in Amazon S3. Oltre alle operazioni di tipo SQL, Pig Latin supporta le funzioni di mappatura/riduzione e permette l'uso di tipi di dati estensibili complessi definiti dall'utente. Grazie a questa funzionalità, è possibile elaborare origini dati complesse e anche non strutturate quali documenti di testo e file di log. Pig consente l'utilizzo di estensioni utente tramite funzioni definite dall'utente scritte in Java e distribuite tramite lo storage in Amazon S3.

D: Cosa è possibile fare con Pig in esecuzione in Amazon EMR?

Utilizzando Pig con Amazon EMR, è possibile implementare applicazioni di elaborazione dati complesse usando un linguaggio simile al comune SQL e strumenti disponibili in Amazon EMR. Con Amazon EMR, puoi convertire le applicazioni Pig in data warehouse affidabili che eseguano attività quali analisi di dati, monitoraggio e operazioni di business intelligence.

D: Che cosa occorre per cominciare a utilizzare Pig su Amazon EMR?

Per iniziare, ti consigliamo di consultare i nostri tutorial di testo e video in questa pagina: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2735&categoryID=269

D: Pig contiene nuove caratteristiche specifiche per Amazon EMR?

Sì. Sono presenti tre nuove caratteristiche che rendono Pig ancora più potente se usato in sinergia con Amazon EMR. Queste funzionalità sono:

a) L'accesso a più file system. Di default, un processo di Pig può accedere a un solo file system remoto per i dati in entrata, in uscita e temporanei, che sia uno store HDFS o un bucket S3. Con EMR, i processi di Pig può accedere a un qualsiasi numero di file system. Questo fattore può portare vantaggi dal punto di vista delle prestazioni, ad esempio quando i dati temporanei interni di un processo vengono immagazzinati nel file system HDFS locale.

b) Il caricamento di risorse da S3. Con Pig su EMR, gli script e i JAR personalizzati possono venire estratti dal file system S3, ad esempio "REGISTER s3:///my-bucket/piggybank.jar".

c) Le funzioni aggiuntive Piggybank per l'elaborazione di parametri String e DateTime. Per ulteriori informazioni, consulta la pagina http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2730.

D: Quali tipi di cluster di Pig sono supportati?

I tipi di cluster supportati con Pig sono due: interattivi e batch. In modalità interattiva puoi avviare un cluster ed eseguire script Pig in modo interattivo direttamente sul nodo master. In genere, questa modalità viene impiegata per l'analisi di dati ad hoc e per lo sviluppo di applicazioni. In modalità batch lo script viene immagazzinato in Amazon S3 e indicato all'inizio del cluster. In genere, questa modalità viene usata per le attività iterabili quali la generazione di report.

D: Come si avvia un cluster Pig?

I cluster sia interattivi sia batch possono essere avviati tramite la Console di gestione AWS, dal client da riga di comando di EMR e dalle API.

D: Quali versioni di Pig supporta Amazon EMR?

Amazon EMR supporta diverse versioni di Pig, inclusa la versione 0.11.1.

D: È possibile scrivere su un bucket S3 in due cluster contemporaneamente?

Sì, puoi scrivere sullo stesso bucket da due cluster contemporaneamente.

D: È possibile condividere i dati in entrata in S3 su più cluster?

Sì, puoi leggere gli stessi dati in S3 da due cluster contemporaneamente.

D: È possibile condividere dati tra più utenti AWS?

Sì. È possibile condividere dati con le modalità di condivisione standard di Amazon S3 descritte qui: http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html.

D: È meglio eseguire un cluster di grandi dimensioni da condividere con più utenti, oppure molti cluster di piccole dimensioni?

Amazon EMR ti consente di utilizzare entrambi i metodi. Da una parte, un cluster di grandi dimensioni è più efficiente per l'elaborazione di carichi di lavoro in batch regolari. Dall'altra, quando occorre elaborare query ad hoc o carichi di lavoro variabili, può essere utile creare diversi cluster distinti, ognuno di loro ottimizzato per un determinato processo, che condividono le origini dati memorizzate in Amazon S3.

D: È possibile accedere a uno script o a una risorsa JAR che si trova nel file system locale?

No. Per poter utilizzare come riferimento lo script o la risorsa JAR, è necessario caricarli in Amazon S3 oppure nel nodo master del cluster. Per procedere al caricamento in Amazon S3, puoi usare strumenti quali s3cmd, jets3t e S3Organizer.

D: È possibile eseguire un cluster persistente con più query Pig?

Sì. Puoi eseguire un cluster configurato per l'interruzione manuale in modo che non venga terminato tra una fase e l'altra di Pig. Per ridurre il rischio di perdita di dati, consigliamo di archiviare periodicamente tutti i dati più importanti in Amazon S3. È buona norma trasferire regolarmente il tuo lavoro su un nuovo cluster per mettere alla prova il processo di ripristino in caso di errore di un nodo master.

D: Pig supporta l'accesso da JDBC?

No. Pig non supporta l'accesso tramite JDBC

Torna all'inizio >>


D: Cos'è Apache HBase?

HBase è un database open source non relazionale distribuito, creato sul modello di BigTable di Google. È stato sviluppato nell'ambito del progetto Hadoop di Apache Software Foundation e viene eseguito con il file system distribuito Hadoop (HDFS) per fornire funzionalità di tipo BigTable per Hadoop. HBase fornisce un modo efficiente e con tolleranza ai guasti di memorizzare grandi quantità di dati a bassa densità utilizzando storage e compressione basati su colonne. Inoltre, HBase garantisce consultazione rapida dei dati, perché sono salvati in memoria invece che su disco. HBase è ottimizzato per operazioni di scrittura sequenziali ed è particolarmente efficiente per aggiornamenti, eliminazioni ed inserimenti in batch. HBase è ottimizzato per Hadoop, condividendone il file system e fungendo da input ed output diretto per i relativi processi. Inoltre, HBase si integra con Apache Hive, consentendo query di tipo SQL su tabelle HBase, unioni con tabelle basate su Hive e supporto per JDBC (Java Database Connectivity).

D: HBase contiene nuove caratteristiche specifiche per Amazon EMR?

Con Amazon EMR è possibile eseguire il backup dei dati HBase in Amazon S3 (completo e incrementale, manuale e automatizzato) ed è possibile effettuare il ripristino da un backup esistente. Ulteriori informazioni su HBase e EMR.

D: Quali versioni di HBase supporta Amazon EMR?

Amazon EMR supporta HBase 0.94.7 e HBase 0.92.0. Per usare HBase 0.94.7 è necessario specificare la versione 3.0.0 di AMI. Se usi l'interfaccia a riga di comando, devi avere la versione 2013-10-07 o versioni successive.

Torna all'inizio >>


D: A cosa serve il connettore EMR per Kinesis?

Il connettore consente a EMR di leggere e creare query sui dati provenienti dai flussi Kinesis in modo diretto. Potrai quindi elaborare in batch i flussi di Kinesis utilizzando gli strumenti esistenti dell'ecosistema di Hadoop come Hive, Pig, MapReduce, Hadoop Streaming e Cascading.

D: Che cosa consente di fare il connettore EMR per Kinesis che non era possibile fare prima?

Per poter leggere ed elaborare dati provenienti da un flusso Kinesis significava dover scrivere, distribuire e mantenere delle applicazioni di elaborazione di flusso indipendenti. Queste operazioni richiedono tempo e impegno. Grazie a questo connettore, tuttavia, puoi avviare la lettura e l'analisi di un flusso Kinesis tramite uno script di Hive o Pig. Di conseguenza, puoi analizzare gli stream Kinesis semplicemente in SQL. Nell'ecosistema di Hadoop sono disponibili diversi strumenti che consentono questa operazione. In breve, non è più necessario sviluppare e mantenere un nuovo set di applicazioni di elaborazione.

D: A chi può servire questa funzionalità?

Questa funzionalità di integrazione risulterà utile a molti, ad esempio:

  • Agli utenti di Hadoop interessati a usare l'ampio set di strumenti dell'ecosistema di Hadoop che consentono l'analisi di flussi Kinesis.
  • Gli utenti di Kinesis che desiderano un modo semplice per iniziare a elaborare flussi e carichi di lavoro ETL su dati di Kinesis.
  • Analisti e professionisti IT che desiderano eseguire analisi ad hoc di dati provenienti da flussi Kinesis impiegando strumenti a loro familiari quali SQL (tramite Hive) e linguaggi di script come Pig.

D: Quali sono i casi d'uso per questa integrazione?

L'integrazione risulta utile, ad esempio, per i seguenti casi d'uso:

  • Analisi di flussi di log: è possibile analizzare flussi di log Web per generare a intervalli di pochi minuti un elenco dei 10 tipi di errore più comuni, ordinati per regione, browser e dominio di accesso.
  • Flussi di lavoro per l'elaborazione di dati complessi: è possibile unire a un flusso Kinesis dati memorizzati in S3, in tabelle DynamoDB e in HDFS. Puoi scrivere query che uniscono dati di clickstream provenienti da Kinesis con informazioni di campagne pubblicitarie memorizzate in una tabella DynamoDB per identificare le categorie di inserzioni più efficaci che vengono visualizzate su un determinato sito Web.
  • Query ad hoc: è possibile caricare periodicamente dati da Kinesis in HDFS e renderli disponibili come tabella Impala locale per velocizzare la creazione di query analitiche e interattive.

D: Quale versione di AMI di EMR occorre usare per impiegare il connettore?

È necessario usare un'AMI di EMR versione 3.0.4 o successiva.

D: Il connettore è uno strumento autonomo?

No, è un componente integrato della distribuzione Amazon di Hadoop, ed è presente nelle AMI di EMR versione 3.0.4 o successiva. Per usare questa caratteristica, occorre avviare un cluster con un'AMI 3.0.4 o versione successiva.

D: Quale formato di dati è necessario per consentire ad EMR la lettura da un flusso Kinesis?

L'integrazione tra EMR e Kinesis non richiede un formato di dati specifico. La lettura dei dati è possibile per qualsiasi formato. I singoli record di Kinesis vengono presentati in Hadoop come record standard che possono essere letti utilizzando qualsiasi framework Hadoop MapReduce. I singoli framework, ad esempio Hive, Pig e Cascading, integrano componenti che facilitano la serializzazione e la deserializzazione, aiutano gli sviluppatori a creare query sui dati da molti formati, senza dover implementare codice personalizzato. In Hive, ad esempio, gli utenti possono leggere dati da file JSON, XML e SEQ specificando il componente Hive SerDe quando viene definita una tabella. Pig dispone di un componente simile chiamato Loadfunc/Evalfunc, così come Cascading usa Tap. Gli utenti di Hadoop possono sfruttare il vasto ecosistema di adattatori di Hadoop senza dover scrivere codice specifico per il formato. Puoi anche implementare formati di deserializzazione personalizzati per leggere dati specifici di un dominio in uno qualsiasi di questi strumenti.

D: Come si analizza un flusso Kinesis utilizzando Hive in EMR?

Crea una tabella che faccia riferimento a un flusso Kinesis. La tabella potrà essere analizzata in Hive come qualsiasi altra tabella. Per ulteriori informazioni, consulta i tutorial.

D: Come si creano, in Hive, query che uniscono i dati provenienti da un flusso di Kinesis con dati provenienti da altre sorgenti?

Crea una tabella che faccia riferimento a un flusso Kinesis. Una volta creata, unisci le tabelle mappate alle altre origini dati, ad esempio Amazon S3, Amazon DynamoDB e HDFS. In questo modo potrai unire i dati di un flusso Kinesis ai dati di altre sorgenti.

D: L'integrazione è disponibile solo per Hive?

No, puoi impiegare Hive, Pig, MapReduce, Hadoop Streaming e Cascading.

D: Come si configura l'esecuzione di processi pianificati in un flusso Kinesis?

Il connettore di input tra EMR e Kinesis offre caratteristiche che consentono di configurare e gestire processi periodici pianificati in motori di pianificazione tradizionali come Cron. Ad esempio, puoi sviluppare uno script Hive che venga eseguito ogni N minuti. Puoi specificare un nome logico per un processo nei relativi parametri di configurazione. Il nome logico è un'etichetta che informa il connettore di input tra EMR e Kinesis che le singole istanze del processo sono membri della stessa pianificazione. Il nome logico consente al processo di sfruttare le iterazioni, che vengono spiegate più avanti.

Poiché MapReduce è un framework di elaborazione in batch, per analizzare un flusso Kinesis usando EMR, il flusso continuo viene suddiviso in batch. Ogni batch viene chiamato iterazione. Ad ogni iterazione viene assegnato un numero, a partire da 0. I limiti di ciascuna iterazione sono definiti da un numero di sequenza iniziale e un numero di sequenza finale. EMR elabora le iterazioni in sequenza.

Se un tentativo non riesce, il connettore di input tra EMR e Kinesis proverà nuovamente ad avviare l'iterazione corrispondente al nome logico a partire dal numero di sequenza iniziale conosciuto dell'iterazione. Questa funzionalità assicura che tutti i tentativi sulla stessa interazione abbiano gli stessi record di input dal flusso Kinesis rispetto ai tentativi precedenti. In questo modo l'elaborazione di un flusso Kinesis sarà idempotente (costante).

Puoi specificare nomi logici e iterazioni come parametri di runtime nei relativi strumenti di Hadoop. Ad esempio, nella sezione "Running queries with checkpoints" del tutorial, il codice di esempio mostra una query Hive pianificata che specifica un nome logico per la query e incrementa l'iterazione ad ogni esecuzione successiva del processo.

Nei tutorial, inoltre, viene fornito uno script di pianificazione cron di esempio.

D: Dove sono archiviati i metadati per nomi logici e iterazioni?

I metadati che consentono al connettore di input tra EMR e Kinesis di operare in flussi di lavoro periodici pianificati vengono memorizzati in Amazon DynamoDB. È necessario effettuare il provisioning di una tabella Amazon DynamoDB e specificarla come parametro di input per il processo di Hadoop. Per consentire l'integrazione, è importante configurare un valore di IOPS idoneo alla tabella. Consulta il tutorial relativo alle nozioni di base per ulteriori informazioni su come configurare una tabella di Amazon DynamoDB.

D: Cosa succede quando l'elaborazione di un'iterazione non riesce?

Gli identificatori delle iterazioni sono valori forniti dall'utente che consentono la mappatura a limiti specifici (numeri di sequenza iniziali e finali) in un flusso Kinesis. I dati che corrispondono a questi limiti vengono caricati nella fase Map di un processo MapReduce. Questa fase viene gestita dal framework e, in caso di errore del processo, viene ri-elaborata in automatico (tre volte di default). Se nessuno dei tentativi va a buon fine, è ancora possibile riprovare l'avvio dell'elaborazione dall'ultimo limite funzionante oppure da limiti precedenti. Questo comportamento viene controllato durante l'elaborazione dal parametro kinesis.checkpoint.iteration.no. Consulta il tutorial relativo alle nozioni di base per ulteriori informazioni su come questo valore sia configurato per strumenti diversi all'interno dell'ecosistema di Hadoop.

D: È possibile eseguire più query su una stessa iterazione?

Sì, puoi specificare un'iterazione eseguita in precedenza impostando il parametro kinesis.checkpoint.iteration.no in elaborazioni successive. Questa implementazione assicura che tutti i tentativi sulla stessa interazione abbiano gli stessi record di input dal flusso Kinesis rispetto ai tentativi precedenti.

D: Cosa succede se i record in un'iterazione scadono dal flusso Kinesis?

Se un numero di sequenza iniziale e/o finale di un'iterazione appartiene a record scaduti dal flusso Kinesis, il processo di Hadoop non potrà essere completato. Dovrai impiegare un nome logico differente per elaborare i dati dall'inizio del flusso Kinesis.

D: È possibile inviare dati da EMR nel flusso Kinesis?

No. Il connettore tra EMR e Kinesis al momento non supporta la scrittura di dati nel flusso Kinesis.

D: Il connettore di input EMR Hadoop per Kinesis consente l'elaborazione di flussi continui?

Il framework Hadoop MapReduce è un sistema di elaborazione in batch. In quanto tale, non supporta query continue. Ci sono tuttavia diversi framework emergenti nell'ecosistema di Hadoop, come Twitter Storm e Spark Streaming, che consentono agli sviluppatori di creare applicazioni compatibili con l'elaborazione di flussi continui. Un connettore Storm per Kinesis è disponibile su GitHub in questa pagina, mentre un tutorial che spiega come configurare Spark Streaming su EMR ed eseguire query continue è disponibile qui.

Inoltre, gli sviluppatori possono usare la libreria client di Kinesis per creare applicazioni di elaborazione di flussi in tempo reale. Per ulteriori informazioni su come sviluppare applicazioni personalizzate per Kinesis, consulta la documentazione di Kinesis in questa pagina.

D: È possibile specificare le credenziali di accesso in lettura a un flusso Kinesis gestito in un altro account AWS?

Sì. Puoi leggere i flussi di altri account AWS specificando le credenziali dell'account a cui appartiene il flusso Kinesis. Di default, Kinesis Connector usa le credenziali di accesso fornite dal cliente specificate al momento della creazione del cluster. È possibile sovrascrivere tali credenziali per accedere ai flussi di altri account AWS configurando i parametri kinesis.accessKey e kinesis.secretKey. Il seguente esempio mostra come configurare i parametri kinesis.accessKey e kinesis.secretKey in Hive e Pig.

Codice di esempio per Hive:
...
STORED BY
'com.amazon.emr.kinesis.hive.KinesisStorageHandler'
TBLPROPERTIES(
"kinesis.accessKey"="AwsAccessKey",
"kinesis.secretKey"="AwsSecretKey",
);

Codice di esempio per Pig:

raw_logs = LOAD 'AccessLogStream' USING com.amazon.emr.kinesis.pig.Kin
esisStreamLoader('kinesis.accessKey=AwsAccessKey', 'kinesis.secretKey=AwsSecretKey'
) AS (line:chararray);

D: È possibile eseguire più query in parallelo su un singolo flusso Kinesis? Quali ripercussioni può avere sulle prestazioni?

Sì, è possibile eseguire più query in parallelo su uno stesso flusso utilizzando nomi logici differenti per ciascuna query. Tuttavia, la frequenza di lettura da uno shard all'interno del flusso Kinesis è limitata a 2 MB al secondo. Se sono in esecuzione N query in parallelo nello stesso flusso, ognuna di esse dispone di una velocità in uscita di circa 2/N MB al secondo per ogni shard nel flusso. L'elaborazione potrebbe risultare pertanto rallentata; in alcuni casi potrebbe non essere possibile completare le query.

D: È possibile unire e analizzare diversi flussi Kinesis in EMR?

Sì, ad esempio è possibile creare in Hive due tabelle mappate a due flussi Kinesis diversi e creare delle join tra le tabelle.

D: Il connettore tra EMR e Kinesis gestisce anche gli eventi di dimensionamento di Kinesis, ad esempio unioni e separazioni?

Sì. L'implementazione gestisce gli eventi di separazione e di unione. Il connettore Kinesis collega singoli shard di Kinesis (l'unità di misura logica all'interno di un flusso Kinesis) per le attività di mappatura di Hadoop MapReduce. Ogni singolo shard all'interno di un flusso nel periodo logico di un'iterazione si risolve in esattamente un'attività di mappatura. Nel caso di un evento di separazione o unione, Kinesis effettuerà il provisioning di un nuovo ID shard univoco. Di conseguenza, il framework MapReduce effettuerà il provisioning di altre attività di mappatura per eseguire operazioni in lettura da Kinesis. Tutto questo avviene in modo trasparente per l'utente.

D: Cosa succede se si verificano periodi di "silenzio" nel flusso?

L'implementazione consente di configurare un parametro chiamato kinesis.nodata.timeout. Ad esempio, prendiamo in esame uno scenario in cui il parametro kinesis.nodata.timeout è impostato a 2 minuti e vuoi eseguire una query Hive ogni 10 minuti. Inoltre, supponiamo che, dall'ultima iterazione (10 minuti fa), alcuni dati sono stati scritti nel flusso. Al momento, tuttavia, non sono presenti nuovi record in entrata, ovvero il flusso è in un periodo di silenzio. In questo caso, quando l'iterazione corrente della query viene avviata, il Kinesis Connector rileva che non sono presenti nuovi record. Il connettore continuerà ad effettuare il polling del flusso ogni 2 minuti, e se non sopraggiungono nuovi record entro tale intervallo si interromperà ed elaborerà solamente i record che erano già stati letti nel batch corrente del flusso. Tuttavia, se prima del termine dell'intervallo configurato nel parametro kinesis.nodata.timeout vengono caricati nuovi record, il connettore rimarrà ancora in attesa per un periodo di tempo equivalente al valore impostato nel parametro kinesis.iteration.timeout. Consulta i tutorial per istruzioni su come definire questi parametri.

D: Come si esegue il debug di una query che continua ad avere esito negativo ad ogni iterazione?

Nel caso in cui l'elaborazione non dovesse riuscire, puoi usare gli stessi strumenti che usi per il debug dei processi Hadoop. Ad esempio, la console Web di Amazon EMR, che aiuta a identificare e ad accedere ai log di errore. Per ulteriori dettagli sul debug di un processo EMR, consulta questa pagina.

D: Cosa succede se si specifica una tabella DynamoDB per cui non si ha l'autorizzazione in accesso?

Il processo non può essere completato e l'eccezione viene salvata nei log di errore del processo.

D: Cosa succede se il processo viene completato ma la creazione di checkpoint restituisce un errore?

Il processo non può essere completato e l'eccezione viene salvata nei log di errore del processo.

D: Come si ottimizza il throughput in lettura da un flusso Kinesis in EMR?

Il throughput da un flusso Kinesis aumenta di pari passo con le dimensioni dell'istanza usata e del record nel flusso Kinesis. Per sfruttare al meglio questa caratteristica, consigliamo di utilizzare istanze m1.xlarge o di dimensioni maggiori sia per i nodi master sia per i nodi principali.

Torna all'inizio >>