Verwenden einer externen MySQL-Datenbank oder von Amazon Aurora; - 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.

Verwenden einer externen MySQL-Datenbank oder von Amazon Aurora;

Damit Sie eine externe MySQL-Datenbank oder Amazon Aurora als Hive-Metastore verwenden können, überschreiben Sie die Standardkonfigurationswerte für den Metastore in Hive, um den Speicherort der externen Datenbank anzugeben, entweder auf einer Amazon-RDS-MySQL-Instance oder einer Amazon-Aurora-PostgreSQL-Instance.

Anmerkung

Von Hive werden gleichzeitige Schreibzugriffe auf Metastore-Tabellen weder unterstützt noch verhindert. Wenn zwei Cluster gemeinsam Metastore-Daten nutzen, müssen Sie sicherstellen, dass Sie nicht gleichzeitig in dieselbe Metastore-Tabelle schreiben, es sei denn, sie schreiben auf verschiedene Partitionen derselben Metastore-Tabelle.

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-PostgreSQL-Datenbank. Wenn Sie PostgreSQL verwenden, müssen Sie es konfigurieren, nachdem Sie Ihren Cluster bereitgestellt haben. Bei der Clustererstellung wird nur MySQL unterstützt. Informationen zu den Unterschieden zwischen Aurora MySQL und Aurora PostgreSQL finden Sie unter Überblick über Amazon Aurora MySQL und Arbeiten mit Amazon Aurora PostgreSQL. Weitere Informationen zum Erstellen einer Amazon-RDS-Datenbank finden Sie unter https://aws.amazon.com/rds/.

  2. Ändern Sie Ihre Sicherheitsgruppen, um JDBC-Verbindungen zwischen Ihrer Datenbank und der -Master-Sicherheitsgruppe zuzulassen. ElasticMapReduce Informationen zum Ändern Ihrer Sicherheitsgruppen für den Zugriff finden Sie unter Arbeiten mit von Amazon EMR verwalteten Sicherheitsgruppen.

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

    Wichtig

    Wenn Sie sensible Daten wie z. B. Passwörter an die Amazon-EMR-Konfigurations-API übergeben, werden diese Informationen für Konten mit ausreichenden Berechtigungen angezeigt. Wenn Sie besorgt sind, dass diese Daten anderen Benutzern angezeigt werden könnten, erstellen Sie den Cluster mit einem administrativen Konto und schränken Sie den Zugriff anderer Benutzer (IAM-Benutzer oder Benutzer mit delegierten Anmeldeinformationen) auf die Services im Cluster ein, indem Sie eine Rolle erstellen, die Berechtigungen für den API-Schlüssel elasticmapreduce:DescribeCluster ausdrücklich verweigert.

    1. Erstellen Sie eine Konfigurationsdatei namens hiveConfiguration.json, die Änderungen an hive-site.xml enthält, wie im folgenden Beispiel gezeigt.

      Ersetzen eines Hostname ist die DNS-Adresse der Amazon-RDS-Instance, auf der die Datenbank ausgeführt wird. Benutzername und Password sind die Anmeldeinformationen für Ihre Datenbank. Weitere Informationen zum Verbinden mit MySQL- und Autora-Datenbank-Instances finden Sie unter Verbinden mit einer DB-Instance, die die MySQL Database Engine ausführt und Verbinden mit einem DB-Cluster im Amazon-RDS-Benutzerhandbuch. javax.jdo.option.ConnectionURL ist die JDBC-Verbindungszeichenfolge für einen JDBC-Metastore. javax.jdo.option.ConnectionDriverName ist der Treiberklassenname für einen JDBC-Metastore.

      Die MySQL-JDBC-Treiber werden von Amazon EMR installiert.

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

      [ { "Classification": "hive-site", "Properties": { "javax.jdo.option.ConnectionURL": "jdbc:mysql://hostname:3306/hive?createDatabaseIfNotExist=true", "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver", "javax.jdo.option.ConnectionUserName": "username", "javax.jdo.option.ConnectionPassword": "password" } } ]
    2. Verweisen Sie bei der Erstellung des Clusters auf die hiveConfiguration.json Datei, wie im folgenden Befehl gezeigt. AWS CLI In diesem Befehl ist die Datei lokal gespeichert. Sie können die Datei auch zu Amazon S3 hochladen und dort referenzieren, beispielsweise s3://DOC-EXAMPLE-BUCKET/hiveConfiguration.json.

      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 --release-label emr-7.1.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=Hive --configurations file://hiveConfiguration.json --use-default-roles
  4. Stellen Sie eine Verbindung mit dem Primärknoten Ihres Clusters her.

    Informationen zum Verbinden mit dem Primärknoten finden Sie unter Verbinden mit dem Primärknoten über SSH im Verwaltungshandbuch für Amazon EMR.

  5. Erstellen Sie Ihre Hive-Tabellen, indem Sie den Speicherort in Amazon S3 durch Eingabe eines Befehls ähnlich dem folgenden angeben:

    CREATE EXTERNAL TABLE IF NOT EXISTS table_name ( key int, value int ) LOCATION s3://DOC-EXAMPLE-BUCKET/hdfs/
  6. Fügen Sie dem aktiven Cluster Ihr Hive-Skript hinzu.

Ihr Hive-Cluster wird unter Verwendung des Metastores in Amazon RDS ausgeführt. Starten Sie alle zusätzlichen Hive-Cluster, die diesen Metastore nutzen, indem Sie den Metastore-Speicherort angeben.