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 mithilfe der AWS CLI an einen Hive-Schritt zu übergeben, geben Sie den folgenden Befehl ein. Ersetzen Sie myKey
durch den Namen Ihres EC2-Schlüsselpaares und mybucket
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://mybucket/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 Sicherheitsgruppe ElasticMapReduce-Master 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://
.mybucket/
hive-site.xml
-
-
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
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://mybucket
/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.13.1 JDBC-Treiber: https://amazon-odbc-jdbc-drivers.s3.amazonaws.com/public/AmazonHiveJDBC_1.0.4.1004.zip
-
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-BefehleHive-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-TunneleinstellungenHive-Version Tunneleinstellungen 0.13.1 Source port (Quellport): 10000 Destination (Ziel): master-public-dns-name
:100000.11.0 Source port (Quellport): 10004 Destination (Ziel): master-public-dns-name
:100040.8.1 Source port (Quellport): 10003 Destination (Ziel): master-public-dns-name
:10003 -
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.