Utilizzo di un database MySQL o Amazon Aurora esterno - Amazon EMR

Utilizzo di un database MySQL o Amazon Aurora esterno

Per utilizzare un database MySQL esterno o Amazon Aurora come metastore Hive, si sovrascrivono i valori di configurazione predefiniti per il metastore in Hive per specificare la posizione del database esterno, su un'istanza Amazon RDS MySQL o su un'istanza Amazon Aurora PostgreSQL.

Nota

Hive non supporta né impedisce l'accesso in scrittura simultaneo alle tabelle dei metastore. Se si condividono le informazioni del metastore tra due cluster, è necessario assicurarsi di non scrivere contemporaneamente sulla stessa tabella del metastore, a meno che non si scriva su partizioni diverse della stessa tabella del metastore.

La procedura seguente mostra come sovrascrivere i valori di configurazione predefiniti per la posizione del metastore Hive e avviare un cluster utilizzando la posizione del metastore riconfigurato.

Per creare un metastore situato al di fuori del cluster EMR
  1. Creare un database MySQL o Aurora. Se si utilizza PostgreSQL, è necessario configurarlo dopo aver eseguito il provisioning del cluster. Solo MySQL è supportato durante la creazione del cluster. Per informazioni sulle differenze tra Aurora MySQL e Aurora PostgreSQL, consulta Panoramica di Amazon Aurora MySQL e Utilizzo di Amazon Aurora PostgreSQL. Per informazioni generali su come creare un database Amazon RDS, consulta https://aws.amazon.com/rds/.

  2. Modificare i gruppi di sicurezza per autorizzare le connessioni JDBC tra il database e il gruppo di sicurezza ElasticMapReduce-Master. Per ulteriori informazioni su come modificare i gruppi di sicurezza per l'accesso, consulta Utilizzo dei gruppi di sicurezza gestiti da Amazon EMR.

  3. Impostare i valori di configurazione JDBC in hive-site.xml:

    Importante

    Se si forniscono informazioni sensibili, come password, all'API di configurazione di Amazon EMR, queste informazioni vengono visualizzate per gli account che dispongono di autorizzazioni sufficienti. Se si teme che queste informazioni possano essere visualizzate ad altri utenti, creare il cluster con un account amministrativo e limitare gli altri utenti (utenti IAM o con credenziali delegate) ad accedere ai servizi del cluster creando un ruolo che nega esplicitamente le autorizzazioni alla chiave API elasticmapreduce:DescribeCluster.

    1. Creare un file di configurazione denominato hiveConfiguration.json contenente modifiche apportate a hive-site.xml come mostrato nel seguente esempio.

      Sostituisci hostname (nome host) con l'indirizzo DNS dell'istanza Amazon RDS che esegue il database, e username (nome utente) e password con le credenziali per il database. Per ulteriori informazioni sulla connessione a istanze database MySQL e Aurora, consulta Connessione a un'istanza database che esegue il motore del database di MySQL e Connessione a un cluster Athena DB nella Guida per l'utente di Amazon RDS. javax.jdo.option.ConnectionURL è la stringa di connessione JDBC per un metastore JDBC. javax.jdo.option.ConnectionDriverName è il nome della classe del driver per un metastore JDBC.

      I driver MySQL JDBC sono installati da Amazon EMR.

      La proprietà value non può contenere spazi o ritorni a capo. Deve essere visualizzato tutto su una riga.

      [ { "Classification": "hive-site", "Properties": { "javax.jdo.option.ConnectionURL": "jdbc:mysql://hostname:3306/hive?createDatabaseIfNotExist=true", "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver", "javax.jdo.option.ConnectionUserName": "username", "javax.jdo.option.ConnectionPassword": "password" } } ]
    2. Fare riferimento al file hiveConfiguration.json quando si crea il cluster come illustrato nel seguente comando AWS CLI. In questo comando, il file è memorizzato in locale ed è anche possibile caricare il file da Amazon S3 e farvi riferimento, per esempio s3://DOC-EXAMPLE-BUCKET/hiveConfiguration.json.

      Nota

      I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuovili o sostituiscili con un accento circonflesso (^).

      aws emr create-cluster --release-label emr-5.36.1 --instance-type m5.xlarge --instance-count 2 \ --applications Name=Hive --configurations file://hiveConfiguration.json --use-default-roles
  4. Effettua la connessione al nodo primario del cluster.

    Per informazioni su come connettersi al nodo master, consulta la sezione Connect to the primary node using SSH (Connessione al nodo primario tramite SSH) nella Guida per la gestione di Amazon EMR.

  5. Crea le tabelle Hive specificando il percorso su Amazon S3 immettendo un comando simile al seguente:

    CREATE EXTERNAL TABLE IF NOT EXISTS table_name ( key int, value int ) LOCATION s3://DOC-EXAMPLE-BUCKET/hdfs/
  6. Aggiungere lo script Hive al cluster in esecuzione.

Il cluster Hive viene eseguito utilizzando il metastore situato in Amazon RDS. Avviare tutti i cluster Hive aggiuntivi che condividono questo metastore specificando la posizione del metastore.