Este documento explica como migrar metadados de um serviço do metastore do Dataproc para um endpoint do catálogo REST do Apache Iceberg ou um endpoint do catálogo do Hive, criado no Lakehouse sem fronteiras.
Casos de uso
- Modernização sem servidor:faça a transição de um metastore Hive (HMS) convencional para um catálogo totalmente gerenciado e com escalonamento automático, que elimina o overhead operacional do gerenciamento do metastore.
- Colaboração multi-mecanismo:ative o compartilhamento de dados entre mecanismos, incluindo Apache Spark, Apache Flink, Apache Hive e BigQuery, para que cientistas e analistas de dados possam trabalhar nas mesmas tabelas simultaneamente sem duplicação de arquivos.
- Integração direta com o BigQuery:consulte tabelas de código aberto diretamente do BigQuery com execução de alta performance.
- Governança unificada:consolide metadados em uma única fonte de verdade para simplificar a descoberta de dados e a aplicação consistente de políticas.
- Formatos de tabela modernos:adote formatos abertos avançados, como o Apache Iceberg, mantendo a compatibilidade total com as cargas de trabalho do Hive.
Antes de começar
- Verifique se há um serviço do metastore do Dataproc ativo como origem da migração.
- Verifique se o catálogo do Hive ou do Iceberg de destino existe e
inclui os buckets ou caminhos do Cloud Storage em que os dados e metadados da tabela de origem
residem (por exemplo, o bucket do armazém do metastore do Dataproc, como
gs://gcs-your-project-name-0825d7b3-0627-4637-8fd0-cc6271d00eb4/hive-warehouse).Se o catálogo de destino não incluir o local dos dados, a migração da tabela falhará porque o catálogo de destino não poderá registrar as tabelas. Para a criação do catálogo do Iceberg, consulte Configurar o endpoint do catálogo REST do Iceberg.
Para criar um catálogo do Hive, consulte Criar um catálogo do Hive do Lakehouse. - Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Verify that billing is enabled for your Google Cloud project.
Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
Funções exigidas
Para receber as permissões necessárias para acionar a migração, peça ao administrador para conceder a você os seguintes papéis do IAM no serviço metastore do Dataproc:
-
Iniciar a migração:
editor do metastore do Dataproc (
roles/metastore.editor) -
Criar catálogos do Hive ou do Iceberg:
administrador do BigLake (
roles/biglake.admin) -
Migrar metadados para catálogos de destino usando um projeto de destino:
administrador do BigLake (
roles/biglake.admin) no agente de serviço do metastore do Dataproc (service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com). -
Gravar relatórios de migração para o bucket de relatórios (se não estiver usando o bucket de artefatos de serviço):
administrador de objetos do Storage (
roles/storage.objectAdmin) no agente de serviço do metastore do Dataproc (service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
Como uma migração funciona
O processo de migração funciona da seguinte maneira:
- Escolha o catálogo de destino: selecione o endpoint do catálogo do Hive ou o endpoint do catálogo REST do Apache Iceberg para a migração.
- Acionar a migração: execute o
gcloud beta metastore services migrations startcomando ou chame o métodostartMigrationno serviço metastore do Dataproc para iniciar a migração. - Verificar o status: monitore o progresso da migração usando o
gcloud beta metastore services migrations describecomando ou verificando a execução de destino. - Analisar relatórios: analise os relatórios JSON detalhados gravados no caminho do Cloud Storage especificado para verificar os resultados.
Fazer uma migração
Para executar uma migração, acione o processo de migração e monitore o progresso dele.
Iniciar a migração
Para acionar a migração de metadados em um serviço metastore do Dataproc, use a CLI gcloud ou a API REST.
gcloud
Para iniciar a migração usando gcloud, execute o gcloud beta metastore
services migrations
start
comando:
gcloud beta metastore services migrations start SERVICE_ID \
--location=REGION \
--hive-catalog="projects/PROJECT_ID/catalogs/HIVE_CATALOG_ID" \
--hive-databases="HIVE_DB_1,HIVE_DB_2" \
--iceberg-catalog="projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID" \
--iceberg-namespaces="ICEBERG_NAMESPACE_1,ICEBERG_NAMESPACE_2" \
--async
Substitua:
SERVICE_ID: o ID do serviço metastore do DataprocREGION: a região do serviço metastore do DataprocPROJECT_ID: seu Google Cloud ID do projetoHIVE_CATALOG_ID: o ID do catálogo do Hive de destinoHIVE_DB_1,HIVE_DB_2: os bancos de dados do Hive a serem migrados.ICEBERG_CATALOG_ID: o ID do catálogo do Iceberg de destinoICEBERG_NAMESPACE_1,ICEBERG_NAMESPACE_2: os namespaces do Iceberg a serem migrados.
REST
Para acionar a migração de metadados usando a API REST, chame o
startMigration
método com uma
BigLakeMetastoreMigrationConfig
configuração:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"migrationExecution": {
"biglakeMetastoreMigrationConfig": {
"mode": "BACKFILL",
"dryRun": false,
"reportPath": "gs://BUCKET_NAME/PATH/",
"conflictPolicy": "SKIP",
"hiveConfig": {
"catalog": "projects/PROJECT_ID/catalogs/HIVE_CATALOG_ID",
"databases": ["HIVE_DB_1", "HIVE_DB_2"]
},
"icebergConfig": {
"catalog": "projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID",
"namespaces": ["ICEBERG_NAMESPACE_1", "ICEBERG_NAMESPACE_2"]
}
}
}
}' \
"https://metastore.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID:startMigration"
Substitua:
BUCKET_NAME: o nome do bucket do Cloud Storage para relatóriosPATH: o caminho no bucket para relatóriosPROJECT_ID: seu Google Cloud ID do projetoHIVE_CATALOG_ID: o ID do catálogo do Hive de destinoHIVE_DB_1,HIVE_DB_2: os bancos de dados do Hive a serem migrados.ICEBERG_CATALOG_ID: o ID do catálogo do Iceberg de destinoICEBERG_NAMESPACE_1,ICEBERG_NAMESPACE_2: os namespaces do Iceberg a serem migrados.REGION: a região do serviço metastore do DataprocSERVICE_ID: o ID do serviço metastore do Dataproc
Verificar a execução da migração
A solicitação inicia uma operação de longa duração
(LRO, na sigla em inglês) e retorna um ID de execução de migração exclusivo. É possível monitorar o progresso da execução usando a CLI gcloud ou a API REST:
gcloud
Para descrever a execução da migração usando gcloud, execute o gcloud beta
metastore services migrations
describe
comando:
gcloud beta metastore services migrations describe MIGRATION_EXECUTION_ID \
--service=SERVICE_ID \
--location=REGION
Substitua:
MIGRATION_EXECUTION_ID: o ID da execução da migração retornado na etapa anteriorSERVICE_ID: o ID do serviço metastore do DataprocREGION: a região do serviço metastore do Dataproc
REST
Para monitorar o progresso da execução usando a API REST, chame o
get
método nesse caminho de execução:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://metastore.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID/migrationExecutions/MIGRATION_EXECUTION_ID"
Substitua:
PROJECT_ID: seu Google Cloud ID do projetoREGION: a região do serviço metastore do DataprocSERVICE_ID: o ID do serviço metastore do DataprocMIGRATION_EXECUTION_ID: o ID da execução da migração retornado na etapa anterior
Relatório de migração detalhado
Após a conclusão da migração (preenchimento ou simulação), a ferramenta de migração grava
dois arquivos de relatório JSON detalhados com base no
MigrationReport
esquema no caminho do Cloud Storage de destino especificado em reportPath:
summary.json: contém a estrutura agregada de alto nívelMigrationSummary.full_report.json: contém um relatório de migração detalhado e mais granular. Para mais informações, consulteCatalogReport.
Limitações
- O catálogo de destino precisa incluir os buckets ou caminhos do Cloud Storage em que os dados e metadados da tabela de origem residem (como o bucket do armazém do metastore do Dataproc). Se o catálogo de destino não estiver configurado com o local do bucket de dados, o catálogo de destino não poderá registrar as tabelas e a migração da tabela falhará.
- A ferramenta oferece suporte apenas a um preenchimento único. As mudanças de metadados no metastore do Dataproc de origem após a migração não são propagadas automaticamente. É necessário executar a migração novamente para sincronizar o catálogo de destino com a origem.
- A migração está vinculada às limitações dos catálogos de destino. Se uma tabela do metastore do Dataproc contiver uma estrutura de esquema ou propriedade não compatível com o catálogo de destino (como tipos complexos), a migração dessa tabela específica falhará.
- As permissões do metastore do Dataproc para tabelas ou bancos de dados não são migradas para o Lakehouse.
A seguir
- Saiba mais sobre o catálogo de ambientes de execução do Lakehouse.
- Saiba como configurar o Spark e o Hive com o Lakehouse catálogo de ambientes de execução.
- Saiba como consultar tabelas do Iceberg com o catálogo de ambientes de execução do Lakehouse, o Spark e o BigQuery.