Spécificités de l'application Hive pour les AMI versions antérieures d'Amazon EMR - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Spécificités de l'application Hive pour les AMI versions antérieures d'Amazon EMR

Les fichiers journaux

Avec EMR AMI les versions 2.x et 3.x d'Amazon, les journaux Hive sont enregistrés dans. /mnt/var/log/apps/ La version de Hive que vous exécutez détermine le nom du fichier journal, comme illustré dans le tableau suivant. Cela permet de prendre en charge les versions simultanées de Hive.

Version de Hive Nom du fichier journal
0.13.1 hive.log
Note

À partir de cette version, Amazon EMR utilise un nom de fichier non versionné,. hive.log Les versions mineures partagent le même emplacement du journal que la version majeure.

0.11.0 hive_0110.log
Note

Les versions mineures de Hive 0.11.0, par exemple 0.11.0.1, partagent le même emplacement du fichier journal que Hive 0.11.0.

0.8.1 hive_081.log
Note

Les versions mineures de Hive 0.8.1, par exemple Hive 0.8.1.1, partagent le même emplacement du fichier journal que Hive 0.8.1.

0.7.1 hive_07_1.log
Note

Les versions mineures de Hive 0.7.1, par exemple Hive 0.7.1.3 et Hive 0.7.1.4, partagent le même emplacement du fichier journal que Hive 0.7.1.

0.7 hive_07.log
0.5 hive_05.log
0.4 hive.log

Fonctionnalité de format d'entrée avec fractionnement

Pour implémenter la fonctionnalité de saisie partagée à l'aide des versions de Hive antérieures à 0.13.1 (EMRAMIversions Amazon antérieures à 3.11.0), utilisez ce qui suit :

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

Cette fonctionnalité est devenue obsolète avec Hive 0.13.1. Pour bénéficier de la même fonctionnalité de format d'entrée fractionné dans Amazon EMR AMI version 3.11.0, utilisez ce qui suit :

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

Ports de service Thrift

Thrift est un RPC framework qui définit un format de sérialisation binaire compact utilisé pour conserver les structures de données en vue d'une analyse ultérieure. Généralement, Hive configure le serveur pour qu'il fonctionne sur les ports suivants.

Version de Hive Numéro de port
Hive 0.13.1 10 000
Hive 0.11.0 10004
Hive 0.8.1 10003
Hive 0.7.1 10002
Hive 0.7 10001
Hive 0.5 10 000

Pour plus d'informations sur les services thrift, consultez http://wiki.apache.org/thrift/.

Utilisation de Hive pour récupérer des partitions

Amazon EMR inclut une instruction dans le langage de requête Hive qui permet de récupérer les partitions d'une table à partir des données d'une table situées dans Amazon S3. L'exemple suivant en est une illustration.

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;

Les données et les répertoires de la partition doit être à l'emplacement spécifié dans la définition de table et doivent être nommées selon la convention Hive : par exemple, dt=2009-01-01.

Note

Après Hive 0.13.1, cette fonctionnalité est prise en charge en mode natif à l'aide de msck repair table et par conséquent la prise en charge de recover partitions n'est plus assurée. Pour plus d'informations, consultez https://cwiki.apache. org/confluence/display/Hive/LanguageManual+DDL.

Transmission d'une variable Hive à un script

Pour passer une variable dans une étape Hive à l'aide de AWS CLI, tapez la commande suivante, remplacez myKey avec le nom de votre paire de EC2 clés, et remplacez amzn-s3-demo-bucket avec le nom de votre compartiment. Dans cet exemple, SAMPLE est une valeur de variable précédée par le commutateur -d. Cette variable est définie dans le script Hive comme suit : ${SAMPLE}.

Note

Les caractères de continuation de ligne Linux (\) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).

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://amzn-s3-demo-bucket/hive-ads/output/,\ -d,SAMPLE=s3://elasticmapreduce/samples/hive-ads/]

Spécification d'un emplacement de metastore externe

La procédure suivante vous montre comment remplacer les valeurs de configuration par défaut pour l'emplacement du metastore Hive et démarrer un cluster en utilisant l'emplacement du metastore reconfiguré.

Pour créer un métastore situé en dehors du cluster EMR
  1. Créez une base de données My SQL ou Aurora à l'aide d'AmazonRDS.

    Pour plus d'informations sur la création d'une RDS base de données Amazon, consultez Getting started with Amazon RDS.

  2. Modifiez vos groupes de sécurité pour autoriser JDBC les connexions entre votre base de données et le groupe de sécurité ElasticMapReduce-Master.

    Pour plus d'informations sur la façon de modifier vos groupes de sécurité pour l'accès, consultez la section Groupes RDS de sécurité Amazon dans le guide de RDS l'utilisateur Amazon.

  3. Définissez les valeurs JDBC de configuration dans hive-site.xml :

    1. Créez un fichier de configuration hive-site.xml contenant les éléments suivants :

      <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 est l'DNSadresse de l'RDSinstance Amazon qui exécute la base de données. username and password sont les informations d'identification de votre base de données. Pour plus d'informations sur la connexion aux instances de base de données My SQL et Aurora, consultez les sections Connexion à une instance de base de données exécutant le moteur de SQL base de données My et Connexion à un cluster de base de données Aurora dans le guide de RDS l'utilisateur Amazon.

      Les JDBC pilotes sont installés par AmazonEMR.

      Note

      La propriété value ne doit pas contenir d'espaces ni de retours chariot. Elle doit figurer entièrement sur une seule ligne.

    2. Enregistrez votre fichier hive-site.xml dans un emplacement sur Amazon S3, tel que s3://amzn-s3-demo-bucket/hive-site.xml.

  4. Créez un cluster, en spécifiant l'emplacement Amazon S3 du fichier hive-site.xml personnalisé.

    L'exemple de commande suivant illustre une AWS CLI commande qui effectue cette opération.

    Note

    Les caractères de continuation de ligne Linux (\) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).

    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://amzn-s3-demo-bucket/hive-site.xml","--hive-versions","latest"]

Connect to Hive en utilisant JDBC

Pour vous connecter à Hive viaJDBC, vous devez télécharger le JDBC pilote et installer un SQL client. L'exemple suivant montre comment utiliser SQL Workbench/J pour se connecter à Hive en utilisant. JDBC

Pour télécharger des JDBC pilotes
  1. Téléchargez et extrayez les pilotes correspondant aux versions de Hive auxquelles vous souhaitez accéder. La version Hive varie en fonction de celle AMI que vous choisissez lorsque vous créez un EMR cluster Amazon.

  2. Installez SQL Workbench/J. Pour plus d'informations, voir Installation et démarrage de SQL Workbench/J dans le manuel d'utilisation du SQL manuel Workbench/J.

  3. Créez un SSH tunnel vers le nœud principal du cluster. Le port de connexion diffère en fonction de la version de Hive. Des exemples de commandes sont fournis dans les tableaux ci-dessous pour les ssh utilisateurs de Linux et des TTY commandes Pu pour les utilisateurs de Windows.

    SSHCommandes Linux
    Version de Hive Command
    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
    Paramètres du TTY tunnel Windows Pu
    Version de Hive Paramètres de tunnel
    0.13.1 Port source : 10000 Destination : master-public-dns-name:10000
    0.11.0 Port source : 10004 Destination : master-public-dns-name:10004
    0.8.1 Port source : 10003 Destination : master-public-dns-name:10003
  4. Ajoutez le JDBC pilote à SQL Workbench.

    1. Dans la boîte de dialogue Select Connection Profile (Sélectionner le profil de connexion), sélectionnez Manage Drivers (Gérer les pilotes).

    2. Sélectionnez l'icône Create a new entry (Créer une nouvelle saisie) (page blanche).

    3. Dans le champ Name (Nom), saisissez Hive JDBC.

    4. Pour Bibliothèque, cliquez sur l'icône Sélectionner le ou les JAR fichiers.

    5. Sélectionnez JAR les fichiers comme indiqué dans le tableau suivant.

      Version du pilote Hive JARfichiers à ajouter
      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. Dans la boîte de dialogue Please select one driver (Veuillez sélectionner un pilote), sélectionnez un pilote en vous conformant au tableau suivant, puis cliquez sur OK.

      Version de Hive Nom de classe du pilote
      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. Lorsque vous revenez à la boîte de dialogue Sélectionner le profil de connexion, vérifiez que le champ Driver est défini sur Hive JDBC et saisissez la chaîne de JDBC connexion dans le URLchamp conformément au tableau suivant.

    Version de Hive JDBCchaîne de connexion
    0.13.1 jdbc:hive2://localhost:10000/default
    0.11.0 jdbc:hive://localhost:10004/default
    0.8.1 jdbc:hive://localhost:10003/default

    Si votre cluster utilise AMI la version 3.3.1 ou ultérieure, dans la boîte de dialogue Sélectionner le profil de connexion, saisissez hadoop le champ Nom d'utilisateur.