Utilizzo di Presto con AWS Glue Data Catalog - Amazon EMR

Utilizzo di Presto con AWS Glue Data Catalog

Utilizzando il rilascio di Amazon EMR versione 5.10.0 e successive, puoi specificare AWS Glue Data Catalog come metastore Hive predefinito per Presto. Si consiglia questa configurazione quando si richiede un metastore persistente o un metastore condiviso da diversi cluster, servizi e applicazioni o Account AWS.

AWS Glue è un servizio di estrazione, trasformazione e caricamento (ETL) completamente gestito che consente di catalogare, filtrare e migliorare la qualità dei dati in modo semplice e conveniente, oltre a trasferirli in modo sicuro tra datastore. AWS Glue Data Catalog offre un repository di metadati unificato per varie origini dati e formati di dati, integrandosi con Amazon EMR così come con Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena e qualsiasi applicazione compatibile con il metastore Apache Hive. AWS I crawler di Glue possono dedurre automaticamente lo schema dai dati di origine in Amazon S3 e archiviare i metadati associati nel Data Catalog. Per ulteriori informazioni sul Data Catalog, consulta la sezione relativa al Popolamento di AWS Glue Data Catalog nella Guida per gli sviluppatori di AWS Glue.

AWS Glue è soggetto a costi separati. Viene applicata una tariffa mensile per l'archiviazione e l'accesso ai metadati nel Data Catalog, una tariffa oraria fatturata al minuto per i processi ETL di AWS Glue e per il runtime del crawler e, infine, una tariffa oraria fatturata al minuto per ciascun endpoint di sviluppo di cui è stato effettuato il provisioning. Il Data Catalog consente di archiviare fino a un milione di oggetti senza costi aggiuntivi. Se intendi archiviare più di un milione di oggetti, ti verrà addebitato 1 USD per ogni 100.000 oggetti oltre il milione. Un oggetto nel Data Catalog può essere una tabella, una partizione o un database. Per ulteriori informazioni, consulta Prezzi di Glue.

Importante

Se hai creato tabelle utilizzando Amazon Athena o Amazon Redshift Spectrum prima del 14 agosto 2017, i database e le tabelle sono archiviati in un catalogo gestito da Athena, che è separato da AWS Glue Data Catalog. Per integrare Amazon EMR con queste tabelle, dovrai eseguire l'aggiornamento a AWS Glue Data Catalog. Per ulteriori informazioni, consulta Aggiornamento a AWS Glue Data Catalog nella Guida per l'utente di Amazon Athena.

Specifica di AWS Glue Data Catalog come metastore

È possibile specificare AWS Glue Data Catalog come metastore utilizzando la AWS Management Console, la AWS CLI o l'API di Amazon EMR. Quando si utilizza la CLI o l'API, è possibile utilizzare la classificazione di configurazione per Presto per specificare un Data Catalog. Inoltre, con Amazon EMR 5.16.0 e versioni successive, è possibile utilizzare la classificazione di configurazione per specificare un Catalogo di dati in un Account AWS diverso. Quando utilizzi la console, puoi specificare il Data Catalog utilizzando Advanced Options (Opzioni avanzate) o Quick Options (Opzioni rapide).

New console
Specifica di AWS Glue Data Catalog come metastore Hive con la nuova console
  1. Accedi alla AWS Management Console e apri la console Amazon EMR all'indirizzo https://console.aws.amazon.com/emr.

  2. In EMR on EC2 (EMR su EC2), nel riquadro di navigazione a sinistra, scegli Clusters (Cluster) e seleziona Create cluster (Crea cluster).

  3. In Application bundle (Bundle di applicazioni), scegli Presto.

  4. In Impostazioni del Catalogo dati AWS Glue, seleziona la casella di controllo Utilizza per i metadati delle tabelle Presto.

  5. Scegli qualsiasi altra opzione applicabile al cluster.

  6. Per avviare il cluster, scegli Create cluster (Crea cluster).

Old console
Specifica di AWS Glue Data Catalog come metastore Presto predefinito con la vecchia console
  1. Passa alla nuova console Amazon EMR e seleziona Passa alla vecchia console dalla barra di navigazione laterale. Per ulteriori informazioni su cosa aspettarti quando passi alla vecchia console, consulta Utilizzo della vecchia console.

  2. Seleziona Create cluster (Crea cluster), Go to advanced options (Vai alle opzioni avanzate).

  3. In Software Configuration (Configurazione software) scegliere una Release (Rilascio) di emr-5.10-0 o versione successiva e selezionare Presto.

  4. Selezionare Use for Presto table metadata (Utilizza per i metadati delle tabelle Presto), scegliere Next (Successivo), quindi completare altre impostazioni per il cluster come appropriato per l'applicazione.

CLI
Specifica di AWS Glue Data Catalog come metastore Hive di default con la AWS CLI

Per esempi su come specificare le seguenti classificazioni di configurazione al momento della creazione di un cluster, consulta Configurazione delle applicazioni.

Amazon EMR 5.16.0 e versioni successive

  • Imposta la proprietà hive.metastore su glue, come mostrato nell'esempio JSON seguente.

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore": "glue" } } ]

    Per specificare un Catalogo di dati in un Account AWS differente, aggiungi la proprietà hive.metastore.glue.catalogid come illustrato nel seguente esempio JSON. Sostituisci acct-id con l'account AWS di Data Catalog. Non puoi utilizzare un Catalogo di dati in un altro Account AWS se utilizzi Amazon EMR versione 5.15.0 e precedenti.

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore": "glue", "hive.metastore.glue.catalogid": "acct-id" } } ]

    Amazon EMR 5.10.0 fino a 5.15.0

    Impostare la proprietà hive.metastore.glue.datacatalog.enabled su true, come mostrato nell'esempio JSON seguente:

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore.glue.datacatalog.enabled": "true" } } ]

    Amazon EMR 6.1.0 e versioni successive utilizzando PrestoSQL (Trino)

    A partire da EMR versione 6.1.0, PrestoSQL supporta anche Glue come metastore Hive predefinito. Utilizza la classificazione della configurazione prestosql-connector-hive e imposta la proprietà hive.metastore su glue come mostrato nel seguente esempio di JSON.

    Amazon EMR versione 6.4.0 e successive utilizza il nuovo nome Trino anziché PrestoSQL. Se usi Trino, sostituisci prestosql-connector-hive nella seguente classificazione di configurazione con trino-connector-hive.

    [ { "Classification": "prestosql-connector-hive", "Properties": { "hive.metastore": "glue" } } ]

Per cambiare metastore di un cluster di lunga esecuzione, è possibile impostare manualmente questi valori come appropriati per la tua versione di release collegandoti al nodo master, modificando i valori di proprietà direttamente nel file /etc/presto/conf/catalog/hive.properties e riavviando il server Presto (sudo restart presto-server). Se utilizzi questo metodo con Amazon EMR 5.15.0 e versioni precedenti, assicurati che hive.table-statistics-enabled sia impostato su false. Questa impostazione non è necessaria quando si usano le versioni della release 5.16.0 e successive; tuttavia, le statistiche di tabella e di partizione non sono supportate.

Autorizzazioni IAM

Il profilo dell'istanza EC2 per un cluster deve disporre di autorizzazioni IAM per le operazioni AWS Glue. Inoltre, se abiliti la crittografia per oggetti AWS Glue Data Catalog, al ruolo deve essere consentito anche crittografare, decrittare e generare la AWS KMS key utilizzata per la crittografia dei dati.

Autorizzazioni per operazioni AWS Glue

Se utilizzi il profilo dell'istanza EC2 di default per Amazon EMR, non è richiesta alcuna operazione. La policy gestita AmazonElasticMapReduceforEC2Role collegata al EMR_EC2_DefaultRole consente tutte le operazioni AWS Glue necessarie. Tuttavia, se specifichi autorizzazioni e un profilo dell'istanza EC2 personalizzati, devi configurare le operazioni AWS Glue appropriate. Utilizza la policy AmazonElasticMapReduceforEC2Role gestita come punto di partenza. Per ulteriori informazioni, consulta Ruolo di servizio per le istanze EC2 del cluster (profilo dell'istanza EC2) nella Guida alla gestione di Amazon EMR.

Autorizzazioni per crittografare e decrittografare AWS Glue Data Catalog

Il tuo profilo dell'istanza ha bisogno dell'autorizzazione per crittografare e decrittare i dati utilizzando la tua chiave. Non è necessario configurare queste autorizzazioni se si applicano entrambe le seguenti istruzioni:

  • Per abilitare la crittografia per oggetti AWS Glue Data Catalog utilizzare chiavi gestite per AWS Glue.

  • Si utilizza un cluster che è nello stesso Account AWS come il AWS Glue Data Catalog.

In caso contrario, devi aggiungere la istruzione seguente alla policy delle autorizzazioni collegata al profilo dell'istanza EC2.

[ { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:acct-id:key/12345678-1234-1234-1234-123456789012" } ] } ]

Per ulteriori informazioni sulla crittografia di AWS Glue Data Catalog, consulta la sezione Crittografia del proprio Data Catalog nella Guida per gli sviluppatori di AWS Glue.

Autorizzazioni basate su risorse

Se utilizzi AWS Glue in combinazione con Hive, Spark o Presto in Amazon EMR, AWS Glue supporta policy basate su risorse per controllare l'accesso alle risorse del Data Catalog. Queste risorse includono tabelle, database, connessioni e funzioni definite dall'utente. Per ulteriori informazioni, consulta Policy sulle risorse AWS Glue nella Guida per gli sviluppatori di AWS Glue.

Quando utilizzi policy basate su risorse per limitare l'accesso ad AWS Glue da Amazon EMR, l'entità principale specificata nella policy delle autorizzazioni deve essere il ruolo ARN associato al profilo di istanza EC2 specificato al momento della creazione di un cluster. Ad esempio, per una policy basata sulle risorse collegata a un catalogo, è possibile specificare il ruolo ARN per il ruolo di servizio predefinito per le istanze del cluster EC2, EMR_EC2_DefaultRole, come Principal utilizzando il formato mostrato nell'esempio seguente:

arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole

L'acct-id può essere diverso dall'ID dell'account AWS Glue. Ciò consente l'accesso da cluster EMR in account diversi. Puoi specificare più entità principali, ognuna da un account diverso.

Considerazioni sull'utilizzo di AWS Glue Data Catalog

Considera i seguenti elementi durante l'utilizzo di AWS Glue Data Catalog come metastore con Presto:

  • La ridenominazione delle tabelle in AWS Glue non è supportata.

  • Quando si crea una tabella Hive senza specificare una LOCATION, i dati nella tabella vengono archiviati nella posizione specificata dalla proprietà hive.metastore.warehouse.dir. Per impostazione predefinita, questa è una posizione in HDFS. Se un altro cluster necessita di accedere alla tabella, non ci riuscirà a meno che non disponga di autorizzazioni adeguate per il cluster che ha creato la tabella. Inoltre, poiché l'archiviazione HDFS è transitoria, se il cluster viene terminato, i dati della tabella vanno persi e la tabella deve essere ricreata. Ti consigliamo di specificare una LOCATION in Amazon S3 quando crei una tabella Hive utilizzando AWS Glue. In alternativa, puoi utilizzare la classificazione di configurazione hive-site per specificare una posizione in Amazon S3 per hive.metastore.warehouse.dir, che si applica a tutte le tabelle Hive. Se una tabella viene creata in una posizione HDFS e il cluster che l'ha creata è ancora in esecuzione, puoi aggiornare la posizione della tabella ad Amazon S3 in AWS Glue. Per ulteriori informazioni, consulta Utilizzo di tabelle sulla console AWS Glue nella Guida per gli sviluppatori di AWS Glue.

  • I valori delle partizioni contenenti virgolette e apostrofi non sono supportati, ad esempio PARTITION (owner="Doe's")..

  • Le statistiche di colonna sono supportate per emr-5.31.0 e versioni successive.

  • L'utilizzo dell'autorizzazione Hive non è supportato. In alternativa, puoi prendere in considerazione l'utilizzo di Policy basate sulle risorse AWS Glue. Per ulteriori informazioni, consulta Utilizzo delle policy basate sulle risorse per l'accesso di Amazon EMR a AWS Glue Data Catalog.