Domande frequenti su Amazon EMR
Domande generali
D: Cos'è Amazon EMR?
Amazon EMR è la piattaforma cloud di Big Data leader del settore per l'elaborazione di dati, l’analisi interattiva e il machine learning tramite framework open source come Apache Spark, Apache Hive e Presto EMR consente di eseguire analisi su scala petabyte a meno della metà del costo delle tradizionali soluzioni on-premise e con una velocità 1,7 volte superiore rispetto a quella della versione standard di Apache Spark.
D: Qual è il vantaggio di utilizzare Amazon EMR?
Amazon EMR consente di concentrarsi sulla trasformazione e l’analisi dei dati senza doversi preoccupare della gestione della capacità di calcolo o delle applicazioni open-source, risparmiando in questo modo tempo e denaro. Utilizzando EMR, puoi fornire immediatamente la capacità che desideri su Amazon EC2 e impostare regole di scalabilità per gestire la domanda di elaborazione in continua evoluzione. Puoi impostare avvisi CloudWatch per ricevere una notifica dei cambiamenti nell’infrastruttura e intraprendere immediatamente le azioni appropriate. Se si utilizza Kubernetes, puoi utilizzare EMR anche per inviare i carichi di lavoro ai cluster Amazon EKS. Utilizzando EC2 o EKS, si trae vantaggio dai tempi di esecuzione ottimizzati di EMR che velocizzano l’analisi e fanno risparmiare tempo e denaro.
D: Come posso implementare e gestire Amazon EMR?
Puoi implementare i tuoi carichi di lavoro su EMR utilizzando Amazon EC2, Amazon Elastic Kubernetes Service (EKS) o AWS Outposts on-premise. Puoi eseguire e gestire i carichi di lavoro con la console EMR, l’API, l’SDK o la CLI e orchestrarli utilizzando Amazon Managed Workflows for Apache Airflow (MWAA) o AWS Step Functions. Per un’esperienza interattiva, è possibile utilizzare EMR Studio o SageMaker Studio.
D: Che cosa occorre per cominciare a utilizzare Amazon EMR?
D: Qual è il livello di affidabilità di Amazon EMR?
Fai riferimento al Contratto sul livello di servizio (SLA).Sviluppo e debug
D: Dove è possibile trovare codici di esempio?
Se cerchi codici di esempio, consulta questi articoli e tutorial. Se utilizzi EMR Studio, puoi esplorare le funzionalità tramite una serie di esempi di notebook.
D: Come si sviluppa un'applicazione per l'elaborazione di dati?
Puoi sviluppare, visualizzare ed eseguire il debug di applicazioni di data science e data engineering scritte in scritte in R, Python, Scala e PySpark utilizzando Amazon EMR Studio. Puoi anche sviluppare un processo di elaborazione dati sul desktop, ad esempio utilizzando Eclipse, Spyder, PyCharm o RStudio, ed eseguirlo su Amazon EMR. Inoltre, puoi selezionare JupyterHub o Zeppelin nella configurazione software durante l’attivazione di un nuovo cluster e sviluppare l’applicazione su Amazon EMR utilizzando 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 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, SDK o le API per ottenere lo stato del cluster.
D: Posso terminare il mio cluster una volta completate le operazioni?
Sì. Puoi terminare automaticamente il cluster alla fine di tutti i passaggi attivando il contrassegno di terminazione automatica.
D: Quali versioni del sistema operativo sono supportate con Amazon EMR?
Amazon EMR 5.30.0 e successivo e la serie Amazon EMR 6.x sono basati su Amazon Linux 2. Puoi specificare un'AMI personalizzata creata basandosi su Amazon Linux 2. Praticamente ciò consente di eseguire sofisticate pre-configurazioni per qualsiasi applicazione. Per ulteriori informazioni, consulta Utilizzo di un'AMI personalizzata.
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. Puoi anche caricare eseguibili compilati in modo statico usando il meccanismo di cache distribuita di Hadoop. EMR 6.x supporta Hadoop 3, che consente a YARN NodeManager di avviare i container direttamente sull’host del cluster EMR o all’interno di un container Docker. Per ulteriori informazioni, consulta la documentazione.
D: Quali strumenti sono disponibili per il debug?
Esistono diversi strumenti che possono essere utilizzati per raccogliere informazioni sul cluster e determinare cosa è andato storto. Se si utilizza Amazon EMR Studio, puoi avviare strumenti come l’interfaccia utente Spark e il servizio della sequenza temporale YARN per semplificare il debug. Dalla console Amazon EMR, puoi ottenere l'accesso fuori dal cluster alle interfacce utente delle applicazioni persistenti per Apache Spark, l'interfaccia utente Tez e il server della sequenza temporale YARN, diverse interfacce utente delle applicazioni sul cluster e una vista di riepilogo della cronologia dell'applicazione nella console Amazon EMR per tutte le applicazioni YARN. Puoi anche connetterti al tuo nodo master tramite SSH e visualizzare le istanze cluster tramite queste interfacce Web. Per ulteriori informazioni, consulta la documentazione.
EMR Studio
D: Cos'è EMR Studio?
EMR Studio è un ambiente di sviluppo integrato (IDE) che semplifica lo sviluppo, la visualizzazione e il debug di applicazioni di data engineering e scienza dei dati scritte in scritte in R, Python, Scala e PySpark per i data scientist e gli ingegneri dei dati.
Si tratta di un'applicazione completamente gestita con SSO (single sign-on), notebook Jupyter completamente gestiti, provisioning automatizzato dell'infrastruttura e la possibilità di eseguire il debug dei lavori senza accedere al cluster o alla console AWS. I data scientist e gli analisti possono installare librerie e kernel personalizzati, collaborare con i colleghi usando repository di codice come GitHub e BitBucket o eseguire notebook parametrizzati nell'ambito di flussi di lavoro programmati attraverso servizi di orchestrazione come Apache Airflow, AWS Step Functions e Amazon Managed Workflows for Apache Airflow. Troverai ulteriori informazioni nel post di blog Orchestrating analytics jobs on Amazon EMR notebooks using Amazon MWAA. Le applicazioni e i kernel di EMR Studio vengono eseguiti nei cluster EMR in modo da poter sfruttare i vantaggi dell'elaborazione dei dati distribuiti attraverso il runtime di Amazon EMR per Apache Spark a prestazioni ottimizzate. Gli amministratori possono configurare EMR Studio in modo che gli analisti possano eseguire le loro applicazioni sui cluster EMR esistenti oppure creare nuovi cluster utilizzando i modelli predefiniti di AWS CloudFormation per EMR.
D: Cosa posso fare con EMR Studio?
EMR Studio permette di accedere direttamente ai notebook Jupyter completamente gestiti usando le proprie credenziali aziendali senza accedere alla console AWS, avviare i notebook in pochi secondi, eseguire l'onboarding con notebook di esempio ed eseguire l'esplorazione dei dati. È inoltre possibile personalizzare l'ambiente caricando propri kernel e librerie Python dai notebook. Le applicazioni e i kernel di EMR Studio vengono eseguiti nei cluster EMR in modo da poter sfruttare i vantaggi dell'elaborazione dei dati distribuiti attraverso il runtime di Amazon EMR per Apache Spark a prestazioni ottimizzate. È possibile collaborare con i colleghi condividendo i notebook attraverso GitHub e altri repository. È anche possibile eseguire direttamente i notebook come pipeline di integrazione e distribuzione continue. Si possono trasferire diversi valori di parametri a un notebook, concatenare notebook e integrarli in flussi di lavoro programmati tramite servizi di orchestrazione dei flussi di lavoro come Apache Airflow. Inoltre, puoi eseguire il debug di cluster e processi utilizzando il minor numero di clic possibile con interfacce di applicazioni native come l'interfaccia utente Spark e il servizio YARN Timeline.
D: Quali sono le differenze tra EMR Studio e EMR Notebooks?
Esistono cinque differenze principali.
- Con EMR Studio non è necessario accedere alla Console di gestione AWS. EMR Studio è esterno alla Console di gestione AWS. Ciò è utile se non si fornisce ai data scientist o agli ingegneri di dati l'accesso alla Console di gestione AWS.
- Per accedere a EMR Studio, puoi usare le credenziali aziendali fornite dal gestore dell'identità digitale tramite AWS IAM Identity Center (in sostituzione di AWS SSO).
- EMR Studio consente di iniziare a usare il notebook. Le applicazioni e i kernel di EMR Studio vengono eseguiti nei cluster EMR in modo da poter sfruttare i vantaggi dell'elaborazione dei dati distribuiti attraverso il runtime di Amazon EMR per Apache Spark a prestazioni ottimizzate. L'esecuzione del codice su un cluster è semplice come collegare il notebook a un cluster esistente o eseguire il provisioning di uno nuovo.
- EMR Studio dispone di un’interfaccia utente semplificata e riassume le configurazioni hardware. Ad esempio, puoi configurare i modelli cluster una sola volta e utilizzarli quindi per avviare nuovi cluster.
- EMR Studio consente un'esperienza di debug semplificata in modo da poter accedere alle interfacce utente dell'applicazione nativa in un unico posto utilizzando il minor numero di clic possibile.
D: Quali sono le differenze tra EMR Studio e SageMaker Studio?
Con Amazon EMR si possono usare sia EMR Studio sia SageMaker Studio. EMR Studio offre un ambiente di sviluppo integrato (IDE) che semplifica lo sviluppo, la visualizzazione e il debug di applicazioni di data engineering e scienza dei dati scritte in scritte in R, Python, Scala e PySpark. Amazon SageMaker Studio fornisce un'interfaccia visuale unica basata sul Web in cui si possono eseguire tutte le fasi di sviluppo del machine learning. SageMaker Studio ti offre accesso, controllo e visibilità completi su ogni fase necessaria alla progettazione, la formazione e la distribuzione dei modelli. È possibile caricare i dati, creare nuovi notebook, addestrare e configurare i modelli, andare avanti e indietro tra le fasi per modificare gli esperimenti, confrontare i risultati e distribuire i modelli in produzione in un unico luogo e rapidamente, così da aumentare la produttività.
D: Come comincio a usare EMR Studio?
L’amministratore deve configurare EMR Studio. Una volta ricevuto un URL di accesso univoco per Amazon EMR Studio dall’amministratore, potrai accedere a Studio direttamente utilizzando le tue credenziali aziendali.
D: Devo accedere alla Console di gestione AWS per poter utilizzare EMR Studio?
No. Dopo che l’amministratore ha configurato EMR Studio e ha fornito l’URL di accesso a Studio, il team potrà collegarsi utilizzando le credenziali aziendali. Non è necessario accedere alla Console di gestione AWS. In EMR Studio, il tuo team può eseguire attività e accedere alle risorse configurate dall’amministratore.
D: Quali gestori dell'identità digitale sono supportati per l'esperienza Single Sign-On in EMR Studio?
AWS IAM Identity Center (in sostituzione di AWS SSO) è il fornitore del servizio Single Sign-On per EMR Studio. Per un elenco di gestori dell'identità digitale supportati da AWS IAM, consulta la nostra documentazione.
D: Cos'è un workspace in EMR Studio?
I workspace consentono di organizzare i notebook Jupyter. Tutti i notebook in un workspace sono salvati nella stessa posizione di Amazon S3 e sono eseguiti nello stesso cluster. Puoi anche collegare un repository di codice come un repository GitHub a tutti i notebook in un workspace. Puoi creare e configurare un workspace prima di collegarlo a un cluster, ma per eseguire un notebook è necessario essere collegati a un cluster.
D: Posso creare un workspace o aprire un workspace esistente senza un cluster in EMR Studio?
Sì, puoi creare o aprire un workspace senza collegarlo a un cluster. Solo per l’esecuzione, è necessario collegarli a un cluster. Le applicazioni e i kernel di EMR Studio vengono eseguiti nei cluster EMR in modo da poter sfruttare i vantaggi dell'elaborazione dei dati distribuiti tramite il runtime di Amazon EMR per Apache Spark a prestazioni ottimizzate.
D: Posso istallare librerie personalizzate da utilizzare per il mio codice di notebook?
Tutte le query di Spark vengono eseguite all’interno del cluster EMR, pertanto devi istallare tutte le librerie di runtime che la tua applicazione Spark utilizza nel cluster. Puoi facilmente installare le librerie con ambito notebook all’interno di una cella del notebook. Puoi installare anche kernel Jupyter Notebook e librerie Python su un nodo master del cluster sia all’interno di una cella del notebook che mentre si è connessi tramite SSH al nodo master del cluster. Per ulteriori informazioni, consulta la documentazione. Inoltre, puoi utilizzare una bootstrap action o un’AMI personalizzata per installare le librerie richieste al momento della creazione di un cluster. Per ulteriori informazioni, consulta Crea bootstrap action per installare software aggiuntivo e Utilizzo di un’AMI personalizzata nella Guida alla gestione di Amazon EMR.
D: Dove vengono salvati i notebook?
Il workspace e i file dei notebook presenti nel workspace vengono salvati automaticamente ad intervalli regolari nel formato ipynb nella posizione Amazon S3 specificata al momento della creazione del notebook. Il fine del notebook ha lo stesso nome del tuo notebook in Amazon EMR Studio.
D: Come utilizzo il controllo di versione nel mio notebook? Posso utilizzare repository come GitHub?
Puoi associare i repository basati su Git ai notebook Amazon EMR Studio per salvare i tuoi notebook in un ambiente controllato dalla versione.
D: In EMR Studio, su quali risorse di elaborazione posso eseguire i notebook?
Con EMR Studio è possibile eseguire il codice dei notebook su Amazon EMR in esecuzione su Amazon Elastic Compute Cloud (Amazon EC2) o Amazon EMR in esecuzione su Amazon Elastic Kubernetes Service (Amazon EKS). Si possono collegare i notebook a cluster nuovi o esistenti. Puoi creare i cluster EMR in due modi in EMR Studio: tramite un modello cluster preconfigurato con AWS Service Catalog o specificando un nome per il cluster, il numero di istanze e il tipo di istanze.
D: Posso ricollegare un workspace con una risorsa di elaborazione differente in EMR Studio?
Sì, puoi aprire il workspace, scegliere l’icona Cluster EMR sulla sinistra, fare clic sul pulsante Scollega, selezionare quindi un cluster dall’elenco a discesa Seleziona cluster e fare clic sul pulsante Allega.
D: Dove trovo tutti i miei workspace in EMR Studio?
In EMR Studio, puoi selezionare la scheda Workspace sulla sinistra e visualizzare tutti i workspace creati da e da altri utenti nello stesso account AWS.
D: Quali sono le policy IAM richieste per utilizzare EMR Studio?
Ogni EMR Studio ha bisogno di autorizzazioni per funzionare con altri servizi AWS. Per fornire a EMR Studio le autorizzazioni necessarie, gli amministratori devono creare un ruolo di servizio EMR con le policy fornite. Devono inoltre specificare un ruolo utente per EMR Studio che definisce le autorizzazioni a livello di Studio. Quando vengono aggiunti utenti e gruppi da AWS IAM Identity Center (in sostizione di AWS SSO) a EMR Studio, possono assegnare una policy di sessione a un utente o a un gruppo in modo da applicare controlli delle autorizzazioni granulari. Le policy di sessione consentono agli amministratori di rifinire le autorizzazioni utente senza dover creare più ruoli IAM. Per maggiori informazioni sulle policy di sessione, fai riferimento a Policy e autorizzazioni nella Guida per l'utente di AWS Identity and Access Management.
D: Esistono limitazioni sui cluster EMR a cui posso collegare il mio workspace in EMR Studio?
Sì. I cluster ad alta disponibilità (multi-master), i cluster con Kerberos e i cluster AWS Lake Formation al momento non sono supportati.
D: Quali costi prevede l’utilizzo di Amazon EMR Studio?
Non vi sono costi aggiuntivi per l’utilizzo di Amazon EMR Studio. Quando si utilizza EMR Studio, vengono applicate le tariffe applicabili per lo storage di Amazon Simple Storage Service e per i cluster Amazon EMR. Per maggiori informazioni sulle opzioni di prezzi, consulta Prezzi di Amazon EMR.
EMR Notebooks
D: Cosa sono gli EMR Botebooks?
Ai nuovi utenti consigliamo di utilizzare Amazon EMR Studio e non gli EMR Notebooks. Gli EMR Notebooks forniscono un ambiente gestito, basato sui notebook Jupyter, che permette ai data scientist, agli analisti e agli sviluppatori di preparare e visualizzare dati, di collaborare con i peer, di creare applicazioni e realizzare analisi attraverso i cluster EMR. Nonostante consigliamo ai nuovi clienti di utilizzare EMR Studio, gli EMR Notebooks sono supportati per la compatibilità.
D: Cosa posso fare con gli EMR Notebooks?
Puoi utilizzare i EMR notebook per creare applicazioni Apache Spark ed eseguire query interattive sui tuoi cluster EMR con il minimo sforzo. I diversi utenti possono creare notebook senza server direttamente dalla console, collegarli ad un cluster EMR condiviso esistente o effettuare il provisioning di un cluster direttamente dalla console e cominciare subito a sperimentare con Spark. Puoi scollegare i notebook e ricollegarli a nuovi cluster. I notebook vengono salvati automaticamente nei bucket di S3: è possibile recuperare i notebook salvati dalla console per ripristinare il lavoro. I EMR notebook sono preconfigurati alle librerie all’interno del repository di Anaconda, permettendoti di importare e utilizzare queste librerie nel tuo codice di notebook e servirtene per manipolare dati e visualizzare risultati. Inoltre, i EMR notebook hanno funzionalità di monitoraggio di Spark integrate, che possono essere utilizzate per controllare i progressi dei tuoi lavori di Spark ed seguire il debug del codice all’interno del notebook.
D: Come inizio ad utilizzare i EMR notebook?
Per iniziare ad utilizzare i EMR notebook, apri la console EMR e seleziona Notebooks dal riquadro di navigazione. Seleziona poi Create Notebook (Crea un notebook), inserisci un nome per il tuo notebook, scegli un cluster EMR o creane uno istantaneamente, assegna al notebook un ruolo di servizio che può utilizzare, seleziona un bucket S3 dove desideri salvare i file del tuo notebook e, infine, clicca su Create Notebook. Una volta che lo stato del notebook sarà passato a Ready (Pronto), clicca su Open (apri) per avviare l’editor del notebook.
D: Quali versioni di rilascio EMR sono supportate dai EMR notebook?
Il EMR notebook possono essere collegati a cluster EMR con la versione di rilascio 5.18.0 o successiva.
D: Quali costi prevede l’utilizzo dei EMR notebook?
Non vi sono costi aggiuntivi per l’utilizzo dei EMR notebook. Pagherai i cluster EMR collegati nel tuo account come al solito. Per ulteriori informazioni sui prezzi dei tuoi cluster, visita la pagina https://aws.amazon.com/emr/pricing/
Gestione dei dati
D: Come si caricano i dati in Amazon S3?
Amazon EMR fornisce diversi modi per caricare i dati in un cluster. Il più comune consiste nel caricare i dati in Amazon S3 e utilizzare le funzionalità di Amazon EMR per caricare poi i dati nel cluster. Puoi utilizzare la funzione Cache distribuita di Hadoop per trasferire i file da un file system distribuito al file system locale. Per maggiori dettagli, consulta la documentazione. In alternativa, se stai migrando i dati da locale al cloud, puoi utilizzare uno dei servizi di Migrazione dei dati nel cloud da AWS.
D: Come si ottengono i log per i cluster terminati?
I log di sistema Hadoop e i log dell'utente vengono memorizzati nel bucket Amazon S3 specificato al momento della creazione del cluster. Le interfacce utente delle applicazioni permanenti vengono eseguite fuori dal cluster, i log dei server Spark History Server, dell’interfaccia utente Tez e della sequenza temporale YARN sono disponibili per 30 giorni dopo la chiusura di un'applicazione.
D: I log vengono compressi?
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ì. Puoi utilizzare AWS Direct Connect per stabilire una connessione di rete dedicate privata a AWS. In caso di grossi volumi di dati, puoi utilizzare AWS Import/Export. Per ulteriori dettagli, consulta la documentazione.
Fatturazione
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?
I prezzi di Amazon EMR sono chiari e semplici da calcolare: si paga una tariffa per ogni secondo utilizzato, con una tariffa minima di 1 minuto. Puoi stimare la tua fattura con il Calcolatore di prezzi di AWS. L'utilizzo per altri servizi AWS, tra cui Amazon EC2, viene fatturato separatamente da Amazon EMR.
D: Quando inizia e quando termina il periodo di fatturazione dei cluster di Amazon EMR?
La fatturazione di Amazon EMR inizia nel momento in cui il cluster è pronto a eseguire delle operazioni. Termina invece quando si richiede l’arresto del cluster. Per maggiori dettagli sull’inizio e sulla fine della fatturazione di Amazon EC2, fai riferimento alle Domande frequenti sulla fatturazione di Amazon EC2.
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 per 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. Puoi consultare la nostra documentazione per visualizzare un elenco di dimensioni differenti all’interno di una famiglia di istanze e il corrispondente fattore di normalizzazione all’ora.
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 conoscere utilizzo fatturabile di Amazon EMR.
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. Fai clic qui per ulteriori informazioni sulle prenotazioni di capacità di Amazon EC2.
D: I prezzi includono le tasse?
Salvo diversamente specificato, 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.
Sicurezza e controllo degli accessi ai dati
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 per l’istanza master e uno per gli altri nodi del cluster. 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. Gli altri nodi sono avviati 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. Inoltre, puoi configurare il blocco dell’accesso pubblico di Amazon EMR in ogni regione utilizzata per impedire la creazione del cluster se una regola consente l’accesso pubblico su qualsiasi porta che non è stata aggiunta a un elenco di eccezioni.
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 AWS e fornisce i relativi file di registro. Lo storico delle chiamate API 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.
D: Come posso controllare quali utenti EMR posso accedere ad Amazon S3?
Per impostazione predefinita, i procedimenti delle applicazioni di Amazon EMR utilizzano i profili dell'istanza EC2 quando richiamano altri servizi AWS. Per i cluster multi-tenant, Amazon EMR offre tre opzioni di gestione degli accessi degli utenti ai dati di Amazon S3.
- L'integrazione con AWS Lake Formation permette di definire e gestire le policy di autorizzazione granulari in AWS Lake Formation per accedere a database, tabelle e colonne nel catalogo dati di AWS Glue. Puoi applicare le policy di autorizzazione ai lavori inviati tramite Amazon EMR Notebooks e Apache Zeppelin per i carichi di lavoro interattivi di EMR Spark e puoi inviare gli eventi di audit ad AWS CloudTrail. Abilitando questa integrazione, abiliti anche il single sign-on federato in EMR Notebooks o Apache Zeppelin dai sistemi di identità aziendale compatibili con lo standard Security Assertion Markup Language (SAML) 2.0.
- L'integrazione nativa con Apache Ranger permette di impostare un server nuovo o esistente di Apache Ranger per definire e gestire le policy di autorizzazione granulare per gli accessi degli utenti ai database, alle tabelle e alle colonne dei dati di Amazon S3 tramite Hive Metastore. Apache Ranger è uno strumento open-source che abilita, monitora e gestisce la sicurezza dei dati in modo completo sulla piattaforma Hadoop.
Questa integrazione nativa permette di definire tre tipi di policy di autorizzazione nel server di gestione delle policy di Apache Ranger. Puoi abilitare autorizzazioni a livello di tabella, colonna o riga per Hive, autorizzazioni a livello di tabella e colonna per Spark e autorizzazioni a livello di prefisso e oggetto per Amazon S3. Amazon EMR installa e configura automaticamente i plug-in di Apache Ranger corrispondenti nel cluster. Questi plug-in Ranger si sincronizzano con il server di gestione delle policy per le policy di autorizzazione, applicano il controllo degli accessi ai dati e inviano eventi di audit ad Amazon CloudWatch Logs.
- Il mappatore di ruoli utente per Amazon EMR consente di sfruttare le autorizzazioni AWS IAM per gestire gli accessi alle risorse AWS. Puoi creare delle mappature tra utenti (o gruppi) o ruoli IAM personalizzati. Un utente o un gruppo può accedere solo ai dati permessi dal ruolo IAM personalizzato. Questa caratteristica è al momento disponibile tramite AWS Labs.
Regioni e zone di disponibilità
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. L’esecuzione di un cluster nella stessa zona migliora le prestazioni dei flussi dei processi. 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. Hai anche la possibilità di ottimizzare l'allocazione per le istanze on demand con il prezzo più basso, la capacità spot ottimale o utilizzare le prenotazioni di capacità on demand.
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: Amazon EMR è supportato nelle zone locali AWS?
EMR supporta l'avvio di cluster all'interno della zona locale AWS di Los Angeles. Puoi utilizzare EMR nella regione degli Stati Uniti occidentali (Oregon) per avviare cluster in sottoreti associate alla zona locale AWS di Los Angeles.
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 (Stati Uniti) è 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. In GovCloud la console di gestione di EMR non è ancora disponibile.
Opzioni di implementazione
Amazon EMR su Amazon EC2
D: Cos'è un cluster di Amazon EMR?
Un cluster è una raccolta di istanze di Amazon Elastic Compute Cloud (Amazon EC2). Ogni istanza nel cluster è denominata nodo e ha un ruolo all'interno del cluster, denominato tipo di nodo. Amazon EMR installa inoltre diversi componenti software su ciascun tipo di nodo, assegnando a ciascun nodo un ruolo in un'applicazione distribuita come Apache Hadoop. Ogni cluster ha un identificatore univoco che inizia per "j-".
D: Quali tipi di nodi sono presenti in un cluster?
Un cluster Amazon EMR ha tre tipi di nodi:
- Nodo master: un nodo che gestisce il cluster eseguendo componenti software per coordinare la distribuzione di dati e attività tra altri nodi per l'elaborazione. Il nodo master tiene traccia dello stato delle attività e monitora l'integrità del cluster stesso. Ogni cluster ha un nodo master ed è possibile creare un cluster a nodo singolo con solo il nodo master.
- Nodo principale: un nodo con componenti software che eseguono attività e archiviano dati in Hadoop Distributed File System (HDFS) sul tuo cluster. I cluster multi-nodo hanno almeno un nodo principale.
- Nodo attività: un nodo con i componenti software che eseguono solo attività e non archiviano dati in HDFS. I nodi attività sono facoltativi.
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, la prima fase sarebbe un'applicazione MapReduce che conta le occorrenze di ogni parola e la seconda fase un'applicazione MapReduce che ordina i risultati della prima fase in base al numero.
D: Quali sono gli stati di un cluster?
STARTING: il cluster viene avviato configurando 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.
Avvio di un cluster
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. Per avviare un cluster con EMR Studio, fai riferimento alla sezione relativa a EMR Studio di seguito.
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?
Puoi avviare un numero indefinito di cluster. Tuttavia, all’inizio potrai usare solo 20 istanze su tutti i cluster. Se ti occorrono altre istanze, completa il form di richiesta di istanze Amazon EC2. Una volta aumentato il limite di istanze Amazon EC2, il nuovo limite verrà applicato direttamente nei tuoi cluster di Amazon EMR.
Gestione di un cluster
D: In che modo Amazon EMR impiega Amazon EC2 e Amazon S3?
I dati di input e le applicazioni di elaborazione dei dati possono essere caricati in Amazon S3. Amazon EMR avvia quindi un certo numero di istanze Amazon EC2 specificate. Il servizio avvia l'esecuzione del cluster ed estrae i dati di input da Amazon S3 usando lo schema URI S3 nelle istanze Amazon EC2 avviate. Una volta terminata l'elaborazione del cluster, Amazon EMR trasferisce i dati risultanti in Amazon S3, da dove potrai richiamarli o usarli come input in 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 gli altri nodi. Amazon EMR esegue il software Hadoop in queste istanze. Il nodo master divide i dati in entrata in blocchi, distribuendone l'elaborazione in altri nodi. Ogni nodo esegue quindi la funzione map sui dati che gli sono stati allocati, generando dati intermedi. Questi dati intermedi vengono ordinati, partizionati e inviati ai processi che applicano la funzione riduttore localmente sui nodi. Infine, i dati di output provenienti dal processo reducer sono raccolti in file. Un singolo "cluster" può essere composto da una serie di queste fasi MapReduce.
D: Quali tipi di istanza Amazon EC2 supporta Amazon EMR?
Consulta la pagina dei prezzi di EMR per informazioni sui tipi di istanza disponibili e sui relativi prezzi per regione.
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?
Sì. È possibile avviare un cluster EMR (versione 5.23 o successiva) con tre nodi master e supportare l'alta disponibilità di applicazioni come YARN Resource Manager, Name Node di HDFS, Spark, Hive e Ganglia. Amazon EMR esegue automaticamente il failover su un nodo master in standby in caso di errore del nodo master primario o di arresto anomalo di processi fondamentali come Resource Manager o Name Node. Poiché il nodo master non costituisce un singolo punto di errore, è possibile eseguire i cluster EMR a lungo termine senza interruzioni. In caso di failover, Amazon EMR sostituisce automaticamente il nodo master in errore con un nuovo nodo master dotato della stessa configurazione e delle stesse bootstrap action.
D: Se un altro nodo di un cluster subisce un'interruzione, Amazon EMR può recuperare l'elaborazione?
Sì. Amazon EMR garantisce tolleranza ai guasti dei nodi e prosegue l'elaborazione anche quando uno di essi 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 specifico tramite SSH, devi prima accedere nello stesso modo al nodo master.
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 Guida per sviluppatori.
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. Fai riferimento alla Guida per sviluppatori per i dettagli su come utilizzare le bootstrap action.
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 Guida per sviluppatori 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 Guida per sviluppatori per le istruzioni di utilizzo.
D: È possibile modificare il numero di nodi in un cluster in esecuzione?
Sì. I nodi possono essere di due tipi: (1) nodi principali, che ospitano dati persistenti tramite file system distribuito di Hadoop (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 attività. Queste operazioni possono essere eseguite tramite l’API, SDK per Java oppure tramite il client da riga di comando. Consulta la sezione Ridimensionamento dei cluster in esecuzione nella Guida per sviluppatori per ulteriori informazioni su come modificare le dimensioni di un cluster in esecuzione. Puoi utilizzare anche lo scaling gestito EMR.
D: Quando è consigliabile usare nodi principali e quando nodi di attività?
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 attività possono essere aggiunti e rimossi in qualsiasi momento e non contengono HDFS, perciò sono più idonei per offrire capacità temporanea. Puoi avviare parchi istanze di attività sulle istanze Spot per aumentare la capacità riducendo al tempo stesso i costi.
D: Quando può risultare necessario modificare il numero di nodi nel cluster in esecuzione?
Ci sono diversi scenari in cui può essere utile modificare il numero di nodi 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 attività a seconda delle esigenze. Puoi utilizzare anche lo scaling gestito EMR.
D: È possibile modificare automaticamente il numero di nodi 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 per ogni fase del cluster.
D: Come si consente ad altri utenti IAM l'accesso al mio cluster?
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 Configurazione delle autorizzazioni utente della Guida per sviluppatori di EMR.
Applicazione di tag a un cluster
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 vedere 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
- Chiave = ruolo istanza-gruppo ; Valore = [CORE o TASK];
- aws:elasticmapreduce:job-flow-id=j-12345678
- Chiave = ID flusso lavoro ; Valore = [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, dalla CLI oppure tramite API, per assicurare che al cluster e alle relative istanze Amazon EC2 siano applicati i tag corretti.
EMR Serverless
Domande generali
D: Cos'è s Amazon EMR Serverless?
Amazon EMR Serverless è una nuova opzione di implementazione in Amazon EMR che consente di eseguire framework di big data come Apache Spark e Apache Hive senza dover configurare, gestire e dimensionare i cluster.
D: Chi può utilizzare EMR Serverless?
Data engineer, analisti e scienziati possono utilizzare EMR Serverless per creare applicazioni utilizzando framework open source come Apache Spark e Apache Hive. Possono utilizzare questi framework per trasformare i dati, eseguire query SQL interattive e carichi di lavoro di machine learning.
D: Come inizio a usare EMR Serverless?
Puoi utilizzare EMR Studio, AWS CLI o le API per inviare lavori, monitorare lo stato dei lavori e costruire pipeline di dati da eseguire su EMR Serverless. Per iniziare a utilizzare EMR Studio, accedi alla Console di gestione AWS, vai ad Amazon EMR nella categoria Analytics (Analisi) e seleziona Amazon EMR Serverless. Segui le indicazioni riportate nella Console di gestione AWS, vai ad Amazon EMR nella categoria Analytics (Analisi) e seleziona Amazon EMR Serverless. Segui le indicazioni riportate nella Guida alle operazioni di base per creare l'applicazione EMR Serverless e inviare i lavori. Puoi consultare la pagina Interacting with your application on the AWS CLI (Interazione con l'applicazione nell'AWS CLI) per avviare le applicazioni e inviare lavori tramite la CLI. Gli esempi e il codice di esempio di EMR Serverless sono disponibili anche nel nostro Repository GitHub.
D: Quali framework open source sono supportati da EMR Serverless?
Attualmente EMR Serverless supporta i motori Apache Spark e Apache Hive. Se è necessario il supporto per framework aggiuntivi, come Apache Presto o Apache Flink, invia una richiesta a [email protected].
D: In quali regioni è disponibile EMR Serverless?
EMR Serverless è disponibile nelle seguenti regioni AWS: Asia Pacifico (Mumbai), Asia Pacifico (Seoul), Asia Pacifico (Singapore), Asia Pacifico (Sydney), Asia Pacifico (Tokyo), Canada (Centrale), Europa (Francoforte), Europa (Irlanda), Europa (Londra), Europa (Parigi), Europa (Stoccolma), Sud America (San Paolo), Stati Uniti orientali (Virginia settentrionale), Stati Uniti orientali (Ohio), Stati Uniti occidentali (California settentrionale) e Stati Uniti occidentali (Oregon).
D: Qual è la differenza tra Amazon EMR serverless, Amazon EMR su EC2, Amazon EMR su AWS Outposts e Amazon EMR su EKS?
Amazon EMR consente di eseguire applicazioni su cluster basati su EC2, cluster EKS, Outposts o Serverless. I cluster EMR su EC2 sono adatti per i clienti che necessitano di massimo controllo e flessibilità nell'esecuzione della loro applicazione. Con EMR su cluster EC2, i clienti possono scegliere il tipo di istanza EC2 per ottenere prestazioni specifiche per l'applicazione, personalizzare l'AMI Linux, personalizzare la configurazione dell'istanza EC2, personalizzare ed estendere i framework open source e installare ulteriore software personalizzato sulle istanze cluster. Amazon EMR su EKS è adatto per i clienti che desiderano standardizzare su EKS per gestire i cluster nelle applicazioni o utilizzare diverse versioni di un framework open source sullo stesso cluster. Amazon EMR su AWS Outposts è adatto ai clienti che desiderano eseguire EMR più in prossimità del proprio data center, in un Outpost. EMR Serverless è adatto per i clienti che desiderano evitare di gestire e far funzionare i cluster e preferiscono eseguire le applicazioni utilizzando framework open source.
D: Quali sono le differenze tra EMR Serverless e Amazon EMR su EC2?
|
|
|
Amazon EMR su EKS |
|
|
|
S |
Resilienza agli errori della zona di disponibilità |
|
|
S |
Aumento e riduzione automatici delle risorse secondo necessità |
|
|
S |
Crittografia dei dati a riposo |
|
|
S |
|
|
Spark |
|
|
|
|
N |
Supporto per Apache Hudi e Apache Iceberg |
S |
S |
S |
Integrazione con Apache Ranger per controllo delle autorizzazioni a livello di tabella e colonna |
|
|
N |
Personalizzazione delle immagini del sistema operativo |
|
|
S |
Personalizzazione del framework open source installato |
S |
S |
S |
Personalizzazione e caricamento di librerie e dipendenze aggiuntive |
S |
S |
S |
Esecuzione di carichi di lavoro da SageMaker Studio come parte del flusso di lavoro di machine learning (ML) |
N |
|
N |
Connessione a notebook Jupyter in self-hosting |
N |
S |
S |
Creazione e orchestrazione di pipeline utilizzando Apache Airflow e Flusso di lavoro gestito da Amazon per Apache Airflow (MWAA) |
|
|
S |
Creazione e orchestrazione di pipeline utilizzando AWS Step Functions |
S |
|
S |
D: Quali versioni di EMR sono supportate in EMR Serverless?
EMR Serverless supporta EMR 6.6 e versioni successive. Con EMR Serverless, si ottiene lo stesso runtime di EMR a prestazioni ottimizzate disponibile in altre opzioni di implementazione EMR, che è compatibile al 100% con le API dei framework open source standard.
D: I costi per la capacità preinizializzata sono inclusi in BilledResourceUtilization?
BilledResourceUtilization tiene conto esclusivamente della durata in cui la capacità preinizializzata è stata utilizzata per il processo e non tiene conto dei relativi tempi di inattività.
D: Qual è la differenza tra BilledResourceUtilization e TotalResourceUtilization?
Se la durata di esecuzione di un lavoratore è inferiore a 60 secondi, BilledResourceUtilization la conterà come 60 secondi, mentre TotalResourceUtilization la arrotonderà al secondo più vicino. Inoltre, BilledResourceUtilization esclude 20 GB di spazio di archiviazione gratuito dal calcolo.
Applicazioni, worker e processi
D: Cos'è un'applicazione e come posso crearla?
Con Amazon EMR Serverless, puoi creare una o più applicazioni EMR Serverless che utilizzano framework di analisi open source. Per creare un'applicazione, devi specificare i seguenti attributi: 1) la versione di rilascio di Amazon EMR per la versione del framework open source che desideri utilizzare e 2) i motori di analisi specifici che l'applicazione deve utilizzare, come Apache Spark 3.1 o Apache Hive 3.0. Una volta creata l'applicazione, puoi iniziare a eseguire i lavori di elaborazione dei dati o inviare richieste interattive all'applicazione.
D: Cos'è un worker?
Un'applicazione EMR Serverless usa internamente i worker per eseguire i carichi di lavoro. Quando viene inviato un lavoro, EMR Serverless calcola le risorse necessarie per eseguirlo e pianifica i worker. EMR Serverless suddivide i carichi di lavoro in attività, esegue il provisioning e configura i worker con il framework open source, quindi li disattiva quando il lavoro è completato. EMR Serverless aumenta o riduce automaticamente i worker a seconda del carico di lavoro e del parallelismo richiesto a ogni fase del lavoro, eliminando così la necessità di effettuare una stima del numero di worker necessari per eseguire i carichi di lavoro. Le dimensioni predefinite di questi worker si basano sul tipo di applicazione e sulla versione di rilascio di Amazon EMR. Puoi sostituire queste dimensioni quando pianifichi l'esecuzione di un lavoro.
D: Posso specificare il numero minimo e massimo di worker che i miei lavori possono utilizzare?
Con EMR Serverless, puoi specificare il numero minimo e massimo di worker simultanei, nonché la configurazione della vCPU e della memoria per i worker. Puoi inoltre impostare i limiti della capacità massima sulle risorse dell'applicazione per controllare i costi.
D: Quando devo creare più applicazioni?
Considera la creazione di più applicazioni in uno dei seguenti casi:
- Utilizzo di framework open source diversi
- Utilizzo di framework open source con versioni diverse per differenti casi d'uso
- Esecuzione di test comparativi durante l'aggiornamento da una versione all'altra
- Conservazione di ambienti logici separati per scenari di test e produzione
- Fornitura di ambienti logici separati per team differenti con controlli dei costi e monitoraggio dell'utilizzo indipendenti
- Separazione di applicazioni di diverse linee di business
D: Posso modificare le proprietà predefinite di un'applicazione EMR Serverless dopo averla creata?
Sì, puoi modificare le proprietà dell'applicazione, come la capacità iniziale, i limiti di capacità massima e la configurazione di rete utilizzando EMR Studio o la chiamata API/CLI update-application.
D: Quando devo creare un'applicazione con un pool pre-inizializzato di worker?
Un'applicazione EMR Serverless senza worker pre-inizializzati impiega fino a 120 secondi per determinare le risorse richieste e fornirle. EMR Serverless fornisce una funzionalità opzionale che mantiene i worker inizializzati e pronti a rispondere in pochi secondi, creando in modo efficace un pool di worker a chiamata per l'applicazione. Questa funzionalità è denominata capacità pre-inizializzata e può essere configurata per ogni applicazione impostando il parametro della capacità iniziale di un'applicazione.
La capacità pre-inizializzata consente di avviare i lavori immediatamente, il che è ideale per l'implementazione di lavori in cui il fattore tempo è essenziale. Puoi specificare il numero di worker da pre-inizializzare quando avvii un'applicazione EMR Serverless. Successivamente, quando gli utenti inviano i lavori, si possono utilizzare i worker pre-inizializzati per avviare immediatamente i lavori. Se il lavoro richiede più worker rispetto a quelli che hai scelto di pre-inizializzare, EMR Serverless li aggiunge automaticamente (fino al limite massimo di worker simultanei specificato). Al termine del lavoro, EMR Serverless torna automaticamente al numero di worker specificato. I worker vengono disattivati automaticamente se rimangono inattivi per 15 minuti. Puoi modificare il timeout di inattività predefinito dell'applicazione utilizzando l'API updateApplication o EMR Studio.
D: Come posso inviare e gestire i lavori su EMR Serverless?
Puoi inviare e gestire lavori EMR Serverless utilizzando EMR Studio, SDK/CLI o i nostri connettori Apache Airflow.
D: Come posso includere le dipendenze con i lavori che desidero eseguire su EMR Serverless?
Per PySpark, puoi creare pacchetti di dipendenze Python utilizzando virtualenv e trasmettere il file di archivio con l'opzione --archives, che consente ai worker di usare le dipendenze durante l'esecuzione del lavoro. Per Scala o Java, puoi creare pacchetti di dipendenze jar, caricarli in Amazon S3, e trasmetterli utilizzando le opzioni --jars o --packages con l'esecuzione del lavoro EMR Serverless.
D: Le applicazioni Spark e Hive di EMR Serverless supportano funzioni definite dall'utente (UDF)?
EMR Serverless supporta UDF basate su Java. Puoi creare pacchetti jar, caricarli in S3 e utilizzarli negli script Spark o HiveQL.
D: Quali configurazioni dei worker supporta EMR Serverless?
Per i dettagli, consulta Supported Worker Configuration (Configurazione dei worker supportata).
D: Posso annullare un lavoro EMR Serverless se il tempo di esecuzione è più lungo del previsto?
Sì, puoi annullare un lavoro EMR in esecuzione da EMR Studio o chiamando l'API/CLI cancelJobRun.
D: Posso aggiungere archiviazione supplementare per i worker?
È possibile aggiungere ulteriore spazio di archiviazione per i worker in EMR Serverless selezionando l'opzione di archiviazione appropriata durante l'invio del lavoro. EMR Serverless offre due opzioni di archiviazione temporanea:
- Archiviazione standard: per impostazione predefinita, questa opzione include 20 GB di spazio di archiviazione temporanea per worker. È possibile personalizzarlo durante l'invio del lavoro e aumentare la capacità di archiviazione da 20 GB a 200 GB per worker.
- Archiviazione su disco ottimizzata per la riproduzione casuale: questa opzione fornisce fino a 2 TB di archiviazione temporanea per worker, ottimizzata per carichi di lavoro ad alta intensità di riproduzione.
D: Dove è possibile trovare codici di esempio?
I codici di esempio di EMR Serverless sono disponibili nel nostro Repository GitHub.
D: Quali sono le opzioni per i worker disponibili in EMR Serverless?
EMR Serverless offre due opzioni per i worker: worker on demand e worker preinizializzati.
I worker on demand vengono avviati solo quando sono necessari per un processo e vengono rilasciati automaticamente al termine di tale processo. Ciò consente di risparmiare sui costi pagando solo le risorse utilizzate ed evitando costi aggiuntivi per la capacità inutilizzata. I worker on demand ridimensionano o riducono l'applicazione in base al carico di lavoro, così da non doversi preoccupare di sovradimensionare o sottodimensionare le risorse.
I worker preinizializzati sono una funzionalità opzionale che consente di mantenere i worker pronti a rispondere in pochi secondi. In questo modo si crea in modo efficace un bacino di worker a caldo per un'applicazione. Ciò consente l'avvio immediato dei processi, rendendo questa modalità ideale per applicazioni iterative e processi urgenti.
D: È possibile configurare le applicazioni EMR Serverless in più zone di disponibilità (AZ)?
Sì, è possibile configurare le applicazioni EMR Serverless in più AZ. Il processo per configurare più AZ dipende dal tipo di worker utilizzati.
Quando si utilizzano solo i worker on demand, EMR Serverless distribuisce i processi in più AZ per impostazione predefinita, ma ogni processo viene eseguito solo in una AZ. Puoi scegliere le AZ da usare associando le sottoreti alle stesse AZ. Se una AZ riporta un errore, EMR Serverless esegue automaticamente il processo in un'altra AZ integra.
Quando si utilizzano worker preinizializzati, EMR Serverless seleziona una AZ integra tra le sottoreti specificate. I processi vengono inviati in quella AZ fino a quando non viene arrestata l'applicazione. Se una AZ viene compromessa, sarà possibile riavviare l'applicazione per passare a un'altra AZ integra.
D: Posso connettermi agli archivi dati in un'altra regione?
EMR Serverless può accedere a determinate risorse AWS nella stessa regione solo se configurato senza connettività VPC. Leggi le considerazioni. Per accedere alle risorse AWS in una regione diversa o a risorse non AWS, dovrai configurare l'accesso VPC e un gateway NAT per il routing verso gli endpoint pubblici per le risorse AWS.
Monitoraggio e debug
D: Come posso monitorare le applicazioni e le esecuzioni dei lavori di Amazon EMR Serverless?
Le metriche a livello di applicazione e di lavoro di Amazon EMR Serverless vengono pubblicate ogni 30 secondi in Amazon CloudWatch.
D: Come posso avviare l'interfaccia utente di Spark e Tez con EMR Serverless?
Da EMR Studio puoi selezionare un lavoro EMR Serverless in esecuzione o completato e fare clic sul pulsante Spark UI (Interfaccia utente Spark) o Tez UI (UI Tez) per avviarle.
Sicurezza e controllo dei dati
D: Posso accedere alle risorse nel mio Cloud privato virtuale Amazon (VPC)?
Sì, puoi configurare le applicazioni Amazon EMR Serverless in modo che accedano al tuo VPC. Consulta la sezione Configuring VPC access (Configurazione dell'accesso VPC) nella documentazione per ulteriori informazioni.
D: Che tipo di isolamento posso ottenere con un'applicazione EMR Serverless?
Ogni applicazione EMR Serverless è isolata dalle altre e viene eseguita su un Amazon VPC sicuro.
Quote basate su vCPU a livello di account
D: Cosa cambia con le quote di servizio di Amazon EMR Serverless?
Amazon EMR Serverless introduce una nuova quota di servizio denominata Max concurrent vCPUs per account (N. massimo di vCPU simultanee per account). Questa quota basata su vCPU consente di impostare il numero massimo di vCPU aggregate che le tue applicazioni sono in grado di aumentare in una regione. Le quote esistenti a livello di applicazione, basate su worker (numero massimo di worker attivi), non saranno più supportate a partire dal 1° febbraio 2023.
D: Dove posso visualizzare e gestire la quota vCPU del mio account?
Puoi visualizzare, gestire e richiedere un aumento della quota nella console di gestione AWS Service Quotas. Per ulteriori informazioni, consulta Richiesta di aumento delle quote nella Guida per l'utente di Service Quotas.
D: Qual è la differenza tra la quota vCPU a livello di account e la proprietà maximumCapacity a livello di applicazione?
EMR Serverless fornisce due controlli dei costi: 1/ La quota massima di vCPU simultanee per account viene applicata in tutte le applicazioni EMR Serverless di una regione nel tuo account. 2/ Il parametro maximumCapacity limita la vCPU di un'applicazione EMR Serverless specifica. Si consiglia di utilizzare la quota basata su vCPU per limitare le vCPU massime simultanee utilizzate da tutte le applicazioni in una regione e la proprietà maximumCapacity per limitare le risorse utilizzate da un'applicazione specifica. Ad esempio, nel caso di 5 applicazioni, dove ognuna delle quali può aumentare fino a 1000 vCPU, imposta la proprietà maximumCapacity a 1000 vCPU per ogni applicazione e configura la quota basata su vCPU a livello di account a 5 * 1000 = 5000 vCPU.
D. Come faccio a sapere se raggiungo la quota basata su vCPU per il mio account?
Se superi la quota di vCPU a livello di account, EMR Serverless smette di fornire ulteriore capacità. Se provi a creare una nuova applicazione dopo aver superato la quota, la creazione dell'applicazione ha esito negativo e viene generato il messaggio di errore "Application failed to create as you have exceeded the maximum concurrent vCPUs per account service quota. You can view and manage your service quota using AWS Service Quotas console" (Impossibile creare l'applicazione perché è stata superata la quota di servizio massima di vCPU simultanee per account. È possibile visualizzare e gestire le quote di servizio dalla console AWS Service Quotas). Se dopo aver superato la quota invii un nuovo lavoro, questo avrà esito negativo e verrà generato il messaggio di errore:"Job failed as you have exceeded the maximum concurrent vCPUs per account service quota. You can view and manage your service quota using AWS Service Quotas console" (Impossibile creare l'applicazione perché è stata superata la quota di servizio massima di vCPU simultanee per account. È possibile visualizzare e gestire le quote di servizio dalla console AWS Service Quotas). Per maggiori dettagli, consulta la documentazione.
Prezzi
D: In che modo Amazon EMR Serverless consente di risparmiare sui costi di implementazione dei big data?
Amazon EMR Serverless consente di risparmiare sui costi in tre modi diversi. In primo luogo, non ci sono costi operativi per la gestione, la protezione e il dimensionamento dei cluster. Secondariamente, EMR Serverless aumenta automaticamente i worker a ogni fase dell'elaborazione del lavoro e li riduce quando non sono necessari. Ti verranno addebitati i costi per la vCPU aggregata, la memoria e le risorse di archiviazione utilizzate a partire dall'avvio dell'esecuzione di un worker fino a quando non termina, arrotondando al secondo più vicino e considerando il tempo di un minuto come minimo. Ad esempio, il lavoro può richiedere 10 worker per i primi 10 minuti di elaborazione e 50 worker per i 5 minuti successivi. Con un dimensionamento automatico granulare, sosterrai i costi per soli 10 worker per 10 minuti e 50 worker per 5 minuti, pertanto non dovrai pagare per risorse sottoutilizzate. Terzo e ultimo modo, EMR Serverless include il runtime Amazon EMR a prestazioni ottimizzate per Apache Spark, Apache Hive e Presto. Il runtime Amazon EMR è compatibile con l'API e due volte più veloce dei motori open source standard, quindi i lavori vengono eseguiti più rapidamente a costi di calcolo inferiori.
D: Il costo di EMR Serverless è paragonabile ad Amazon EMR su istanze spot EC2?
Dipende dall'attuale utilizzo di EMR sui cluster EC2. Se esegui i cluster EMR con istanze on demand EC2, EMR Serverless offrirà un costo totale di proprietà (TCO) più basso se l'attuale utilizzo dei cluster è inferiore al 70%. Se utilizzi i Savings Plans di EC2, EMR Serverless offrirà un TCO più basso se l'utilizzo dei cluster è inferiore al 50%. E se utilizzi le istanze spot EC2, Amazon EMR su EC2 e Amazon EMR su EKS saranno ancora più convenienti.
D: I worker pre-inizializzati vengono addebitati anche dopo il completamento dei lavori?
Sì, se non interrompi i worker dopo il completamento di un lavoro, ti verranno addebitati i costi dei worker pre-inizializzati.
D: Chi devo contattare per domande, commenti e richieste di funzionalità?
Inviaci un'e-mail all'indirizzo [email protected] con le tue domande e il tuo prezioso feedback su EMR Serverless.
Amazon EMR su Amazon EKS
D: Cos’è Amazon EMR su Amazon EKS?
Amazon EMR su Amazon EKS è un modello di distribuzione di Amazon EMR che consente ai clienti di elaborare facilmente e a costi ridotti grosse quantità di dati. Utilizza framework di analisi ospitati in esecuzione sul servizio gestito Amazon EKS flessibile in container, con l'infrastruttura su scala Web di Amazon Elastic Compute Cloud (Amazon EC2), AWS Fargate e Amazon Simple Storage Service (Amazon S3).
D: Qual è il vantaggio di utilizzare Amazon EMR su Amazon EKS?
Amazon EMR su Amazon EKS separa il lavoro di analisi dai servizi e dall'infrastruttura che stanno elaborando il lavoro utilizzando un approccio basato sui container. Puoi concentrarti maggiormente sullo sviluppo dell'applicazione e meno sul funzionamento dell'infrastruttura poiché EMR su EKS configura dinamicamente l'infrastruttura in base al calcolo, alla memoria e alle dipendenze dell'applicazione del processo. team dell'infrastruttura possono gestire centralmente una piattaforma di elaborazione comune per consolidare i carichi di lavoro EMR con altre applicazioni basate su container. Più team, organizzazioni o unità aziendali possono eseguire simultaneamente e in modo indipendente i propri processi di analisi sull'infrastruttura condivisa mantenendo l'isolamento abilitato da Amazon EKS e AWS Identity and Access Management (IAM).
D: Quali sono i vantaggi per gli utenti che già eseguono Apache Spark su Amazon EKS?
Se utilizzi già Apache Spark su Amazon EKS, puoi sfruttare tutti i vantaggi di Amazon EMR come il provisioning e il dimensionamento automatico e la possibilità di utilizzare le ultime versioni completamente gestite dei framework di analisi di Big Data open source. Viene fornito un runtime EMR ottimizzato per Apache Spark con prestazioni tre volte superiori rispetto a Apache Spark su EKS open source, una esperienza data science serverless con EMR Studio e l’interfaccia utente di Apache Spark, controllo accessi dettagliato e supporto per la crittografia dei dati.
D: In che modo questa funzionalità si collega e funziona con gli altri servizi AWS?
Amazon EKS fornisce ai clienti un’esperienza gestita per l’esecuzione di Kubernetes su AWS, consentendo l’aggiunta di capacità di elaborazione tramite gruppi di nodi gestiti EKS o con l’uso di AWS Fargate. L’esecuzione dei processi EMR in EKS consente di accedere ai dati su Amazon S3 mentre il monitoraggio e la registrazione possono essere integrati con Amazon CloudWatch. AWS Identity and Access Management (IAM) consente un controllo accessi basato sui ruoli sia per i processi che per i servizi AWS dipendenti.
D: Come funziona EMR su Amazon EKS?
Per prima cosa, registra il tuo cluster EKS con Amazon EMR. Quindi, invia i processi Spark a EMR utilizzando l’interfaccia a riga di comando, SDK o EMR Studio. EMR richiede al sistema di pianificazione Kubernetes su EKS di programmare i pod. Per ogni processo che viene eseguito, EMR su EKS crea un container. Il container contiene l’immagine di base di Amazon Linux 2 con aggiornamenti per la sicurezza oltre ad Apache Spark e alle dipendenze associate per eseguire Spark, più le dipendenze specifiche dell’applicazione. Ogni processo viene eseguito in un pod. Il pod scarica questo container e inizia ad eseguirlo. Se l’immagine del container è stata precedentemente distribuita sul nodo, allora verrà utilizzata un’immagine memorizzata nella cache e il download verrà saltato. I container sidecar, come ad esempio i forwarder di log o parametri, possono essere distribuiti sul pod. Il pod viene terminato quando viene terminato il processo. Una volta terminato il processo, sarà comunque ancora possibile eseguirne il debug tramite l’interfaccia utente di Spark.
D: Quali servizi di elaborazione AWS possono utilizzare con Amazon EMR su EKS?
Amazon EMR per EKS può essere utilizzato sia con le istanze di Amazon Elastic Compute Cloud (EC2) per supportare opzioni di personalizzazione più ampie che con il servizio AWS Fargate serverless per elaborare l’analisi senza dover fornire o gestire le istanze EC2. La disponibilità delle applicazioni può migliorare automaticamente distribuendo i lavori di analisi su più zone di disponibilità AWS.
D: Come inizio ad utilizzare EMR su EKS?
Per iniziare, registra il tuo cluster Amazon EKS con Amazon EMR. Dopo la registrazione, fai riferimento ad essa nella definizione del processo (che include le dipendenze dell’applicazione e i parametri del framework) inoltrando i carichi di lavoro a EMR per l’esecuzione. Con EMR su EKS, puoi utilizzare diversi framework analitici di Big Data open source, versioni e configurazioni per le applicazioni analitiche in esecuzione nello stesso cluster EKS. Per ulteriori informazioni, consulta la nostra documentazione.
D: Posso utilizzare la stessa versione di EMR per i cluster EMR e le applicazioni in esecuzione su EKS?
Sì, puoi utilizzare la stessa versione di EMR per le applicazioni che sono in esecuzione sui cluster EMR e le applicazioni che sono in esecuzione su EKS.
D: In che modo viene eseguita la risoluzione dei problemi di un'applicazione analitica?
Puoi utilizzare l’interfaccia utente Spark di Amazon EMR per eseguire la diagnosi e risolvere i problemi relativi alle applicazioni Spark. Per tutte le applicazioni analitiche, EMR fornisce l’accesso ai dettagli dell’applicazione, i log associati e i parametri per un massimo di 30 giorni una volta che sono state completate. I processi possono essere configurati singolarmente per inviare i log a una posizione di Amazon S3 o a Amazon CloudWatch.
D: Posso vedere le applicazioni EMR in EKS?
Sì, le applicazioni EMR sono visualizzate nella console EKS come le distribuzioni e i processi Kubernetes.
D: Posso isolare più processi o applicazioni sullo stesso cluster EKS?
Sì, Kubernetes fornisce originariamente l’isolamento dei processi. Inoltre, ciascun processo può essere configurato per essere eseguito con il proprio ruolo di esecuzione in modo da limitare le risorse AWS a cui può accedere il processo.
D: In che modo EMR su EKS consente di ridurre i costi?
EMR su EKS riduce i costi rimuovendo la necessità di eseguire cluster dedicati. Puoi utilizzare un cluster EKS condiviso comune per eseguire applicazioni analitiche che richiedono diverse versioni di framework analitici di Big Data open source. Puoi utilizzare anche lo stesso cluster EKS per eseguire altre applicazioni non EMR con container.
D: Quando costa EMR su EKS?
I prezzi di Amazon EMR su EKS vengono calcolati in base alle risorse vCPU e di memoria richieste per i pod che eseguono il processo per granularità minuto. Per ulteriori informazioni sulle tariffe, consulta la pagina dei prezzi di Amazon EMR.
D: Quali sono le principali differenze tra EMR su EKS e EMR su EC2?
Caratteristica |
EMR on EKS |
EMR on EC2 |
Ultima versione supportata di EMR |
S |
S |
Supporto Multi-AZ per i processi |
S |
N |
Multi-tenant con carichi di lavoro non Big Data |
S |
N |
Ambito della versione EMR |
processo |
cluster |
Cluster Auto Scaling |
S |
S |
Scaling gestito |
N |
S |
Provider di elaborazione |
EC2, Fargate |
EC2 |
Crittografia dei dati |
S |
S |
Autenticazione Kerberos |
N |
S |
Applicazioni ospitate |
Solo Spark |
|
AWS Lake Formation |
N |
S |
Integrazione di Apache Ranger |
N |
S |
AMI/immagini personalizzate |
S |
S |
Integrazione con Sagemaker e Zeppelin |
S con Livy |
S |
Notebook con hosting autonomo |
N | S |
Integrazione con EMR Studio |
S |
S |
Zeppelin, JEG |
N |
S |
Orchestrazione con Apache Airflow |
S |
S |
Orchestrazione con AWS Step Functions |
Y |
Y |
D: Cosa sono i modelli pod?
EMR su EKS consente l'uso di modelli pod di Kubernetes per personalizzare dove e come eseguire le attività all'interno del cluster di Kubernetes. I modelli pod di Kubernetes offrono un modello di progettazione riutilizzabile o un boilerplate per esprimere in modo dichiarativo le modalità con cui un pod di Kubernetes deve essere distribuito sul cluster EKS.
D: Perché devo usare i modelli pod con le mie attività EMR su EKS?
I modelli pod possono offrire maggiore controllo sulle modalità di programmazione delle attività in Kubernetes. Ad esempio, permettono di ridurre i costi attraverso l'esecuzione delle attività del driver Spark su istanze Spot di Amazon EC2 oppure consentono esclusivamente l'esecuzione di attività che richiedono SSD su istanze abilitate per SSD. I modelli pod con EMR su EKS forniscono un controllo particolareggiato delle modalità di allocazione delle risorse e di esecuzione di container personalizzati insieme all'attività. Pertanto, questi modelli consentono di ridurre i costi e forniscono, al contempo, prestazioni migliori per le attività in questione.
D: Cos'è un pod?
Per pod si intende uno o più container con le risorse per reti e storage condivise in esecuzione su un nodo di lavoro di Kubernetes. EMR su EKS utilizza i pod per eseguire le attività attraverso la programmazione di un driver Spark e delle attività dell'esecutore come pod singoli.
D: Quali sono i casi d'uso dei modelli pod?
Utilizzando i modelli pod puoi ottimizzare costi e prestazioni. Ad esempio, puoi risparmiare denaro attraverso la definizione di attività in esecuzione su istanze Spot di EC2 oppure programmarle su GPU o istanze EC2 supportate da SSD per incrementarne le prestazioni. Spesso i clienti hanno bisogno di un controllo particolareggiato del carico di lavoro per supportare più team od organizzazioni su EKS e i modelli pod semplificano l'esecuzione di attività su gruppi di nodi designati per i team. Inoltre, puoi distribuire i container collaterali per eseguire il codice di inizializzazione per l'attività o eseguire strumenti di monitoraggio noti, come Fluentd per l'inoltro di log.
D: Posso specificare un modello pod diverso per i driver e gli esecutori Spark?
Puoi fornire modelli singoli per driver ed esecutori, ma non è necessario. Ad esempio, puoi configurare nodeSelector e tolleranze per designare i driver Spark da eseguire esclusivamente su istanze AWS EC2 on demand e gli esecutori Spark da eseguire solo sulle istanze AWS Fargate. In questo invio delle attività, basta configurare le proprietà di Spark spark.kubernetes.driver.podTemplateFile e spark.kubernetes.executor.podTemplateFile per fare riferimento alla posizione S3 del modello.
D: Quali valori del modello posso specificare?
Puoi specificare sia i campi dei livelli del pod (che includono volume, affinità del pod, inizializzazione container, selettore del nodo) e i campi dei livelli dei container principali di Spark (che includono EnvFrom, directory di lavoro, ciclo di vita, montaggio di volumi di container). L'elenco completo dei valori consentiti è disponibile nella nostra documentazione.
D: Dove posso trovare ulteriori informazioni sui modelli pod?
Amazon EKS supporta già i modelli pod. Per ulteriori informazioni sul supporto per i modelli pod di Amazon EMR su EKS, consulta la nostra documentazione e la documentazione relativa ai modelli pod di Apache Spark.
D: Perché devo utilizzare immagini personalizzate con EMR su EKS?
Senza immagini personalizzate, la gestione delle dipendenze delle applicazioni con EMR su EKS richiedeva di farvi riferimento in fase di esecuzione da un servizio di storage esterno come Amazon S3. Ora, con il supporto per immagini personalizzate, puoi creare un'immagine docker autonoma con l'applicazione e le sue librerie dipendenti. Non è più necessario mantenere, aggiornare o eseguire la versione di librerie archiviate esternamente e le applicazioni per big data possono essere sviluppate utilizzando gli stessi processi DevOps utilizzati dalle altre applicazioni containerizzate. Basta puntare sull’immagine ed eseguirla.
D: Cos'è un’immagine personalizzata?
Un'immagine personalizzata è un'immagine docker fornita da EMR su EKS ("immagine di base") che contiene il runtime EMR e i connettori ad altri servizi AWS che modifichi per includere le dipendenze dell'applicazione o i pacchetti aggiuntivi richiesti dalla tua applicazione. La nuova immagine può essere archiviata sia in Amazon Elastic Container Registry (ECR) che nel proprio registro di container Docker.
D: Quali sono i casi d'uso per le immagini personalizzate?
I clienti possono creare un'immagine di base, aggiungere le proprie librerie standard aziendali e quindi archiviarla in Amazon Elastic Container Registry (Amazon ECR). Altri clienti possono personalizzare l'immagine per includere le dipendenze specifiche dell'applicazione. L'immagine immutabile risultante può essere sottoposta a scansione delle vulnerabilità, implementata in ambienti di test e di produzione. Esempi di dipendenze che puoi aggiungere includono Java SDK, Python o librerie R, puoi aggiungerle direttamente all'immagine, proprio come con altre applicazioni containerizzate.
D: Cosa è incluso nell’immagine di base?
D: Posso specificare una immagine personalizzata diversa per i driver e gli esecutori Spark?
Puoi specificare immagini separate per i tuoi driver ed esecutori Spark quando vuoi includere diverse dipendenze o librerie. La rimozione delle librerie non necessarie in entrambe le immagini può ridurre le dimensioni dell'immagine e quindi ridurre il tempo di avvio del lavoro. È possibile specificare una singola immagine sia per i driver che per gli esecutori (spark.kubernetes.container.image) o specificare un’immagine diversa per i driver (spark.kubernetes.driver.container.image) e una per gli esecutori (spark.kubernetes.executor.container.image).D: Dove posso trovare ulteriori informazioni sulle immagini personalizzate?
Per maggiori informazioni sul supporto di Amazon EMR su EKS per le immagini personalizzate, consulta la nostra documentazione oppure la documentazione di Apache Spark.D: Sono previsti costi aggiuntivi per l'utilizzo delle immagini personalizzate?
Non sono previsti addebiti per l'utilizzo delle immagini personalizzate.Amazon EMR su AWS Outposts
D: Cos'è AWS Outposts?
AWS Outposts porta i servizi, l'infrastruttura e i modelli operativi nativi di AWS praticamente in ogni data center, ambiente in co-location o struttura in locale. Mediante EMR su Outposts, puoi distribuire, gestire e dimensionare cluster EMR in locale, esattamente come nel cloud.
D: Quando è necessario impiegare EMR su Outposts?
Se disponi di distribuzioni Apache Hadoop esistenti in locale e hai difficoltà a soddisfare le richieste di capacità durante i momenti di picco, puoi usare EMR su Outposts per aumentare la tua capacità di elaborazione senza dover spostare dati nel cloud. EMR su Outposts ti permette di lanciare un nuovo cluster EMR in locale in pochi minuti e connetterlo ai set di dati esistenti nello storage HDFS in locale per soddisfare questa richiesta e mantenere gli SLA.
Se devi processare dati che devono rimanere in locale per governance, conformità o altri motivi, puoi utilizzare EMR su Outposts per distribuire ed eseguire applicazioni come Apache Hadoop e Apache Spark in locale, vicino ai tuoi dati. Ciò riduce la necessità di spostare grandi volumi di dati in locale al cloud, riducendo il tempo totale di elaborazione di quei dati.
Se stai migrando dati e carichi di lavoro Apache Hadoop al cloud e desideri iniziare a utilizzare EMR prima del completamento della migrazione, puoi utilizzare AWS Outposts per avviare cluster EMR che connettano il tuo storage HDFS esistente in locale. In seguito, potrai gradualmente migrare i dati ad Amazon S3 come parte di un'evoluzione dell'architettura al cloud.
D: Quali versioni EMR sono supportate da EMR su Outposts?
La release minima supportata di Amazon EMR 5.28.0.
D: Quali applicazioni EMR sono disponibili durante l'utilizzo di Outposts?
Sono supportate tutte le applicazioni nella release 5.28.0 EMR e successive. Consulta le nostre note di rilascio per un elenco completo di applicazioni EMR.
D: Quali funzioni EMR sono supportate da EMR su Outposts?
- Le istanze Spot EC2 non sono disponibili in AWS Outposts. Durante la creazione di un cluster, devi selezionare istanze on-demand EC2.
- Un sottoinsieme di tipi di istanza EC2 è disponibile in AWS Outposts. Per un elenco di tipi di istanze supportati con EMR e Outposts, consultare la nostra documentazione.
- Nell'aggiunta di volumi di Amazon EBS a istanze, solo il tipo di storage General Purpose SSD (GP2) è supportato in AWS Outposts.
D: È possibile utilizzare cluster EMR in un Outpost per leggere dati dai cluster esistenti Apache Hadoop in locale?
Carichi di lavoro in esecuzione su EMR in un Outpost possono leggere e scrivere dati nello storage HDFS esistente, permettendoti di integrarli con facilità con distribuzioni Apache Hadoop esistenti in locale. Questo ti dà la capacità di aumentare le tue esigenze di elaborazione dati mediante EMR senza che sia necessario migrare dati.
D: È possibile scegliere di archiviare i propri dati?
Quando viene lanciato un cluster EMR in un Outpost, tutte le risorse di calcolo e archiviazione dei dati sono distribuite nel tuo Outpost. I dati scritti localmente nel cluster EMR sono memorizzati su volumi EBS locali nel tuo Outpost. Strumenti come Apache Hive, Apache Spark, Presto, e altre applicazioni EMR possono essere configurati ciascuno per scrivere dati localmente in un Outpost, in un sistema di file esterno come un'installazione esistente HDFS o su Amazon S3. Mediante EMR su Outposts, hai il pieno controllo dell'archiviazione dei tuo dati in Amazon S3 o localmente nel tuo Outpost.
D: Le funzioni EMR hanno bisogno di dati caricati in S3?
Durante il lancio di un cluster EMR in un Outpost, hai la possibilità di abilitare il logging. Una volta abilitato il logging, i log del cluster saranno caricati nel bucket S3 che tu specifichi. Questi log vengono impiegati per semplificare il debug dei cluster una volta terminati. Una volta disabilitati, nell'S3 non saranno caricati log.
D: Cosa accade se l'Outpost ha esaurito la sua capacità?
Durante il lancio di un cluster in un Outpost, EMR tenterà di lanciare il numero e il tipo di istanze on demand EC2 che hai richiesto. Se l'Outpost non ha alcuna capacità, EMR riceverà una notifica di capacità insufficiente. EMR tenterà per un periodo di tempo e se non c'è nessuna capacità disponibile, il cluster non riuscirà a eseguire il lancio. Lo stesso processo si applica durante il ridimensionamento di un cluster. Se la capacità sull'Outpost è insufficiente per i tipi di istanza richiesti, EMR non sarà in grado di aumentare la capacità del cluster. Puoi impostare facilmente gli avvisi di Amazon CloudWatch per monitorare l'utilizzo della tua capacità su Outposts e ricevere avvisi quando la capacità d'istanza è inferiore alla soglia desiderata.
D: Cosa accade se la connettività di rete viene interrotta fra Outpost e AWS?
Se si perde la connettività di rete fra il tuo Outpost e la relativa Regione AWS, i tuoi cluster in Outposts continueranno a funzionare, ma ci saranno operazioni che tu non sarai in grado di eseguire fino al ripristino della connettività. Fino a quando non viene ripristinata la connettività, tu non puoi creare nuovi cluster o eseguire nuove azioni sui cluster esistenti. In caso di errori nelle istanze, l'istanza non sarà sostituita automaticamente. Anche, azioni come aggiungere fasi ad un cluster in esecuzione, controllare lo stato di esecuzione delle fasi, e inviare eventi e parametri CloudWatch saranno eliminate fino al ripristino della connettività.
Raccomandiamo di assicurarsi una connettività di rete affidabile e altamente disponibile fra il tuo Outpost e la Regione AWS. Se la connettività di rete fra il tuo Outpost e la relativa Regione AWS viene persa per più di alcune ore, i cluster con una protezione dalle interruzioni abilitata continueranno a funzionare e i cluster con una protezione dalle interruzioni disabilitata saranno terminati. Se la connettività di rete subirà danni a causa della manutenzione di routine, suggeriamo di abilitare proattivamente una protezione dalle interruzioni.
Utilizzo dei volumi EBS
D: Cosa consente di fare Amazon EMR che non fosse possibile già fare prima?
La maggior parte delle istanze 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:
- 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.
- Stai eseguendo una famiglia di istanze di una generazione precedente (ad esempio M1 e 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 e R3). Il team Amazon EMR consiglia di eseguire l'applicazione per giungere alla giusta conclusione.
- Vuoi utilizzare o eseguire la migrazione alla 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: È possibile collegare 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?
Puoi crittografare il dispositivo root EBS e i volumi di archiviazione utilizzando AWS KMS come provider principale. Per maggiori informazioni, consulta Crittografia su disco locale.
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.
Carichi di lavoro di EMR
D: Cos'è Apache Spark?
Apache SparkTM è un sistema di elaborazione open source distribuito, utilizzato in genere con i carichi di lavoro per i big data. Per query analitiche rapide, utilizza la cache in memoria e l'esecuzione ottimizzata delle query su dati di qualsiasi dimensione. Amazon EMR è il posto migliore per distribuire Apache Spark nel cloud, perché combina il rigore di integrazione e testing delle distribuzioni commerciali di Spark con la scalabilità, la semplicità e l'economicità del cloud. Consente di avviare i cluster Spark in pochi minuti senza dover eseguire il provisioning dei nodi, l'installazione dei cluster, la configurazione Spark o la regolazione dei cluster. EMR è dotato del runtime di Amazon EMR per Apache Spark, un ambiente di runtime con prestazioni ottimizzate per Apache Spark attivato per impostazione predefinita sui cluster Amazon EMR. Il runtime di Amazon EMR per Apache Spark può essere oltre 3 volte più veloce dei cluster senza il runtime EMR e ha una compatibilità API del 100% con Apache Spark standard. Ottieni ulteriori informazioni su Spark e Spark su Amazon EMR.
D: Cos’è Presto?
Presto è un motore di query SQL open source distribuito, progettato da zero per consentire di eseguire query analitiche veloci su dati di qualsiasi dimensione. Con Amazon EMR, è possibile avviare i cluster Presto in pochi minuti senza dover eseguire il provisioning dei nodi, l'installazione dei cluster, la configurazione di Presto o la regolazione dei cluster. EMR consente di eseguire il provisioning di una, centinaia o migliaia di istanze di calcolo in pochi minuti. Presto dispone di due progetti della community: PrestoDB e PrestoSQL. Amazon EMR supporta entrambi i progetti. Scopri di più su Presto e Presto su Amazon EMR.
Utilizzo di Hive
D: Cos'è Apache Hive?
Hive è un pacchetto open source di data warehouse e analisi che viene eseguito su 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. Per ulteriori informazioni su Apache Hadoop, fai clic qui.
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 entità. 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 la documentazione scritta disponibile in questa pagina.
D: Hive contiene nuove caratteristiche specifiche per Amazon EMR?
Sì. Consulta la nostra documentazione per ulteriori informazioni.
- Puoi avviare un cluster EMR con più nodi master per supportare l’alta disponibilità per Apache Hive. Amazon EMR esegue automaticamente il failover su un nodo master in standby in caso di errore del nodo master primario o di arresto anomalo di processi fondamentali come Resource Manager o Name Node. Ciò significa che puoi eseguire Apache Hive sui cluster EMR senza alcuna interruzione.
- Amazon EMR consente di definire il dimensionamento gestito EMR per i cluster Apache Hive in modo da ottimizzare l’uso delle tue risorse. Con lo scaling gestito EMR puoi ridimensionare automaticamente il cluster in modo da ottenere migliori prestazioni al costo più basso possibile. Con lo scaling gestito EMR puoi specificare i limiti di elaborazione minimo e massimo per i cluster e Amazon EMR li ridimensionerà automaticamente in modo da ottenere prestazioni e utilizzo delle risorse migliori. Inoltre, lo scaling campiona continuamente i parametri chiave associati ai carichi di lavoro in esecuzione sui cluster.
- Amazon EMR 6.0.0 offre il supporto per Hive LLAP, fornendo una velocità media delle prestazioni raddoppiata rispetto a EMR 5.29. Per ulteriori informazioni, fai clic qui.
- Amazon EMR garantisce inoltre prestazioni rapide anche su query Apache Hive complesse. Per impostazione predefinita, EMR utilizza Apache Tez, significativamente più veloce di Apache MapReduce. Apache MapReduce utilizza più fasi e una query Apache Hive complessa viene suddivisa in quattro o cinque processi. Apache Tez è progettato per query più complesse, pertanto quello stesso processo su Apache Tez viene eseguito in una sola fase, rendendo tutto molto più veloce che con Apache MapReduce.
- Con Amazon EMR, hai la possibilità di lasciare il metastore in locale o esternalizzarlo. EMR fornisce l’integrazione con il catalogo di dati di AWS Glue, Amazon Aurora, Amazon RDS e AWS Lake Formation. Amazon EMR può estrarre informazioni direttamente da Glue o Lake Formation per popolare il metastore.
- Puoi 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).
- Puoi scrivere i 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.
- Puoi accedere 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 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 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 relativa a Hive nella Release 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 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 sono supportate da Amazon EMR?
Per la versione più recente di Hive su Amazon EMR, fai riferimento alla documentazione.
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. Per ottimizzare l’utilizzo delle risorse puoi utilizzare lo scaling gestito EMR.
D: È possibile accedere a uno script o a una risorsa JAR che si trova nel file system locale?
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 in questa pagina.
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?
Al primo avvio, le AMI Amazon AMR per EMR si connettono ai repository yum Amazon Linux AMI per installare gli aggiornamenti di sicurezza. Quando si utilizza un'AMI personalizzata, è possibile disabilitare questa funzione, ma non è consigliabile per motivi di sicurezza.
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 Guida per sviluppatori.
Utilizzare Hudi
D: Cos'è Apache Hudi?
Apache Hudi è un framework di gestione dei dati open-source utilizzato per semplificare l’elaborazione incrementale dei dati e lo sviluppo della pipeline dei dati. Apache Hudi ti consente di gestire i dati a livello di record in Amazon S3 per semplificare l’acquisizione di Change Data Capture (CDC) e di dati di streaming e fornisce un framework per gestire i casi d’uso di privacy dei dati che richiedono aggiornamenti ed eliminazioni a livello di record. I set di dati gestiti da Apache Hudi sono archiviati in S3 tramite formati di storage aperti e integrazioni con Presto, Apache Hive, Apache Spark, mentre AWS Glue Data Catalog assicura l’accesso in tempo quasi reale ai dati aggiornati mediante strumenti familiari.
D: In quali casi è indicato utilizzare Apache Hudi?
Apache Hudi ti aiuta in casi d’uso che richiedono una gestione di dati a livello di record in S3. Ci sono cinque casi d’uso comuni che traggono vantaggio da queste capacità:
- La conformità con le leggi sulla privacy dei dati che richiedono che le aziende rimuovano i dati degli utenti o aggiornino le preferenze degli utenti quando questi ultimi scelgono di cambiare le loro preferenze su come vengono utilizzati i loro dati. Apache Hudi ti fornisce la capacità di effettuare operazioni di inserimento, aggiornamento ed eliminazione a livello di record sui tuoi dati archiviati in S3 utilizzando formati di dati open-source come Apache Parquet e Apache Avro.
- Consumare i flussi di dati in tempo reale e modificare i log di acquisizione dei dati per le modifiche dai sistemi aziendali. Molte aziende richiedono che i dati Enterprise Data Warehouses (EDW) e Operational Data Stores (ODS) siano disponibili in Amazon S3 per avere accesso ai motori SQL come Apache Hive e Presto per l’elaborazione e l’analisi dei dati. Apache Hudi semplifica l’applicazione dei log delle modifiche e fornisce agli utenti un accesso quasi in tempo reale ai dati.
- Reistituzione dei dati con arrivo ritardato o errati. I dati con arrivo ritardato o errati richiedono che i dati siano ripristinati e che i set di dati esistenti siano aggiornati per integrare record nuovi o aggiornati. Apache Hudi ti permette di effettuare un “upsert” dei record in un set di dati esistente affidandoti a un framework per inserire o aggiornare i record sulla base della loro presenza nel set di dati.
- Tracciare le modifiche ai set di dati e fornire la possibilità di rollback delle modifiche. Con Apache Hudi, ogni modifica a un set di dati viene accuratamente tracciata e può essere facilmente effettuato il rollback, permettendoti di trovare le modifiche specifiche a un set di dati ed eliminarle.
- Semplificazione della gestione dei file in S3. Per assicurarsi che i file di dati siano efficacemente dimensionati, i clienti devono costruire delle soluzioni personalizzate che monitorano e riscrivono molti piccoli file in file un po’ più grandi. Con Apache Hudi vengono gestiti i file di dati in S3 e gli utenti possono semplicemente configurare una dimensione dei file ottimale per archiviare i loro dati, quindi Hudi unirà i file per creare file efficacemente dimensionati.
- Scrittura dei delta in un set di dati Hudi di destinazione. I set di dati Hudi possono essere richiamati in maniera incrementale, il che significa che puoi ottenere TUTTE e SOLO le righe nuove e aggiornate da un momento specificato.
D: Come posso creare un set di dati Apache Hudi?
I set di dati Apache Hudi vengono creati con Apache Spark. Creare un set di dati è semplice come scrivere un DataFrame di Apache Spark. I metadati per i set di dati Apache Hudi possono essere archiviati in AWS Glue Data Catalog o nel metastore di Hive per semplificare la scoperta dei dati e per integrarli con Apache Hive e Presto.
D: In che modo Apache Hudi gestisce i set di dati?
Quando crei un set di dati con Apache Hudi, puoi scegliere per quale tipo di modello di accesso ai dati deve essere ottimizzato il set di dati. Per i casi d’uso ad alto indice di lettura, puoi scegliere la strategia di gestione dei dati "Copy on Write" per ottimizzare le letture frequenti dei set di dati. Questa strategia organizza i dati utilizzando i formati di archiviazione colonnari e unisce i dati esistenti e i nuovi aggiornamenti quando vengono scritti gli aggiornamenti. Per i carichi di lavoro ad alto indice di scrittura, Apache Hudi utilizza la strategia di gestione dati "Merge on Read" che organizza i dati utilizzando una combinazione di formati di archiviazione a colonne e righe, dove gli aggiornamenti vengono aggiunti a un file in formato di archiviazione basato su righe, mentre l'unione viene eseguita in leggere il tempo per fornire i risultati aggiornati.
D: Come posso scrivere su un set di dati Apache Hudi?
I set di dati Apache Hudi vengono modificati con Apache Spark. Con Apache Spark, i set di dati Apache Hudi vengono utilizzati tramite l’API Spark DataSource, che ti permette di leggere e scrivere i dati. Il DataFrame contenente i dati appena aggiunti o gli aggiornamenti ai dati esistenti può essere scritto utilizzando la stessa API DataSource. Puoi utilizzare anche l’utilità Hudi DeltaStreamer.
D: Come posso leggere un set di dati Apache Hudi?
Puoi leggere i dati utilizzando Apache Spark, Apache Hive, Presto, Amazon Redshift Spectrum o Amazon Athena. Quando crei un set di dati, hai l’opzione di pubblicare i metadati del set di dati in AWS Glue Data Catalog o nel metastore di Hive. Se scegli di pubblicare i metadati in un metastore, il tuo set di dati sembrerà una tabella normale e potrai effettuarvi delle query utilizzando Apache Hive e Presto.
D: Di quali considerazioni e limitazioni dovrei essere al corrente durante l’utilizzo di Apache Hudi?
Per una lista completa di considerazioni e limitazioni sull’utilizzo di Apache Hudi su Amazon EMR, consulta la documentazione di Amazon EMR.
D: Come funzionano i miei dati esistenti con Apache Hudi?
Se hai dei dati già esistenti che adesso vuoi gestire con Apache Hudi, puoi facilmente convertire i tuoi dati Apache Parquet ai set di dati Apache Hudi utilizzando un tool di importazione fornito con Apache Hudi su Amazon EMR, oppure puoi utilizzare l’utilità Hudi DeltaStreamer o Apache Spark per riscrivere i tuoi dati esistenti come un set di dati Apache Hudi.
Utilizzo di Impala
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.
- Puoi 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 set di dati 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 onerose 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 vedere 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 Guida per sviluppatori di Amazon EMR 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 necessarie 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, dovresti essere sicuro di assegnare risorse (memoria, disco e CPU) a ogni applicazione tramite YARN su Hadoop 2.x. Le risorse allocate dovrebbero dipendere dalle esigenze per i lavori che prevedi di eseguire in ogni 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.
Utilizzo di Pig
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 la documentazione scritta disponibile in questa pagina.
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. EMR ha esteso Pig, quindi qualsiasi processo 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) Caricamento di risorse da S3. EMR ha esteso Pig per cui gli script e i JAR personalizzati possono venire estratti dal file system S3, ad esempio "REGISTER s3:///my-bucket/piggybank.jar"
c) La funzione aggiuntiva Piggybank per l'elaborazione di parametri String e DateTime.
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 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.
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?
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?
Pig non supporta l'accesso tramite JDBC.
Utilizzo di HBase
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 e 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 Java Database Connectivity (JDBC). Per ulteriori informazioni su Apache HBase, fai clic qui.
D: HBase contiene nuove caratteristiche specifiche per Amazon EMR?
Con Amazon EMR, puoi utilizzare HBase su Amazon S3 per memorizzare i metadati e la directory root HBase di un cluster direttamente su Amazon S3 e creare repliche di lettura e snapshot. Per ulteriori informazioni, consulta la documentazione.
D: Quali versioni di HBase supporta Amazon EMR?
Le ultime versioni di HBase supportate su Amazon EMR sono riportate qui.
Kinesis Connector
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 occorreva 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 un semplice 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 origini?
Crea una tabella che faccia riferimento a un flusso Kinesis. Una volta creata, uniscila alle 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 dei 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 Dynamo DB.
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 dei 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?
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. Pertanto, 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 dei 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 siano 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 connettore Kinesis 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. Puoi trovare ulteriori dettagli sul debug di un processo EMR qui.
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.
Contratto sul livello di servizio (SLA)
D: Cos’è il Contratto sul livello di servizio di Amazon EMR?
Fai riferimento al Contratto sul livello di servizio (SLA).
D: Che cosa garantisce il contratto sul livello di servizio di Amazon EMR?
D: Cosa succede se non viene rispettato l’impegno in termini di servizio?
Nel caso in cui uno qualsiasi dei servizi Amazon EMR non rispetti l'impegno in termini di servizio, avrai diritto a un credito di assistenza.D: Come posso sapere se ho diritto a un credito di assistenza? Come posso richiederlo?
Per ricevere i crediti di assistenza, dovrai presentare un reclamo aprendo un caso in AWS Support Center. Per comprendere l'idoneità e il formato della richiesta, consulta https://aws.amazon.com/emr/sla/Ulteriori informazioni sui prezzi di Amazon EMR