Caractéristiques de l'application Hive pour les versions AMI 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.

Caractéristiques de l'application Hive pour les versions AMI antérieures d'Amazon EMR

Les fichiers journaux

Lorsque vous utilisez les versions AMI 2.x et 3.x d'Amazon EMR, les fichiers 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

A 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 format d'entrée avec fractionnement à l'aide des versions de Hive antérieures à 0.13.1 (versions AMI d'Amazon EMR antérieures à 3.11.0), utilisez les commandes suivantes :

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 profiter de la même fonctionnalité de format d'entrée avec fractionnement dans la version 3.11.0 AMI Amazon EMR, procédez comme suit :

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

Ports de service Thrift

Thrift est une infrastructure RPC qui définit un format de sérialisation binaire compact utilisé pour conserver les structures de données afin de les analyser ultérieurement. 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 du langage de requête Hive qui récupère les partitions d'une table depuis des données de 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 transmettre une variable à une étape Hive à l'aide de AWS CLI, tapez la commande suivante, myKey remplacez-la par le nom de votre paire de EC2 clés et remplacez-la par le nom amzn-s3-demo-bucket de votre bucket. 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 metastore situé en dehors du cluster EMR
  1. Créez une base de données MySQL ou Aurora à l'aide d'Amazon RDS.

    Pour plus d'informations sur la façon de créer une base de données Amazon RDS, consultez Mise en route sur Amazon RDS.

  2. Modifiez vos groupes de sécurité pour autoriser les connexions JDBC 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 Groupes de sécurité Amazon RDS dans le Guide de l'utilisateur Amazon RDS.

  3. Définissez les valeurs de configuration JDBC 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>

      hostnameest l'adresse DNS de l'instance Amazon RDS qui exécute la base de données. usernameet password sont les informations d'identification de votre base de données. Pour plus d'informations sur la connexion aux instances de bases de données MySQL et Aurora, consultez les sections Connexion à une instance de base de données exécutant le moteur de base de données MySQL et Connexion à un cluster de bases de données Aurora dans le Guide de l'utilisateur Amazon RDS.

      Les pilotes JDBC sont installés par Amazon EMR.

      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"]

Connexion à Hive à l'aide de JDBC

Pour vous connecter à Hive via JDBC, vous devez télécharger le pilote JDBC et installer un client SQL. L'exemple suivant illustre l'utilisation de SQL Workbench/J pour vous connecter à Hive à l'aide de JDBC.

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

  2. Installez SQL Workbench/J. Pour plus d'informations, consultez Installing and starting SQL Workbench/J dans le manuel de l'utilisateur SQL Workbench/J.

  3. Créez un tunnel SSH vers le nœud maître du cluster. Le port de connexion diffère en fonction de la version de Hive. Les exemples fournis dans les tableaux ci-dessous concernent les utilisateurs de Linux (commandes ssh) et les commandes PuTTY pour les utilisateurs de Windows

    Commandes SSH 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 tunnel PuTTY (Windows)
    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 : 10004 master-public-dns-name
    0.8.1 Port source : 10003 Destination : 10003 master-public-dns-name
  4. Ajoutez le pilote JDBC à 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 Library (Bibliothèque), cliquez sur l'icône Select the JAR file(s) (Sélectionner le(s) fichier(s) JAR).

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

      Version du pilote Hive Fichiers JAR à 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 Select Connection Profile (Sélectionner le profil de connexion), vérifiez que le champ Driver (Pilote) est défini sur Hive JDBC et fournissez la chaîne de connexion JDBC dans le champ URL, en vous conformant au tableau suivant.

    Version de Hive Chaîne de connexion 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

    Si votre cluster utilise la version 3.3.1 d'AMI ou une version ultérieure, dans la boîte de dialogue Select Connection Profile (Sélectionner le profil de connexion), tapez hadoop dans le champ Username (Nom d'utilisateur).