Specifiche dell'applicazione Hive per versioni AMI di Amazon EMR precedenti - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Specifiche dell'applicazione Hive per versioni AMI di Amazon EMR precedenti

File di log

Con le versioni AMI 2.x e 3.x di Amazon EMR, i log Hive sono salvati in /mnt/var/log/apps/. Per supportare versioni Hive simultanee, la versione di Hive che esegui determina il nome di file di log, come illustrato nella seguente tabella.

Versione di Hive Nome del file di log
0.13.1 hive.log
Nota

A partire da questa versione, Amazon EMR utilizza un nome di file senza versione, ossia hive.log. Le versioni minori condividono la stessa posizione di log della versione principale.

0.11.0 hive_0110.log
Nota

Le versioni minori di Hive 0.11.0, ad esempio 0.11.0.1, condividono la stessa posizione di file di log di Hive 0.11.0.

0.8.1 hive_081.log
Nota

Le versioni minori di Hive 0.8.1, ad esempio Hive 0.8.1.1, condividono la stessa posizione di file di log di Hive 0.8.1.

0.7.1 hive_07_1.log
Nota

Le versioni minori di Hive 0.7.1, ad esempio Hive 0.7.1.3 e Hive 0.7.1.4, condividono la stessa posizione di file di log di Hive 0.7.1.

0.7 hive_07.log
0,5 hive_05.log
0.4 hive.log

Funzionalità di input con suddivisione

Per implementare la funzionalità di input con suddivisione utilizzando le versioni Hive precedenti alla versione 0.13.1 (versioni AMI di Amazon EMR antecedenti alla versione 3.11.0), utilizza quanto segue:

hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveCombineSplitsInputFormat; hive> set mapred.min.split.size=100000000;

Questa funzionalità è stata deprecata a partire dalla versione di Hive 0.13.1. Per utilizzare la stessa funzionalità di input con suddivisione nella versione AMI 3.11.0 di Amazon EMR, utilizza quanto segue:

set hive.hadoop.supports.splittable.combineinputformat=true;

Porte dei servizi Thrift

Thrift è un framework RPC che definisce un formato di serializzazione binario compatto utilizzato per conservare le strutture di dati per analisi successive. In genere, Hive configura il server per il funzionamento sulle porte seguenti.

Versione di Hive Numero della porta
Hive 0.13.1 10000
Hive 0.11.0 10004
Hive 0.8.1 10003
Hive 0.7.1 10002
Hive 0.7 10001
Hive 0.5 10000

Per ulteriori informazioni sui servizi Thrift, consulta http://wiki.apache.org/thrift/.

Utilizzo di Hive per il recupero di partizioni

Amazon EMR include un'istruzione nel linguaggio di query Hive che consente di recuperare le partizioni di una tabella dai dati di tabella in Amazon S3. L'esempio seguente ne è un'illustrazione.

CREATE EXTERNAL TABLE (json string) raw_impression PARTITIONED BY (dt string) LOCATION 's3://elastic-mapreduce/samples/hive-ads/tables/impressions'; ALTER TABLE logs RECOVER PARTITIONS;

Le directory e i dati delle partizioni devono trovarsi nella posizione specificata nella definizione di tabella e devono essere denominati in base alla convenzione Hive, ad esempio, dt=2009-01-01.

Nota

Dopo Hive 0.13.1, questa funzionalità è supportata in modo nativo mediante msck repair table e di conseguenza il supporto di recover partitions non è più fornito. Per ulteriori informazioni, consulta https://cwiki.apache.org/confluence/display/Hive/ +DDL. LanguageManual

Passaggio di una variabile Hive a uno script

Per passare una variabile in un passaggio Hive utilizzando il AWS CLI, digita il seguente comando, sostituisci myKey con il nome della tua coppia di chiavi EC2 e sostituisci mybucket con il nome del tuo bucket. In questo esempio, SAMPLE è un valore di variabile preceduto dal parametro -d. Questa variabile è definita nello script Hive come: ${SAMPLE}.

Nota

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

aws emr create-cluster --name "Test cluster" --ami-version 3.9 \ --applications Name=Hue Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-type m3.xlarge --instance-count 3 \ --steps Type=Hive,Name="Hive Program",ActionOnFailure=CONTINUE,\ Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/response-time-stats.q,-d,\ INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://mybucket/hive-ads/output/,\ -d,SAMPLE=s3://elasticmapreduce/samples/hive-ads/]

Configurazione della posizione di un metastore esterno

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. Crea un database MySQL o Aurora utilizzando Amazon RDS.

    Per informazioni su come creare un database Amazon RDS, consulta Nozioni di base su Amazon RDS.

  2. Modifica i tuoi gruppi di sicurezza per consentire le connessioni JDBC tra il tuo database e il gruppo di sicurezza -Master. ElasticMapReduce

    Per ulteriori informazioni su come modificare i gruppi di sicurezza per l'accesso, consulta la sezione relativa ai Gruppi di sicurezza Amazon RDS nella Guida per l'utente di Amazon RDS.

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

    1. Creare un file di configurazione hive-site.xml contenente quanto segue:

      <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mariadb://hostname:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>Username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password</value> <description>Password to use against metastore database</description> </property> </configuration>

      hostname è l'indirizzo DNS dell'istanza Amazon RDS che esegue il database. username e password sono le credenziali per il database. Per ulteriori informazioni sulla connessione a istanze database MySQL e Aurora, consulta l'argomento relativo alla Connessione a un'istanza database che esegue il motore del database di MySQL e alla Connessione a un cluster di database Aurora nella Guida per l'utente di Amazon RDS.

      I driver JDBC sono installati da Amazon EMR.

      Nota

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

    2. Salvare il file hive-site.xml in un percorso su Amazon S3, ad esempio s3://mybucket/hive-site.xml.

  4. Crea un cluster, specificando il percorso in Amazon S3 del file hive-site.xml personalizzato.

    Il comando di esempio seguente illustra un AWS CLI comando che esegue questa operazione.

    Nota

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

    aws emr create-cluster --name "Test cluster" --ami-version 3.10 \ --applications Name=Hue Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-type m3.xlarge --instance-count 3 \ --bootstrap-actions Name="Install Hive Site Configuration",\ Path="s3://region.elasticmapreduce/libs/hive/hive-script",\ Args=["--base-path","s3://elasticmapreduce/libs/hive","--install-hive-site",\ "--hive-site=s3://mybucket/hive-site.xml","--hive-versions","latest"]

Connessione ad Hive mediante JDBC

Per eseguire la connessione a Hive mediante JDBC devi scaricare il driver JDBC e installare un client SQL. L'esempio seguente illustra l'utilizzo di SQL Workbench/J per la connessione a Hive mediante JDBC.

Per scaricare i driver JDBC
  1. Scaricare ed estrarre i driver appropriati nelle versioni di Hive a cui si desidera accedere. La versione di Hive differisce a seconda dell'AMI scelta alla creazione di un cluster Amazon EMR.

  2. Installare SQL Workbench/J. Per ulteriori informazioni, consulta la pagina relativa all'installazione e all'avvio di SQL Workbench/J nella guida per l'utente di SQL Workbench/J.

  3. Creare un tunnel SSH per il nodo master del cluster. La porta per la connessione è differente a seconda della versione di Hive. Gli esempi forniti nelle tabelle esposte di seguito sono relativi ai comandi ssh di Linux e ai comandi PuTTY di Windows.

    Comandi SSH Linux
    Versione di Hive Comando
    0.13.1 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10000:localhost:10000 hadoop@master-public-dns-name
    0.11.0 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10004:localhost:10004 hadoop@master-public-dns-name
    0.8.1 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10003:localhost:10003 hadoop@master-public-dns-name
    0.7.1 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10002:localhost:10002 hadoop@master-public-dns-name
    0.7 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10001:localhost:10001 hadoop@master-public-dns-name
    0,5 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10000:localhost:10000 hadoop@master-public-dns-name
    Impostazioni del tunnel PuTTY (Windows)
    Versione di Hive Impostazione tunnel
    0.13.1 Porta di origine: 10000 Destinazione master-public-dns-name:10000
    0.11.0 Porta di origine: 10004 Destinazione :10004 master-public-dns-name
    0.8.1 Porta di origine: 10003 Destinazione :10003 master-public-dns-name
  4. Aggiungere il driver JDBC a SQL Workbench.

    1. Nella finestra di dialogo Select Connection Profile (Seleziona profilo di connessione), scegliere Manage Drivers (Gestisci driver).

    2. Scegliere l'icona Create a new entry (Crea nuova voce) (pagina bianca).

    3. Nel campo Nome digitare Hive JDBC.

    4. Per Library (Libreria), fare clic sull'icona Select the JAR file(s) (Seleziona file JAR).

    5. Selezionare i file JAR come illustrato nella tabella seguente.

      Versione driver Hive File JAR da aggiungere
      0.13.1
      hive_metastore.jar hive_service.jar HiveJDBC3.jar libfb303-0.9.0.jar libthrift-0.9.0.jar log4j-1.2.14.jar ql.jar slf4j-api-1.5.8.jar slf4j-log4j12-1.5.8.jar TCLIServiceClient.jar
      0.11.0
      hadoop-core-1.0.3.jar hive-exec-0.11.0.jar hive-jdbc-0.11.0.jar hive-metastore-0.11.0.jar hive-service-0.11.0.jar libfb303-0.9.0.jar commons-logging-1.0.4.jar slf4j-api-1.6.1.jar
      0.8.1
      hadoop-core-0.20.205.jar hive-exec-0.8.1.jar hive-jdbc-0.8.1.jar hive-metastore-0.8.1.jar hive-service-0.8.1.jar libfb303-0.7.0.jar libthrift-0.7.0.jar log4j-1.2.15.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
      0.7.1
      hadoop-0.20-core.jar hive-exec-0.7.1.jar hive-jdbc-0.7.1.jar hive-metastore-0.7.1.jar hive-service-0.7.1.jar libfb303.jar commons-logging-1.0.4.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
      0.7
      hadoop-0.20-core.jar hive-exec-0.7.0.jar hive-jdbc-0.7.0.jar hive-metastore-0.7.0.jar hive-service-0.7.0.jar libfb303.jar commons-logging-1.0.4.jar slf4j-api-1.5.6.jar slf4j-log4j12-1.5.6.jar
      0,5
      hadoop-0.20-core.jar hive-exec-0.5.0.jar hive-jdbc-0.5.0.jar hive-metastore-0.5.0.jar hive-service-0.5.0.jar libfb303.jar log4j-1.2.15.jar commons-logging-1.0.4.jar
    6. Nella finestra di dialogo Please select one driver (Selezionare un driver), selezionare un driver in base alla tabella riportata di seguito e fare clic su OK.

      Versione di Hive Nome di classe del driver
      0.13.1
      com.amazon.hive.jdbc3.HS2Driver
      0.11.0
      org.apache.hadoop.hive.jdbc.HiveDriver.jar
      0.8.1
      org.apache.hadoop.hive.jdbc.HiveDriver.jar
      0.7.1
      org.apache.hadoop.hive.jdbc.HiveDriver.jar
      0.7
      org.apache.hadoop.hive.jdbc.HiveDriver.jar
      0,5
      org.apache.hadoop.hive.jdbc.HiveDriver.jar
  5. Quando ritorni alla finestra di dialogo Select Connection Profile (Seleziona profilo di connessione), verifica che il campo Driver sia impostato su Hive JDBC (JDBC Hive) e fornisci la stringa di connessione JDBC nel campo URL in base alla tabella seguente.

    Versione di Hive Stringa di connessione JDBC
    0.13.1 jdbc:hive2://localhost:10000/default
    0.11.0 jdbc:hive://localhost:10004/default
    0.8.1 jdbc:hive://localhost:10003/default

    Se il cluster utilizza AMI versione 3.3.1 o successiva, nella finestra di dialogo Select Connection Profile (Seleziona profilo di connessione), digitare hadoop nel campo Username (Nome utente).