Hive Application Specifics for Earlier AMI Versions of Amazon EMR - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Hive Application Specifics for Earlier AMI Versions of Amazon EMR

Log files

Verwendung Amazon EMR AMI-Versionen 2.x und 3.x, Hive-Protokolle werden gespeichert unter /mnt/var/log/apps/. Um die gleichzeitigen Versionen von Hive zu unterstützen, bestimmt die Ausführung von Hive den Namen der Protokolldatei, wie in der folgenden Tabelle dargestellt.

Hive-Version Protokolldateiname
0.13.1 hive.log
Anmerkung

Beginnend mit dieser Version Amazon EMR verwendet einen fehlerhaften Dateinamen, hive.log. Kleinere Versionen teilen denselben Protokollspeicherort wie die Hauptversion.

0.11.0 hive_0110.log
Anmerkung

Nebenversionen von Hive 0.11.0, z. B. 0.11.0.1, nutzen denselben Speicherort für ihre Protokolldatei wie Hive 0.11.0.

0.8.1 hive_081.log
Anmerkung

Nebenversionen von Hive 0.8.1, z. B. Hive 0.8.1.1, nutzen denselben Speicherort für ihre Protokolldatei wie Hive 0.8.1.

0.7.1 hive_07_1.log
Anmerkung

Nebenversionen von Hive 0.7.1, z. B. Hive 0.7.1.3 und Hive 0.7.1.4, nutzen denselben Speicherort für ihre Protokolldatei wie Hive 0.7.1.

0,7 USD hive_07.log
0,5 hive_05.log
0.4% hive.log

Split Input Functionality

Verwenden Sie Folgendes zum Implementieren von Split-Eingabe-Funktionen mit Hive-Versionen niedriger als 0.13.1 (Amazon EMR-AMI-Versionen vor 3.11.0):

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

Diese Funktionalität wurde mit Hive 0.13.1 eingestellt. Verwenden Sie folgende Einstellung, um dieselbe Funktionalität wie beim Split-Eingabeformat in AMI-Version 3.11.0 von Amazon EMR zu erhalten:

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

Thrift Service Ports

Thrift ist ein RPC-Framework, das ein kompaktes binäres Serialisierungsformat definiert. Es wird dazu verwendet, Datenstrukturen für spätere Analysen beizubehalten. In der Regel konfiguriert Hive die Server für den Betrieb an folgenden Ports.

Hive-Version Port-Nummer
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*

Weitere Informationen über Thrift-Services finden Sie unter http://wiki.apache.org/thrift/.

Use Hive to Recover Partitions

Amazon EMR enthält eine Anweisung in der Hive-Abfragesprache, mit der die Partitionen einer Tabelle aus den Tabellendaten in Amazon S3 wiederhergestellt werden. Im folgenden Beispiel ist diese Anweisung dargestellt.

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;

Die Partitionsverzeichnisse und -daten müssen sich den dem in der Tabellendefinition angegebenem Speicherort befinden und dem Hive-Standard entsprechend benannt sein: z. B. dt=2009-01-01.

Anmerkung

Nach der Version Hive 0.13.1 wird diese Funktion nativ mit msck repair table unterstützt. Daher wird recover partitions nicht unterstützt. Weitere Informationen finden Sie unter https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL.

Pass a Hive Variable to a Script

So führen Sie eine Variable in einen Hive-Schritt durch: AWS CLI, geben Sie den folgenden Befehl ein, ersetzen Sie myKey mit dem Namen Ihres EC2-Schlüsselpaars und ersetzen Sie mybucket mit Ihrem Bucket-Namen. In diesem Beispiel ist SAMPLE ein Variablenwert, dem der Switch -d vorangestellt wird. Diese Variable ist im Hive-Skript definiert als: . ${SAMPLE}.

Anmerkung

Zur besseren Lesbarkeit sind Linux-Zeilenfortsetzungszeichen (\) enthalten. Sie können entweder entfernt oder in Linux-Befehlen verwendet werden. Ersetzen Sie diese Zeichen unter Windows durch ein Caret-Zeichen (^).

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

Specify an External Metastore Location

Das folgende Verfahren zeigt, wie Sie die Standardkonfigurationswerte für den Speicherort des Hive-Metastores überschreiben und einen Cluster mit dem neu konfigurierten Metastore-Speicherort starten.

So erstellen Sie einen Metastore außerhalb des EMR-Clusters

  1. Erstellen Sie eine MySQL- oder Aurora-Datenbank mit Amazon RDS.

    Weitere Informationen zum Erstellen einer Amazon RDS-Datenbank finden Sie unter Erste Schritte mit Amazon RDS.

  2. Ändern Sie Ihre Sicherheitsgruppen, um JDBC-Verbindungen zwischen Ihrer Datenbank und der Sicherheitsgruppe ElasticMapReduce-Master zuzulassen.

    Informationen zum Ändern Ihrer Sicherheitsgruppen für den Zugriff finden Sie unter Amazon RDS-Sicherheitsgruppen im Amazon RDS-Benutzerhandbuch.

  3. Legen Sie die JDBC-Konfigurationswerte in hive-site.xml fest:

    1. Erstellen Sie eine hive-site.xml-Konfigurationsdatei, die folgende Informationen enthält:

      <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 ist die DNS-Adresse der Amazon RDS Instanz, die Datenbank ausgeführt hat. username und password sind die Anmeldeinformationen für Ihre Datenbank. Weitere Informationen zum Verbinden mit MySQL- und Aurora-Datenbank-Instances finden Sie unter Verbinden mit einer DB-Instance auf einer MySQL-Datenbank-Engine und Herstellen von Verbindungen mit einem Aurora-DB-Cluster im Amazon RDS-Benutzerhandbuch.

      Die JDBC-Treiber werden von Amazon EMR installiert.

      Anmerkung

      Die Werteigenschaft darf keine Leerzeichen oder Wagenrückläufe enthalten. Sie sollte in einer Zeile erscheinen.

    2. Speichern Sie die hive-site.xml-Datei in einem Speicherort in Amazon S3, z. B. unter s3://mybucket/hive-site.xml.

  4. Erstellen Sie einen Cluster, indem Sie den Amazon S3-Speicherort der benutzerdefinierten Datei hive-site.xml angeben.

    Das folgende Beispiel zeigt einen AWS CLI-Befehl, der diese Aktion durchführt.

    Anmerkung

    Zur besseren Lesbarkeit sind Linux-Zeilenfortsetzungszeichen (\) enthalten. Sie können entweder entfernt oder in Linux-Befehlen verwendet werden. Ersetzen Sie diese Zeichen unter Windows durch ein Caret-Zeichen (^).

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

Connect to Hive Using JDBC

Zum Herstellen einer Verbindung mit Hive über JDBC müssen Sie den JDBC-Treiber herunterladen und einen SQL-Client installieren. Das folgende Beispiel veranschaulicht die Verwendung von SQL Workbench/J zur Verbindung mit Hive über JDBC.

So laden Sie JDBC-Treiber herunter

  1. Laden Sie die entsprechenden Treiber für die Hive-Versionen herunter, auf die Sie zugreifen möchten. Entpacken Sie die Treiber. Die Hive-Version unterscheidet sich je nach dem beim Erstellen eines Amazon EMR-Clusters ausgewählten AMI.

  2. Installieren Sie SQL Workbench/J. Weitere Informationen finden Sie unter Installieren und Starten von SQL Workbench/J im Benutzerhandbuch für SQL Workbench/J.

  3. Erstellen Sie einen SSH-Tunnel zum Cluster-Master-Knoten. Der Port für die Verbindung unterscheidet sich je nach Hive-Version. Beispielbefehle für ssh-Linux-Benutzer und PuTTY-Befehle für Windows-Benutzer finden Sie in den unten stehenden Tabellen.

    Linux-SSH-Befehle
    Hive-Version Befehl
    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
    Windows-PuTTY-Tunneleinstellungen
    Hive-Version Tunneleinstellungen
    0.13.1 Quellanschluss: 10000 Reiseziel: master-public-dns-name10.000*
    0.11.0 Quellanschluss: 10004 Reiseziel: master-public-dns-name10004
    0.8.1 Quellanschluss: 10003 Reiseziel: master-public-dns-name10003
  4. Fügen Sie SQL Workbench den JDBC-Treiber hinzu.

    1. Klicken Sie im Dialogfeld Select Connection Profile (Verbindungsprofil auswählen) auf Manage Drivers (Treiber verwalten).

    2. Wählen Sie das Symbol (leere Seite) Create a new entry (Neuen Eintrag erstellen) aus.

    3. Geben Sie in das Name-Feld Hive JDBC ein.

    4. Klicken Sie bei Library (Bibliothek) auf das Symbol Select the JAR file(s) (JAR-Datei(en) auswählen).

    5. Wählen Sie JAR-Dateien aus, wie in der folgenden Tabelle gezeigt.

      Hive-Treiberversion Hinzufügen von JAR-Dateien
      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. Wählen Sie im Dialogfeld Please select one driver (Bitte einen Treiber auswählen) einen Treiber gemäß der folgenden Tabelle aus und klicken Sie dann auf OK.

      Hive-Version Treiber-Klassenname
      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. Wenn Sie zum Dialogfeld Select Connection Profile (Verbindungsprofil auswählen) zurückkehren, stellen Sie sicher, dass das Dialogfeld Driver (Treiber) auf Hive JDBC festgelegt ist, und geben Sie die JDBC-Verbindungszeichenfolge im Feld URL gemäß der folgenden Tabelle ein.

    Hive-Version JDBC-Verbindungszeichenfolge
    0.13.1 jdbc:hive2://localhost:10000/default
    0.11.0 jdbc:hive://localhost:10004/default
    0.8.1 jdbc:hive://localhost:10003/default

    Wenn Ihr Cluster die AMI-Version 3.3.1 oder höher im Dialogfeld Select Connection Profile (Verbindungsprofil auswählen) verwendet, geben Sie hadoop in das Feld Username (Benutzername) ein.