Esegui la migrazione delle tabelle da un data lake HDFS
Questo documento mostra come eseguire la migrazione delle tabelle del data lake Apache Hadoop Distributed File System (HDFS) a Trusted Cloud.
Puoi utilizzare il connettore di migrazione del data lake HDFS in BigQuery Data Transfer Service per eseguire la migrazione delle tabelle Hive e Iceberg da varie distribuzioni Hadoop, sia on-premise che in ambienti cloud, in Trusted Cloud.
Con il connettore del data lake HDFS, puoi registrare le tabelle del data lake HDFS sia con Dataproc Metastore che con BigLake Metastore utilizzando Cloud Storage come spazio di archiviazione sottostante per i tuoi file.
Il seguente diagramma fornisce una panoramica della procedura di migrazione delle tabelle dal cluster Hadoop.
Limitazioni
I trasferimenti del data lake HDFS sono soggetti alle seguenti limitazioni:
- Per eseguire la migrazione delle tabelle Iceberg, devi registrarle con il metastore BigLake per consentire l'accesso in scrittura per i motori open source (come Spark o Flink) e l'accesso in lettura per BigQuery.
- Per eseguire la migrazione delle tabelle Hive, devi registrarle con Dataproc Metastore per consentire l'accesso in scrittura per i motori open source e l'accesso in lettura per BigQuery.
- Devi utilizzare lo strumento a riga di comando bq per eseguire la migrazione di una tabella del data lake HDFS a BigQuery.
Prima di iniziare
Prima di pianificare un trasferimento del data lake HDFS, devi eseguire le seguenti operazioni:
Crea un bucket Cloud Storage per i file migrati
Crea un bucket Cloud Storage che sarà la destinazione dei file del data lake di cui è stata eseguita la migrazione. Questo bucket è
indicato in questo documento come MIGRATION_BUCKET
.
Genera il file di metadati per Apache Hive
Esegui lo strumento dwh-migration-dumper
per estrarre i metadati
per Apache Hive. Lo strumento genera un file denominato hive-dumper-output.zip
in un bucket Cloud Storage, indicato in questo documento come DUMPER_BUCKET
.
Abilita API
Abilita le seguenti API nel tuo progettoTrusted Cloud :
- API Data Transfer
- API Storage Transfer
Un agente di servizio viene creato quando abiliti l'API Data Transfer.
Configura autorizzazioni
- Crea un account di servizio e concedigli il ruolo Amministratore BigQuery (
roles/bigquery.admin
). Questo account di servizio viene utilizzato per creare la configurazione del trasferimento. - Quando viene abilitata l'API Data Transfer, viene creato un agente di servizio (P4SA). Concedi
i seguenti ruoli:
roles/metastore.metadataOwner
roles/storagetransfer.admin
roles/serviceusage.serviceUsageConsumer
roles/storage.objectViewer
- Se esegui la migrazione dei metadati per le tabelle BigLake
Iceberg, concedi i ruoli
roles/storage.objectAdmin
eroles/bigquery.admin
anzichéroles/storage.objectViewer
.
- Se esegui la migrazione dei metadati per le tabelle BigLake
Iceberg, concedi i ruoli
Concedi all'agente di servizio il ruolo
roles/iam.serviceAccountTokenCreator
con il seguente comando: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
Configura Storage Transfer Agent
Per configurare l'agente di trasferimento dello spazio di archiviazione richiesto per un trasferimento del data lake HDFS:
- Configura le autorizzazioni per eseguire l'agente di trasferimento di archiviazione sul tuo cluster Hadoop.
- Installa Docker sulle macchine agenti on-premise.
- Crea un pool di agenti Storage Transfer Service nel tuo progetto Trusted Cloud by S3NS .
- Installa gli agenti sulle macchine agenti on-premise.
Pianifica un trasferimento del data lake HDFS
Per pianificare un trasferimento del data lake HDFS, inserisci il comando bq mk
e fornisci il flag di creazione del trasferimento --transfer_config
:
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/" }'
Sostituisci quanto segue:
TRANSFER_NAME
: il nome visualizzato per la configurazione del trasferimento. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.SERVICE_ACCOUNT
: il nome del account di servizio utilizzato per autenticare il trasferimento. Il account di servizio deve essere di proprietà dello stessoproject_id
utilizzato per creare il trasferimento e deve disporre di tutte le autorizzazioni richieste.PROJECT_ID
: il tuo ID progetto Trusted Cloud by S3NS . Se--project_id
non viene fornito per specificare un progetto particolare, viene utilizzato il progetto predefinito.REGION
: la posizione di questa configurazione di trasferimento.LIST_OF_TABLES
: un elenco di entità da trasferire. Utilizza una specifica di denominazione gerarchica:database.table
. Questo campo supporta l'espressione regolare RE2 per specificare le tabelle. Ad esempio:db1..*
: specifica tutte le tabelle nel databasedb1.table1;db2.table2
: un elenco di tabelle
AGENT_POOL_NAME
: il nome del pool di agenti utilizzato per la creazione degli agenti.DUMPER_BUCKET
: il bucket Cloud Storage contenente il filehive-dumper-output.zip
.MIGRATION_BUCKET
: percorso GCS di destinazione in cui verranno caricati tutti i file sottostanti.I metadati possono essere migrati a Dataproc Metastore o BigLake Metastore con i dati sottostanti archiviati in Cloud Storage. Puoi specificare la destinazione utilizzando uno dei seguenti parametri:
- Per trasferire i metadati a Dataproc Metastore, utilizza il parametro
destination_dataproc_metastore
e specifica l'URL del metastore inDATAPROC_METASTORE
. - Per trasferire i metadati a BigLake Metastore, utilizza il parametro
destination_bigquery_dataset
e specifica il set di dati BigQuery inBIGLAKE_METASTORE
.
- Per trasferire i metadati a Dataproc Metastore, utilizza il parametro
TRANSLATION_OUTPUT_BUCKET
: (facoltativo) specifica un bucket Cloud Storage per l'output della traduzione. Per ulteriori informazioni, consulta la sezione Utilizzare l'output di traduzione.
Esegui questo comando per creare la configurazione del trasferimento e avviare il trasferimento del data lake HDFS. Per impostazione predefinita, i trasferimenti vengono eseguiti ogni 24 ore, ma possono essere configurati con le opzioni di pianificazione del trasferimento.
Al termine del trasferimento, le tabelle nel cluster Hadoop verranno
migrate a MIGRATION_BUCKET
.
Opzioni di importazione dei dati
Le sezioni seguenti forniscono ulteriori informazioni su come configurare i trasferimenti del data lake HDFS.
Trasferimenti incrementali
Quando una configurazione del trasferimento viene impostata con una pianificazione ricorrente, ogni trasferimento successivo aggiorna la tabella su Trusted Cloud by S3NS con gli ultimi aggiornamenti apportati alla tabella di origine. Ad esempio, tutte le operazioni di inserimento, eliminazione o aggiornamento con modifiche allo schema vengono riflesse in Trusted Cloud by S3NS a ogni trasferimento.
Opzioni di pianificazione del trasferimento
Per impostazione predefinita, i trasferimenti sono pianificati per
essere eseguiti ogni 24 ore. Per configurare la frequenza di esecuzione dei trasferimenti,
aggiungi il flag --schedule
alla configurazione del trasferimento e specifica una pianificazione
del trasferimento utilizzando la sintassi schedule
.
I trasferimenti del data lake HDFS devono avere un intervallo minimo di 24 ore
tra le esecuzioni del trasferimento.
Per i trasferimenti una tantum, puoi aggiungere il
flag end_time
alla configurazione del trasferimento per eseguire il
trasferimento una sola volta.
Configura l'output della traduzione
Puoi configurare un percorso Cloud Storage e un database unici per ogni tabella migrata. Per farlo, segui questi passaggi per generare un file YAML di mappatura delle tabelle che puoi utilizzare nella configurazione del trasferimento.
Crea un file YAML di configurazione (con suffisso
config.yaml
) nella directoryDUMPER_BUCKET
che contenga quanto segue:type: object_rewriter relation: - match: relationRegex: ".*" external: location_expression: "'gs://MIGRATION_BUCKET/' + table.schema + '/' + table.name"
- Sostituisci
MIGRATION_BUCKET
con il nome del bucket Cloud Storage che è la destinazione dei file delle tabelle di cui è stata eseguita la migrazione. Il campolocation_expression
è un'espressione Common Expression Language (CEL).
- Sostituisci
Crea un altro file YAML di configurazione (con suffisso
config.yaml
) nella directoryDUMPER_BUCKET
che contenga quanto segue:type: experimental_object_rewriter relation: - match: schema: SOURCE_DATABASE outputName: database: null schema: TARGET_DATABASE
- Sostituisci
SOURCE_DATABASE
eTARGET_DATABASE
con il nome del database di origine e del database Dataproc Metastore o del set di dati BigQuery a seconda del metastore scelto. Assicurati che il set di dati BigQuery esista se stai configurando il database per BigLake Metastore.
Per saperne di più su questi file YAML di configurazione, consulta Linee guida per la creazione di un file YAML di configurazione.
- Sostituisci
Genera il file YAML di mappatura delle tabelle utilizzando questo comando:
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
Sostituisci quanto segue:
TRANSLATION_OUTPUT_BUCKET
: (Facoltativo) Specifica un bucket Cloud Storage per l'output della traduzione. Per ulteriori informazioni, consulta la sezione Utilizzare l'output di traduzione.DUMPER_BUCKET
: l'URI di base per il bucket Cloud Storage che contiene il file YAML dihive-dumper-output.zip
e di configurazione.TOKEN
: il token OAuth. Puoi generarlo nella riga di comando con il comandogcloud auth print-access-token
.PROJECT_ID
: il progetto in cui elaborare la traduzione.LOCATION
: la località in cui viene elaborato il job. Ad esempio,eu
ous
.
Monitora lo stato di questo job. Al termine, viene generato un file di mappatura per ogni tabella del database all'interno di un percorso predefinito in
TRANSLATION_OUTPUT_BUCKET
.
Monitorare i trasferimenti del data lake HDFS
Dopo aver pianificato un trasferimento del data lake HDFS, puoi monitorare il job di trasferimento con i comandi dello strumento a riga di comando bq. Per informazioni sul monitoraggio dei job di trasferimento, vedi Visualizzare i trasferimenti.
Monitorare lo stato della migrazione delle tabelle
Puoi anche eseguire lo strumento
dwh-dts-status
per monitorare lo stato di tutte le tabelle trasferite all'interno
di una configurazione di trasferimento o di un database specifico. Puoi anche utilizzare lo strumento dwh-dts-status
per elencare tutte le configurazioni di trasferimento in un progetto.
Prima di iniziare
Prima di poter utilizzare lo strumento dwh-dts-status
, segui questi passaggi:
Scarica lo strumento
dwh-dts-status
scaricando il pacchettodwh-migration-tool
dal repository GitHubdwh-migration-tools
.Autentica il tuo account su Trusted Cloud by S3NS con questo comando:
gcloud auth application-default login
Per saperne di più, consulta Come funzionano le credenziali predefinite dell'applicazione.
Verifica che l'utente disponga del ruolo
bigquery.admin
elogging.viewer
. Per maggiori informazioni sui ruoli IAM, consulta Riferimento al controllo dell'accesso.
Elenco di tutte le configurazioni di trasferimento in un progetto
Per elencare tutte le configurazioni di trasferimento in un progetto, utilizza il seguente comando:
./dwh-dts-status --list-transfer-configs --project-id=[PROJECT_ID] --location=[LOCATION]
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto Trusted Cloud by S3NS che esegue i trasferimenti.LOCATION
: la località in cui è stata creata la configurazione del trasferimento.
Questo comando restituisce una tabella con un elenco di nomi e ID di configurazione del trasferimento.
Visualizza gli stati di tutte le tabelle in una configurazione
Per visualizzare lo stato di tutte le tabelle incluse in una configurazione di trasferimento, utilizza il seguente comando:
./dwh-dts-status --list-status-for-config --project-id=[PROJECT_ID] --config-id=[CONFIG_ID] --location=[LOCATION]
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto Trusted Cloud by S3NS che esegue i trasferimenti.LOCATION
: la località in cui è stata creata la configurazione del trasferimento.CONFIG_ID
: l'ID della configurazione di trasferimento specificata.
Questo comando restituisce una tabella con un elenco di tabelle e il relativo stato di trasferimento
nella configurazione di trasferimento specificata. Lo stato del trasferimento può essere uno dei
seguenti valori: PENDING
, RUNNING
, SUCCEEDED
, FAILED
, CANCELLED
.
Visualizzare gli stati di tutte le tabelle di un database
Per visualizzare lo stato di tutte le tabelle trasferite da un database specifico, utilizza il seguente comando:
./dwh-dts-status --list-status-for-database --project-id=[PROJECT_ID] --database=[DATABASE]
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto Trusted Cloud by S3NS che esegue i trasferimenti.DATABASE
:il nome del database specificato.
Questo comando restituisce una tabella con un elenco di tabelle e il relativo stato di trasferimento
nel database specificato. Lo stato del trasferimento può essere uno dei
seguenti valori: PENDING
, RUNNING
, SUCCEEDED
, FAILED
, CANCELLED
.