View a markdown version of this page

Verwendung der AWS Glue Data Catalog als Metastore für Hive - 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.

Verwendung der AWS Glue Data Catalog als Metastore für Hive

Mit Amazon EMR Version 5.8.0 oder höher können Sie Hive so konfigurieren, dass der AWS Glue-Datenkatalog als Metastore verwendet wird. Wir empfehlen diese Konfiguration, wenn Sie einen persistenten Metastore oder einen gemeinsamen Metastore für verschiedene Cluster, Services, Anwendungen oder AWS -Konten benötigen.

AWS Glue ist ein vollständig verwalteter ETL-Service (Extrahieren, Transformieren und Laden), mit dem Sie Ihre Daten einfach und kostengünstig kategorisieren, bereinigen, anreichern und zuverlässig zwischen verschiedenen Datenspeichern verschieben können. Der AWS Glue Data Catalog bietet ein einheitliches Metadaten-Repository für eine Vielzahl von Datenquellen und Datenformaten und lässt sich in Amazon EMR sowie Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena und jede mit dem Apache Hive-Metastore kompatible Anwendung integrieren. AWS Glue-Crawler können automatisch Schemas aus den Quelldaten in Amazon S3 ableiten und die zugehörigen Metadaten im Datenkatalog speichern. Weitere Informationen zum Datenkatalog finden Sie unter Füllen des Glue-Datenkatalogs im AWS Glue-Entwicklerhandbuch AWS .

Für AWS Glue fallen separate Gebühren an. Es gibt eine monatliche Gebühr für das Speichern und Zugreifen auf die Metadaten im Datenkatalog, einen Stundensatz, der pro Minute für AWS Glue-ETL-Jobs und die Crawler-Laufzeit abgerechnet wird, und einen Stundensatz, der pro Minute für jeden bereitgestellten Entwicklungsendpunkt abgerechnet wird. Der Datenkatalog ermöglicht Ihnen die gebührenfreie Speicherung von bis zu einer Million Objekten. Wenn Sie mehr als eine Million Objekte speichern, fällt eine Gebühr von 1 USD für jeweils 100.000 zusätzliche Objekte an. Im Data Catalog ist ein Objekt eine Tabelle, eine Partition oder eine Datenbank. Weitere Informationen finden Sie unter Glue-Preise.

Wichtig

Wenn Sie vor dem 14. August 2017 Tabellen mit Amazon Athena oder Amazon Redshift Spectrum erstellt haben, werden Datenbanken und Tabellen in einem Athena-managed Katalog gespeichert, der vom Glue-Datenkatalog getrennt ist. AWS Um Amazon EMR in diese Tabellen zu integrieren, müssen Sie ein Upgrade auf den AWS Glue-Datenkatalog durchführen. Weitere Informationen finden Sie unter Upgrade auf den AWS Glue-Datenkatalog im Amazon Athena-Benutzerhandbuch.

Spezifizieren AWS Glue Data Catalog als Metastore

Sie können den AWS Glue-Datenkatalog mithilfe der AWS-Managementkonsole, AWS CLI oder der Amazon EMR-API als Metastore angeben. Wenn Sie die CLI oder API verwenden, verwenden Sie die Konfigurationsklassifizierung für Hive, um den Data Catalog anzugeben. Darüber hinaus können Sie mit Amazon EMR 5.16.0 und höher die Konfigurationsklassifizierung verwenden, um einen Datenkatalog in einem anderen zu spezifizieren. AWS-KontoWenn Sie die Konsole verwenden, können Sie den Data Catalog mit den erweiterten Optionen oder den Schnelloptionen angeben.

Console
Um Folgendes zu spezifizieren AWS Glue Data Catalog als Hive-Metastore mit der Konsole
  1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon EMR-Konsole unter. https://console.aws.amazon.com/emr

  2. Wählen Sie im linken Navigationsbereich unter EMR in EC2 die Option Cluster und dann Cluster erstellen aus.

  3. Wählen Sie unter Anwendungspaket die Option Core Hadoop, HBase oder Benutzerdefiniert aus. Wenn Sie Ihren Cluster anpassen, stellen Sie sicher, dass Sie Hive oder HCatalog als eine Ihrer Anwendungen auswählen.

  4. Aktivieren Sie unter Einstellungen für den AWS Glue Data Catalog das Kontrollkästchen Für Hive-Tabellenmetadaten verwenden.

  5. Wählen Sie alle anderen Optionen aus, die für Ihren Cluster gelten.

  6. Um Ihren Cluster jetzt zu starten, wählen Sie Cluster erstellen aus.

CLI
Um das anzugeben AWS Glue Data Catalog als Hive-Metastore mit dem AWS CLI

Weitere Informationen zum Angeben einer Konfigurationsklassifizierung mithilfe der AWS CLI EMR-API finden Sie unter. Anwendungen konfigurieren

  • Geben Sie den Wert für hive.metastore.client.factory.class mittels der Konfigurationsklassifizierung hive-site wie im folgenden Beispiel gezeigt an:

    [ { "Classification": "hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory" } } ]

    Wenn Sie in den EMR-Release-Versionen 5.28.0, 5.28.1, 5.29.0 oder 6.x einen Cluster erstellen, der den AWS Glue-Datenkatalog als Metastore verwendet, setzen Sie den Wert auf. hive.metastore.schema.verification false Dadurch wird verhindert, dass Hive und HCatalog das Metastore-Schema gegen MySQL validieren. Ohne diese Konfiguration wird die Primär-Instance-Gruppe nach der Neukonfiguration in Hive oder HCatalog gesperrt.

    [ { "Classification": "hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "hive.metastore.schema.verification": "false" } } ]

    Wenn Sie bereits über einen Cluster in EMR-Version 5.28.0, 5.28.1 oder 5.29.0 verfügen, können Sie die Primär-Instance-Gruppe hive.metastore.schema.verification mit folgenden Informationen auf false festlegen:

    Classification = hive-site Property = hive.metastore.schema.verification Value = false

    Um einen Datenkatalog in einem anderen AWS Konto anzugeben, fügen Sie die Eigenschaft hinzu, wie im folgenden Beispiel gezeigt. hive.metastore.glue.catalogid Ersetzen Sie acct-id durch das AWS -Konto des Data Catalog.

    [ { "Classification": "hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "hive.metastore.schema.verification": "false", "hive.metastore.glue.catalogid": "acct-id" } } ]

IAM-Berechtigungen

Das EC2-Instance-Profil für einen Cluster muss über IAM-Berechtigungen für AWS Glue-Aktionen verfügen. Wenn Sie die Verschlüsselung für AWS Glue-Datenkatalog-Objekte aktivieren, muss die Rolle außerdem berechtigt sein, die für die Verschlüsselung verwendeten Daten zu verschlüsseln, zu entschlüsseln und zu generieren. AWS KMS key

Berechtigungen für AWS Glue-Aktionen

Wenn Sie das standardmäßige EC2-Instance-Profil für Amazon EMR verwenden, ist keine Aktion erforderlich. Die AmazonElasticMapReduceforEC2Role verwaltete Richtlinie, die an die angehängt ist, EMR_EC2_DefaultRole ermöglicht alle erforderlichen AWS Glue-Aktionen. Wenn Sie jedoch ein benutzerdefiniertes EC2-Instanzprofil und Berechtigungen angeben, müssen Sie die entsprechenden AWS Glue-Aktionen konfigurieren. Verwenden Sie hierzu die verwaltete Richtlinie AmazonElasticMapReduceforEC2Role als Ausgangspunkt. Weitere Informationen finden Sie unter Servicerolle für Cluster-EC2-Instances (EC2-Instance-Profil) im Verwaltungshandbuch für Amazon EMR.

Berechtigungen zum Verschlüsseln und Entschlüsseln AWS Glue Data Catalog

Ihr Instance-Profil benötigt die Erlaubnis, Daten mithilfe Ihres Schlüssels zu verschlüsseln und zu entschlüsseln. Sie müssen diese Berechtigungen nicht konfigurieren, wenn die beiden folgenden Aussagen zutreffen:

  • Sie aktivieren die Verschlüsselung für AWS Glue Data Catalog-Objekte mithilfe verwalteter Schlüssel für AWS Glue.

  • Sie verwenden einen Cluster, der sich im gleichen Cluster AWS-Konto wie der AWS Glue-Datenkatalog befindet.

Andernfalls müssen Sie die folgende Anweisung der Berechtigungsrichtlinie hinzufügen, die mit Ihrem EC2-Instance-Profil verknüpft ist.

Weitere Informationen zur AWS Glue-Datenkatalog-Verschlüsselung finden Sie unter Verschlüsseln Ihres Datenkatalogs im AWS Glue-Entwicklerhandbuch.

Resource-based Berechtigungen

Wenn Sie AWS Glue in Verbindung mit Hive, Spark oder Presto in Amazon EMR verwenden, unterstützt AWS Glue ressourcenbasierte Richtlinien zur Steuerung des Zugriffs auf Datenkatalogressourcen. Zu diesen Ressourcen gehören Datenbanken, Tabellen, Verbindungen und benutzerdefinierte Funktionen. Weitere Informationen finden Sie unter Verwenden von ressourcenbasierten Richtlinien für AWS Glue im AWS -Glue-Entwicklerhandbuch.

Wenn Sie ressourcenbasierte Richtlinien verwenden, um den Zugriff auf AWS Glue von Amazon EMR aus einzuschränken, muss der Prinzipal, den Sie in der Berechtigungsrichtlinie angeben, der Rollen-ARN sein, der dem EC2-Instance-Profil zugeordnet ist, das bei der Erstellung eines Clusters angegeben wird. Beispielsweise können Sie für eine ressourcenbasierte Richtlinie, die an einen Katalog angehängt ist, den Rollen-ARN für die Standard-Servicerolle für Cluster-EC2-Instances EMR_EC2_DefaultRole als die angeben. Verwenden Sie dazu das im Principal folgenden Beispiel gezeigte Format:

arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole

Die acct-id kann sich von der Glue-Konto-ID unterscheiden. AWS Dies ermöglicht den Zugriff von EMR-Clustern in verschiedenen Konten aus. Sie können mehrere Principals angeben, von denen jeder aus einem anderen Konto stammt.

Überlegungen bei der Verwendung AWS Glue Data Catalog

Beachten Sie die folgenden Punkte, wenn Sie den AWS Glue-Datenkatalog als Metastore mit Hive verwenden:

  • Das Hinzufügen von zusätzlichen JAR-Dateien mithilfe der Hive-Shell wird nicht unterstützt. Um dieses Problem zu umgehen, verwenden Sie die hive-site-Konfigurationsklassifizierung zum Festlegen der hive.aux.jars.path-Eigenschaft. Auf diese Weise werden zusätzliche JAR-Dateien in den Hive-Klassenpfad hinzugefügt.

  • Hive-Transaktionen werden nicht unterstützt.

  • Das Umbenennen von Tabellen aus AWS Glue heraus wird nicht unterstützt.

  • Wenn Sie eine Hive-Tabelle erstellen, ohne eine LOCATION anzugeben, werden die Tabellendaten an dem in der Eigenschaft hive.metastore.warehouse.dir angegebenen Ort gespeichert. Standardmäßig ist dies ein Speicherort in HDFS. Wenn ein anderer Cluster auf die Tabelle zugreifen muss, schlägt er fehl, sofern er nicht über ausreichende Berechtigungen für den Cluster verfügt, der die Tabelle erstellt hat. Da HDFS-Speicher vorübergehend ist, gehen außerdem die Tabellendaten verloren, wenn der Cluster beendet wird, und die Tabelle muss neu erstellt werden. Wir empfehlen, dass Sie LOCATION in Amazon S3 eine angeben, wenn Sie eine Hive-Tabelle mit AWS Glue erstellen. Alternativ können Sie die hive-site-Konfigurationsklassifizierung verwenden, um einen Speicherort in Amazon S3 für hive.metastore.warehouse.dir anzugeben, der für alle Hive-Tabellen gilt. Wenn eine Tabelle an einem HDFS-Speicherort erstellt wird und der Cluster, der sie erstellt hat, noch läuft, können Sie den Tabellenspeicherort von Glue aus auf Amazon S3 aktualisieren. AWS Weitere Informationen finden Sie unter Arbeiten mit Tabellen auf der AWS Glue-Konsole im AWS Glue-Entwicklerhandbuch.

  • Partitionswerte, die Anführungszeichen und Apostrophe enthalten, werden nicht unterstützt, zum Beispiel PARTITION (owner="Doe's").

  • Spaltenstatistiken werden für emr-5.31.0 und höher unterstützt.

  • Die Verwendung der Hive-Autorisierung wird nicht unterstützt. Als Alternative sollten Sie die Verwendung von AWS Resource-Based Glue-Richtlinien in Betracht ziehen. Weitere Informationen finden Sie unter Resource-Based Nutzungsrichtlinien für den Zugriff von Amazon EMR auf den AWS Glue-Datenkatalog.

  • Hive-Einschränkungen werden nicht unterstützt.

  • Cost-based Die Optimierung in Hive wird nicht unterstützt.

  • Die Einstellung hive.metastore.partition.inherit.table.properties wird nicht unterstützt.

  • Die Verwendung der folgenden Metastore-Konstanten wird nicht unterstützt: BUCKET_COUNT, BUCKET_FIELD_NAME, DDL_TIME, FIELD_TO_DIMENSION, FILE_INPUT_FORMAT, FILE_OUTPUT_FORMAT, HIVE_FILTER_FIELD_LAST_ACCESS, HIVE_FILTER_FIELD_OWNER, HIVE_FILTER_FIELD_PARAMS, IS_ARCHIVED, META_TABLE_COLUMNS, META_TABLE_COLUMN_TYPES, META_TABLE_DB, META_TABLE_LOCATION, META_TABLE_NAME, META_TABLE_PARTITION_COLUMNS, META_TABLE_SERDE, META_TABLE_STORAGE, ORIGINAL_LOCATION.

  • Wenn Sie einen Prädikatausdruck verwenden, müssen sich explizite Werte auf der rechten Seite des Vergleichsoperators befinden. Andernfalls schlagen Abfragen möglicherweise fehl.

    • Richtig: SELECT * FROM mytable WHERE time > 11

    • Falsch: SELECT * FROM mytable WHERE 11 > time

  • Die Amazon-EMR-Versionen 5.32.0 und 6.3.0 und höher unterstützen die Verwendung benutzerdefinierter Funktionen (UDFs) in Prädikatausdrücken. Wenn Sie frühere Versionen verwenden, schlagen Ihre Abfragen möglicherweise fehl, weil Hive versucht, die Abfrageausführung zu optimieren.

  • Temporäre Tabellen werden nicht unterstützt.

  • Wir empfehlen, Tabellen mithilfe von Anwendungen über Amazon EMR zu erstellen, anstatt sie direkt mit AWS Glue zu erstellen. Das Erstellen einer Tabelle mit AWS Glue kann dazu führen, dass erforderliche Felder fehlen und Abfrageausnahmen auftreten.

  • In EMR 5.20.0 oder höher wird das parallele Partitionsbereinigen für Spark und Hive automatisch aktiviert, wenn AWS Glue Data Catalog als Metastore verwendet wird. Diese Änderung reduziert die Zeit für die Abfrageplanung erheblich, da mehrere Anfragen parallel ausgeführt werden, um Partitionen abzurufen. Die Gesamtzahl der Segmente, die gleichzeitig ausgeführt werden können, liegt zwischen 1 und 10. Der Standardwert ist 5, was eine empfohlene Einstellung ist. Sie können dies ändern, indem Sie die Eigenschaft aws.glue.partition.num.segments in der hive-site-Konfigurationsklassifizierung angeben. Wenn eine Drosselung auftritt, können Sie das Feature ausschalten, indem Sie den Wert auf 1 ändern. Weitere Informationen finden Sie unter AWS -Glue-Segmentstruktur.