Tabellen aus einem HDFS-Data Lake migrieren
In diesem Dokument wird beschrieben, wie Sie Ihre Apache Hadoop Distributed File System-Tabellen (HDFS) in Trusted Cloudmigrieren.
Mit dem Connector für die HDFS-Data-Lake-Migration im BigQuery Data Transfer Service können Sie Ihre Hive- und Iceberg-Tabellen aus verschiedenen Hadoop-Distributionen in lokalen und Cloud-Umgebungen zu Trusted Cloudmigrieren.
Mit dem HDFS-Data-Lake-Connector können Sie Ihre HDFS-Data-Lake-Tabellen sowohl bei Dataproc Metastore als auch bei BigLake Metastore registrieren und gleichzeitig Cloud Storage als zugrunde liegenden Speicher für Ihre Dateien verwenden.
Das folgende Diagramm bietet einen Überblick über die Tabellenmigration aus dem Hadoop-Cluster.
Beschränkungen
Für HDFS-Data-Lake-Übertragungen gelten die folgenden Einschränkungen:
- Wenn Sie Iceberg-Tabellen migrieren möchten, müssen Sie die Tabellen im BigLake-Metastore registrieren, um Schreibzugriff für Open-Source-Engines (z. B. Spark oder Flink) und Lesezugriff für BigQuery zu ermöglichen.
- Wenn Sie Hive-Tabellen migrieren möchten, müssen Sie die Tabellen in Dataproc Metastore registrieren, um Schreibzugriff für Open-Source-Engines und Lesezugriff für BigQuery zu ermöglichen.
- Sie müssen das bq-Befehlszeilentool verwenden, um eine HDFS-Data-Lake-Tabelle zu BigQuery zu migrieren.
Hinweise
Bevor Sie eine HDFS-Data-Lake-Übertragung planen, müssen Sie Folgendes ausführen:
Cloud Storage-Bucket für migrierte Dateien erstellen
Erstellen Sie einen Cloud Storage-Bucket, der das Ziel für Ihre migrierten Data Lake-Dateien sein soll. In diesem Dokument wird dieser Bucket als MIGRATION_BUCKET
bezeichnet.
Metadatendatei für Apache Hive generieren
Führen Sie das dwh-migration-dumper
-Tool aus, um Metadaten für Apache Hive zu extrahieren. Das Tool generiert eine Datei mit dem Namen hive-dumper-output.zip
in einem Cloud Storage-Bucket, der in diesem Dokument als DUMPER_BUCKET
bezeichnet wird.
APIs aktivieren
Aktivieren Sie die folgenden APIs in IhremTrusted Cloud -Projekt:
- Data Transfer API
- Storage Transfer API
Ein Dienst-Agent wird erstellt, wenn Sie die Data Transfer API aktivieren.
Berechtigungen konfigurieren
- Erstellen Sie ein Dienstkonto und weisen Sie ihm die Rolle „BigQuery-Administrator“ (
roles/bigquery.admin
) zu. Dieses Dienstkonto wird zum Erstellen der Übertragungskonfiguration verwendet. - Beim Aktivieren der Data Transfer API wird ein Dienst-Agent (P4SA) erstellt. Weisen Sie dem Dienstkonto die folgenden Rollen zu:
roles/metastore.metadataOwner
roles/storagetransfer.admin
roles/serviceusage.serviceUsageConsumer
roles/storage.objectViewer
- Wenn Sie Metadaten für BigLake-Iceberg-Tabellen migrieren, weisen Sie ihr die Rollen
roles/storage.objectAdmin
undroles/bigquery.admin
anstelle vonroles/storage.objectViewer
zu.
- Wenn Sie Metadaten für BigLake-Iceberg-Tabellen migrieren, weisen Sie ihr die Rollen
Weisen Sie dem Dienst-Agent mit dem folgenden Befehl die Rolle
roles/iam.serviceAccountTokenCreator
zu:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.s3ns.iam.gserviceaccount.com --role roles/iam.serviceAccountTokenCreator
Storage Transfer Agent konfigurieren
So richten Sie den für die Übertragung eines HDFS-Data Lakes erforderlichen Storage Transfer Agent ein:
- Berechtigungen konfigurieren, damit der Storage Transfer Agent in Ihrem Hadoop-Cluster ausgeführt werden kann.
- Installieren Sie Docker auf lokalen Agent-Computern.
- Erstellen Sie einen Storage Transfer Service-Agent-Pool in Ihrem Trusted Cloud by S3NS Projekt.
- Installieren Sie Agents auf Ihren lokalen Agent-Computern.
Übertragung eines HDFS-Data Lakes planen
Wenn Sie eine HDFS-Data-Lake-Übertragung planen möchten, geben Sie den Befehl bq mk
ein und geben Sie das Flag --transfer_config
für die Übertragungserstellung an:
bq mk --transfer_config --data_source=hadoop --display_name='TRANSFER_NAME' --service_account_name='SERVICE_ACCOUNT' --project_id='PROJECT_ID' --location='REGION' --params='{"table_name_patterns":"LIST_OF_TABLES", "agent_pool_name":"AGENT_POOL_NAME", "table_metadata_path":"gs://DUMPER_BUCKET/hive-dumper-output.zip", "target_gcs_file_path":"gs://MIGRATION_BUCKET", "destination_dataproc_metastore":"DATAPROC_METASTORE", "destination_bigquery_dataset":"BIGLAKE_METASTORE", "translation_output_gcs_path":"gs://TRANSLATION_OUTPUT_BUCKET/metadata/config/default_database/" }'
Ersetzen Sie Folgendes:
TRANSFER_NAME
: Der Anzeigename für die Übertragungskonfiguration. Der Übertragungsname kann ein beliebiger Wert sein, mit dem Sie die Übertragung identifizieren können, wenn Sie sie später ändern müssen.SERVICE_ACCOUNT
ist der Name des Dienstkontos, der zur Authentifizierung der Übertragung verwendet wird. Das Dienstkonto sollte zum selbenproject_id
gehören, das für die Erstellung der Übertragung verwendet wurde, und sollte alle erforderlichen Berechtigungen haben.PROJECT_ID
: Projekt-ID in Trusted Cloud by S3NS . Wenn--project_id
nicht bereitgestellt wird, um ein bestimmtes Projekt anzugeben, wird das Standardprojekt verwendet.REGION
: Speicherort dieser Übertragungskonfiguration.LIST_OF_TABLES
: eine Liste der zu übertragenden Einheiten. Verwenden Sie eine hierarchische Namensspezifikation –database.table
. In diesem Feld können Sie Tabellen mit regulären RE2-Ausdrücken angeben. Beispiel:db1..*
: gibt alle Tabellen in der Datenbank an.db1.table1;db2.table2
: eine Liste von Tabellen
AGENT_POOL_NAME
: Der Name des Agent-Pools, der zum Erstellen von Agents verwendet wird.DUMPER_BUCKET
: der Cloud Storage-Bucket, der die Dateihive-dumper-output.zip
enthält.MIGRATION_BUCKET
: Der GCS-Zielpfad, in den alle zugrunde liegenden Dateien geladen werden.Metadaten können entweder zu Dataproc Metastore oder BigLake Metastore migriert werden, wobei die zugrunde liegenden Daten in Cloud Storage gespeichert werden. Sie können das Ziel mit einem der folgenden Parameter angeben:
- Verwenden Sie zum Übertragen von Metadaten in Dataproc Metastore den Parameter
destination_dataproc_metastore
und geben Sie die URL zu Ihrem Metastore inDATAPROC_METASTORE
an. - Wenn Sie Metadaten stattdessen in den BigLake-Metastore übertragen möchten, verwenden Sie den Parameter
destination_bigquery_dataset
und geben Sie das BigQuery-Dataset inBIGLAKE_METASTORE
an.
- Verwenden Sie zum Übertragen von Metadaten in Dataproc Metastore den Parameter
TRANSLATION_OUTPUT_BUCKET
: (Optional) Geben Sie einen Cloud Storage-Bucket für die Übersetzungsausgabe an. Weitere Informationen finden Sie unter Übersetzungsausgabe verwenden.
Führen Sie diesen Befehl aus, um die Übertragungskonfiguration zu erstellen und die Übertragung des HDFS-Data Lakes zu starten. Übertragungen werden standardmäßig alle 24 Stunden ausgeführt. Sie können sie aber mit Optionen für die Übertragungsplanung konfigurieren.
Nach Abschluss der Übertragung werden Ihre Tabellen im Hadoop-Cluster zu MIGRATION_BUCKET
migriert.
Optionen für die Datenaufnahme
In den folgenden Abschnitten finden Sie weitere Informationen dazu, wie Sie Ihre HDFS-Datalake-Übertragungen konfigurieren können.
Inkrementelle Übertragungen
Wenn eine Übertragungskonfiguration mit einem wiederkehrenden Zeitplan eingerichtet wird, wird die Tabelle auf Trusted Cloud by S3NS bei jeder nachfolgenden Übertragung mit den neuesten Änderungen an der Quelltabelle aktualisiert. Beispielsweise werden alle Einfüge-, Lösch- oder Aktualisierungsvorgänge mit Schemaänderungen bei jeder Übertragung in Trusted Cloud by S3NS berücksichtigt.
Optionen für die Übertragungsplanung
Standardmäßig werden Übertragungen alle 24 Stunden ausgeführt. Wenn Sie konfigurieren möchten, wie oft Übertragungen ausgeführt werden, fügen Sie der Übertragungskonfiguration das Flag --schedule
hinzu und geben Sie einen Übertragungszeitplan mit der Syntax schedule
an.
Bei HDFS-Data-Lake-Übertragungen müssen zwischen den Übertragungsvorgängen mindestens 24 Stunden liegen.
Bei einmaligen Übertragungen können Sie der Übertragungskonfiguration das Flag end_time
hinzufügen, damit die Übertragung nur einmal ausgeführt wird.
Übersetzungsausgabe konfigurieren
Sie können für jede migrierte Tabelle einen eindeutigen Cloud Storage-Pfad und eine eindeutige Datenbank konfigurieren. Führen Sie dazu die folgenden Schritte aus, um eine YAML-Datei mit der Tabellenzuordnung zu generieren, die Sie in Ihrer Übertragungskonfiguration verwenden können.
Erstellen Sie im Verzeichnis
DUMPER_BUCKET
eine YAML-Konfigurationsdatei (mit dem Suffixconfig.yaml
), die Folgendes enthält:type: object_rewriter relation: - match: relationRegex: ".*" external: location_expression: "'gs://MIGRATION_BUCKET/' + table.schema + '/' + table.name"
- Ersetzen Sie
MIGRATION_BUCKET
durch den Namen des Cloud Storage-Bucket, der das Ziel für die migrierten Tabellendateien ist. Das Feldlocation_expression
ist ein CEL-Ausdruck (Common Expression Language).
- Ersetzen Sie
Erstellen Sie eine weitere YAML-Konfigurationsdatei (mit dem Suffix
config.yaml
) imDUMPER_BUCKET
, die Folgendes enthält:type: experimental_object_rewriter relation: - match: schema: SOURCE_DATABASE outputName: database: null schema: TARGET_DATABASE
- Ersetzen Sie
SOURCE_DATABASE
undTARGET_DATABASE
durch den Namen der Quelldatenbank und der Dataproc Metastore-Datenbank oder des BigQuery-Datasets, je nach ausgewähltem Metastore. Achten Sie darauf, dass das BigQuery-Dataset vorhanden ist, wenn Sie die Datenbank für den BigLake-Metastore konfigurieren.
Weitere Informationen zu dieser Konfigurations-YAML finden Sie unter Richtlinien zum Erstellen einer Konfigurations-YAML-Datei.
- Ersetzen Sie
Generieren Sie mit dem folgenden Befehl Tabellen, die die YAML-Datei zuordnen:
curl -d '{ "tasks": { "string": { "type": "HiveQL2BigQuery_Translation", "translation_details": { "target_base_uri": "TRANSLATION_OUTPUT_BUCKET", "source_target_mapping": { "source_spec": { "base_uri": "DUMPER_BUCKET" } }, "target_types": ["metadata"] } } } }' \ -H "Content-Type:application/json" \ -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows
Ersetzen Sie Folgendes:
TRANSLATION_OUTPUT_BUCKET
: (Optional) Geben Sie einen Cloud Storage-Bucket für die Übersetzungsausgabe an. Weitere Informationen finden Sie unter Übersetzungsausgabe verwenden.DUMPER_BUCKET
: Der Basis-URI für den Cloud Storage-Bucket, der diehive-dumper-output.zip
- und die YAML-Konfigurationsdatei enthält.TOKEN
: Das OAuth-Token. Sie können sie in der Befehlszeile mit dem Befehlgcloud auth print-access-token
generieren.PROJECT_ID
: das Projekt, in dem die Übersetzung verarbeitet werden soll.LOCATION
: der Ort, an dem der Job verarbeitet wird. Beispiel:eu
oderus
Status dieses Jobs überwachen Nach Abschluss wird für jede Tabelle in der Datenbank eine Zuordnungsdatei in einem vordefinierten Pfad in
TRANSLATION_OUTPUT_BUCKET
generiert.
HDFS-Data-Lake-Übertragungen überwachen
Nachdem Sie eine HDFS-Data-Lake-Übertragung geplant haben, können Sie den Übertragungsjob mit Befehlen des bq-Befehlszeilentools überwachen. Informationen zum Überwachen Ihrer Übertragungsjobs finden Sie unter Übertragungen ansehen.
Status der Tabellenmigration verfolgen
Sie können auch das Tool dwh-dts-status
ausführen, um den Status aller übertragenen Tabellen in einer Übertragungskonfiguration oder einer bestimmten Datenbank zu überwachen. Sie können auch das Tool dwh-dts-status
verwenden, um alle Übertragungskonfigurationen in einem Projekt aufzulisten.
Hinweise
Bevor Sie das Tool dwh-dts-status
verwenden können, müssen Sie Folgendes tun:
Laden Sie das
dwh-dts-status
-Tool herunter, indem Sie dasdwh-migration-tool
-Paket aus demdwh-migration-tools
-GitHub-Repository herunterladen.Authentifizieren Sie Ihr Konto für Trusted Cloud by S3NS mit dem folgenden Befehl:
gcloud auth application-default login
Weitere Informationen finden Sie unter Funktionsweise von Standardanmeldedaten für Anwendungen.
Prüfen Sie, ob der Nutzer die Rolle
bigquery.admin
undlogging.viewer
hat. Weitere Informationen zu IAM-Rollen finden Sie unter Referenz zur Zugriffssteuerung.
Alle Übertragungskonfigurationen in einem Projekt auflisten
Verwenden Sie den folgenden Befehl, um alle Übertragungskonfigurationen in einem Projekt aufzulisten:
./dwh-dts-status --list-transfer-configs --project-id=[PROJECT_ID] --location=[LOCATION]
Ersetzen Sie Folgendes:
PROJECT_ID
: die Trusted Cloud by S3NS Projekt-ID, unter der die Übertragungen ausgeführt werden.LOCATION
: Der Ort, an dem die Übertragungskonfiguration erstellt wurde.
Mit diesem Befehl wird eine Tabelle mit einer Liste von Namen und IDs von Übertragungskonfigurationen ausgegeben.
Status aller Tabellen in einer Konfiguration ansehen
Mit dem folgenden Befehl können Sie den Status aller Tabellen in einer Übertragungskonfiguration aufrufen:
./dwh-dts-status --list-status-for-config --project-id=[PROJECT_ID] --config-id=[CONFIG_ID] --location=[LOCATION]
Ersetzen Sie Folgendes:
PROJECT_ID
: die Trusted Cloud by S3NS Projekt-ID, unter der die Übertragungen ausgeführt werden.LOCATION
: Der Ort, an dem die Übertragungskonfiguration erstellt wurde.CONFIG_ID
: Die ID der angegebenen Übertragungskonfiguration.
Mit diesem Befehl wird eine Tabelle mit einer Liste der Tabellen und deren Übertragungsstatus in der angegebenen Übertragungskonfiguration ausgegeben. Der Übertragungsstatus kann einer der folgenden Werte sein: PENDING
, RUNNING
, SUCCEEDED
, FAILED
, CANCELLED
.
Status aller Tabellen in einer Datenbank ansehen
Mit dem folgenden Befehl können Sie den Status aller Tabellen aufrufen, die aus einer bestimmten Datenbank übertragen wurden:
./dwh-dts-status --list-status-for-database --project-id=[PROJECT_ID] --database=[DATABASE]
Ersetzen Sie Folgendes:
PROJECT_ID
: die Trusted Cloud by S3NS Projekt-ID, unter der die Übertragungen ausgeführt werden.DATABASE
:der Name der angegebenen Datenbank.
Mit diesem Befehl wird eine Tabelle mit einer Liste von Tabellen und deren Übertragungsstatus in der angegebenen Datenbank ausgegeben. Der Übertragungsstatus kann einer der folgenden Werte sein: PENDING
, RUNNING
, SUCCEEDED
, FAILED
, CANCELLED
.