Migrar metadados do metastore do Dataproc para o Lakehouse

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

  1. Verifique se há um serviço do metastore do Dataproc ativo como origem da migração.
  2. 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.
  3. 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.
  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

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:

  1. 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.
  2. Acionar a migração: execute o gcloud beta metastore services migrations start comando ou chame o método startMigration no serviço metastore do Dataproc para iniciar a migração.
  3. Verificar o status: monitore o progresso da migração usando o gcloud beta metastore services migrations describe comando ou verificando a execução de destino.
  4. 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 Dataproc
  • REGION: a região do serviço metastore do Dataproc
  • PROJECT_ID: seu Google Cloud ID do projeto
  • HIVE_CATALOG_ID: o ID do catálogo do Hive de destino
  • HIVE_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 destino
  • ICEBERG_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órios
  • PATH: o caminho no bucket para relatórios
  • PROJECT_ID: seu Google Cloud ID do projeto
  • HIVE_CATALOG_ID: o ID do catálogo do Hive de destino
  • HIVE_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 destino
  • ICEBERG_NAMESPACE_1, ICEBERG_NAMESPACE_2: os namespaces do Iceberg a serem migrados.
  • REGION: a região do serviço metastore do Dataproc
  • SERVICE_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 anterior
  • SERVICE_ID: o ID do serviço metastore do Dataproc
  • REGION: 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 projeto
  • REGION: a região do serviço metastore do Dataproc
  • SERVICE_ID: o ID do serviço metastore do Dataproc
  • MIGRATION_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ível MigrationSummary.
  • full_report.json: contém um relatório de migração detalhado e mais granular. Para mais informações, consulte CatalogReport.

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