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-Anwendungsmerkmale bei früheren AMI-Versionen von Amazon EMR
Protokolldateien
Beim Verwenden der AMI-Versionen 2.x und 3.x von Amazon EMR werden Hive-Protokolle in /mnt/var/log/apps/
gespeichert. Zur Unterstützung gleichzeitiger Versionen von Hive bestimmt die Hive-Version, die Sie ausführen, den Protokolldateinamen, wie in der folgenden Tabelle dargestellt.
Hive-Version | Protokolldateiname |
---|---|
0.13.1 | hive.log
AnmerkungAb dieser Version verwendet Amazon EMR den nicht versionierten Dateinamen |
0.11.0 | hive_0110.log
AnmerkungNebenversionen 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
AnmerkungNebenversionen 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
AnmerkungNebenversionen 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 | hive_07.log |
0.5 | hive_05.log |
0.4 | hive.log |
Split-Eingabe-Funktionen
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 | 10000 |
Hive 0.11.0 | 10004 |
Hive 0.8.1 | 10003 |
Hive 0.7.1 | 10002 |
Hive 0.7 | 10001 |
Hive 0.5 | 10000 |
Weitere Informationen über Thrift-Services finden Sie unter http://wiki.apache.org/thrift/
Verwenden von Hive zum Wiederherstellen von Partitionen
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
unterstützt. Daher wird table
recover
partitions
nicht unterstützt. Weitere Informationen finden Sie unter https://cwiki.apache. org/confluence/display/Hive/LanguageManual+DDL
Übergeben einer Hive-Variable an ein Skript
Um eine Variable mit dem an einen Hive-Schritt zu übergeben AWS CLI, geben Sie den folgenden Befehl ein, myKey
ersetzen Sie ihn durch den Namen Ihres EC2 key pair und amzn-s3-demo-bucket
ersetzen Sie ihn durch Ihren 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
Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).
aws emr create-cluster --name "
Test cluster
" --ami-version3.9
\ --applications Name=Hue
Name=Hive
Name=Pig
\ --use-default-roles --ec2-attributes KeyName=myKey
\ --instance-typem3.xlarge
--instance-count3
\ --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/
]
Angeben eines externen Metastore-Speicherorts
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
-
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.
-
Ändern Sie Ihre Sicherheitsgruppen, um JDBC-Verbindungen zwischen Ihrer Datenbank und der ElasticMapReduce-Master-Sicherheitsgruppe zuzulassen.
Informationen zum Ändern Ihrer Sicherheitsgruppen für den Zugriff finden Sie unter Amazon-RDS-Sicherheitsgruppen im Amazon-RDS-Benutzerhandbuch.
-
Legen Sie die JDBC-Konfigurationswerte in
hive-site.xml
fest:-
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-Instance, auf der die Datenbank ausgeführt wird.username
undpassword
sind die Anmeldeinformationen für Ihre Datenbank. Weitere Informationen zum Verbinden mit MySQL- und Aurora-Datenbank-Instances finden Sie unter Herstellen einer Verbindung mit einer DB-Instance auf der MySQL Databank Engine und Herstellen von einer Verbindung zu 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.
-
Speichern Sie die
hive-site.xml
-Datei in einem Speicherort in Amazon S3, z. B. unters3://
.amzn-s3-demo-bucket/
hive-site.xml
-
-
Erstellen Sie einen Cluster, indem Sie den Amazon-S3-Speicherort der benutzerdefinierten Datei
hive-site.xml
angeben.Der folgende Beispielbefehl demonstriert einen AWS CLI Befehl, der dies tut.
Anmerkung
Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).
aws emr create-cluster --name "
Test cluster
" --ami-version3.10
\ --applications Name=Hue
Name=Hive
Name=Pig
\ --use-default-roles --ec2-attributes KeyName=myKey
\ --instance-typem3.xlarge
--instance-count3
\ --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"]
Mit Hive über JDBC verbinden
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
-
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.
-
Hive 0.11.0-JDBC-Treiber: https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0
-
Hive 0.8.1-JDBC-Treiber: https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1
-
Installieren Sie SQL Workbench/J. Weitere Informationen finden Sie unter Installieren und Starten von SQL Workbench/J
im Benutzerhandbuch für SQL Workbench/J. -
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 Quellport: 10000 Ziel ::10000 master-public-dns-name
0.11.0 Quellport: 10004 Ziel ::10004 master-public-dns-name
0.8.1 Quellport: 10003 Ziel ::10003 master-public-dns-name
-
Fügen Sie SQL Workbench den JDBC-Treiber hinzu.
-
Klicken Sie im Dialogfeld Select Connection Profile (Verbindungsprofil auswählen) auf Manage Drivers (Treiber verwalten).
-
Wählen Sie das Symbol (leere Seite) Create a new entry (Neuen Eintrag erstellen) aus.
-
Geben Sie in das Feld Name
Hive JDBC
ein. -
Klicken Sie bei Library (Bibliothek) auf das Symbol Select the JAR file(s) (JAR-Datei(en) auswählen).
-
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
-
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
-
-
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.