Criar um serviço de federação de metadados

Nesta página, explicamos como criar um serviço de federação de metadados para o metastore do Dataproc. Um serviço de federação permite acessar metadados armazenados em várias fontes de um único endpoint gRPC.

Para mais informações sobre como a federação funciona e as limitações dela, consulte Sobre a federação de metadados.

Antes de começar

Papéis necessários

Para receber as permissões necessárias para criar um serviço de federação e anexar um cluster do Serviço Gerenciado para Apache Spark, seguindo o princípio de privilégio mínimo, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos contêm as permissões necessárias para criar um serviço de federação e anexar um cluster do Serviço Gerenciado para Apache Spark, seguindo o princípio de privilégio mínimo. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para criar um serviço de federação e anexar um cluster do Serviço Gerenciado para Apache Spark, seguindo o princípio de privilégio mínimo:

  • Para criar um metastore do Dataproc: metastore.services.create na conta de usuário ou de serviço
  • Para listar, receber, criar, atualizar e excluir um serviço de federação: metastore.federations.create, metastore.federations.update, metastore.federations.delete, metastore.federations.get metastore.federations.list na conta de usuário ou de serviço
  • Para concluir operações de metadados em um metastore do Dataproc: metastore.services.get, metastore.services.use, metastore.databases.create, metastore.databases.update, metastore.databases.deletemetastore.databases.get,metastore.databases.list, metastore.databases.getIamPolicy, metastore.tables.create, metastore.tables.update, metastore.tables.delete, metastore.tables.get, metastore.tables.list, metastore.tables.getIamPolicy na conta de usuário ou de serviço
  • (Opcional) Para acessar conjuntos de dados do BigQuery: For more information, see BigQuery permissions na conta de usuário ou de serviço
  • (Opcional) Para acessar os data lakes do Knowledge Catalog (prévia): For more information, see Knowledge Catalog permissions na conta de usuário ou de serviço

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Para mais informações sobre papéis e permissões específicos do Dataproc Metastore, consulte Gerenciar o acesso ao Dataproc Metastore com o gerenciamento de identidade e acesso.

Criar um serviço de federação

As instruções a seguir mostram como criar um serviço de federação e anexá-lo a uma origem. Depois de concluir essas etapas, você poderá anexar o serviço de federação a um cluster do Serviço Gerenciado para Apache Spark.

Para saber mais sobre fontes de federação e limitações, consulte fontes de metadados.

Console

  1. No console do Google Cloud , abra a página Metastore do Dataproc:

    Abrir o metastore do Dataproc

  2. No menu de navegação do Serviço Gerenciado para Apache Spark, clique em Federação.

    A página de serviços do metastore federado é aberta.

  3. Na barra de menu da metastore Federada, clique em Criar.

    A página Criar serviço de federação é aberta.

  4. No campo Nome da federação, insira um nome exclusivo para o serviço.

    Para mais informações, consulte Convenção de nomenclatura de recursos.

  5. Selecione o local dos dados.

    Crie o serviço de federação nas mesmas regiões das fontes do Metastore do Dataproc.

  6. Selecione a versão do Hive.

  7. Para adicionar uma origem ao serviço de federação, clique em Adicionar uma origem.

    É possível adicionar uma ou mais fontes. A primeira origem adicionada a essa lista é definida automaticamente como o metastore principal. É possível atualizar a ordem das fontes depois da criação.

    1. Em Tipo de origem, selecione sua origem de federação.

      É possível escolher uma instância do Metastore do Dataproc, um projeto que contenha um ou mais conjuntos de dados do BigQuery ou um lake do Knowledge Catalog (prévia).

    2. No campo Origem, insira as seguintes informações:

      • Para um serviço do Dataproc Metastore.

        1. No campo Projeto selecionado, clique em Procurar e selecione o projeto que contém o metastore do Dataproc que você quer usar como fonte.

          Verifique se as fontes do metastore do Dataproc estão usando uma versão do Hive compatível com o serviço de federação. O metastore principal precisa usar uma versão do Hive maior ou igual ao serviço de federação.

        2. No menu suspenso Serviço metastore, selecione o metastore do Dataproc que você quer usar como origem.

        3. (Opcional) Marque a caixa de seleção Mostrar serviços de metastore fora da minha região. Isso lista o serviço do metastore do Dataproc de outras regiões.

      • Para o BigQuery. No campo Projeto selecionado, clique em Procurar e selecione o ID do projeto que contém o conjunto de dados do BigQuery.

      • Para o Knowledge Catalog (pré-lançamento). No campo Projeto selecionado, clique em Procurar e selecione o ID do projeto que contém o Lake do Knowledge Catalog.

    3. Clique em Concluído.

  8. Para criar e iniciar o serviço, clique em Enviar.

    Agora é possível anexar seu serviço de federação a um cluster do Serviço Gerenciado para Apache Spark.

CLI da gcloud

Para criar uma federação com o metastore do Dataproc, execute o comando a seguir.

gcloud metastore federations create FEDERATION \
  --location LOCATION \
  --backends RANK=BACKEND_METASTORE \
  --hive-metastore-version HIVE_VERSION

Substitua:

  • FEDERATION: o nome do serviço de federação do metastore do Dataproc.
  • LOCATION: a Google Cloud região em que a federação será criada.
  • RANK: um número de classificação para cada um dos seus metastores de back-end usados para resolver conflitos de nomes de banco de dados. O serviço de federação consulta primeiro os números de classificação mais baixa. Por exemplo, um metastore de back-end com uma classificação de 1 é consultado antes de um metastore com uma classificação de 2. Esse valor precisa ser um número inteiro. Por exemplo, --backends 1=first_backend_metastore, 2=second_backend_metastore.
  • BACKEND_METASTORE: o recurso relativo de cada metastore de back-end no seguinte formato: METASTORE_TYPE:METASTORE_NAME. Para serviços do metastore do Dataproc, use dpms:SERVICE_ID. O SERVICE_ID pode ser encontrado no seguinte local: projects/<project>/locations/<location>/services/<service-id>.
  • HIVE_VERSION: a versão do Hive Metastore (3.1.2 ou 2.3.6).

Atualizar um serviço de federação

As instruções a seguir mostram como atualizar um serviço de federação. Você pode concluir as seguintes tarefas:

  • Adicione uma origem a um serviço de federação.
  • Remova uma origem de um serviço de federação.
  • Mude a ordem das fontes contidas em um serviço de federação.
  • Exclui um serviço de federação permanentemente. Depois de excluir um serviço, todos os recursos dele serão liberados.

Console

https://cloud.google.com/dataproc-metastore/docs/create-federation

  1. No console do Google Cloud , abra a página Metastore do Dataproc:

    Abrir o metastore do Dataproc

  2. No menu de navegação do Serviço Gerenciado para Apache Spark, clique em Federação.

    A página de serviços do metastore federado é aberta.

  3. Na página de serviços da metastore federada, clique no nome do serviço que você quer atualizar.

    A página Detalhes do serviço é aberta.

  4. Na barra de menus, clique em Editar.

    A página Editar serviço é aberta.

  5. Escolha os valores que você quer atualizar.

  6. Para atualizar o serviço, clique em Enviar.

CLI da gcloud

Para atualizar uma federação com o metastore do Dataproc, execute o comando a seguir.

gcloud metastore federations update FEDERATION \
  --location=LOCATION \
  --backends RANK1=BACKEND_METASTORE1,RANK2=BACKEND_METASTORE2
  • FEDERATION: o nome do serviço de federação do metastore do Dataproc.
  • LOCATION: a região Google Cloud em que a federação será criada.
  • RANK: um número de classificação para cada um dos seus metastores de back-end usados para resolver conflitos de nomes de banco de dados. O serviço de federação consulta primeiro os números de classificação mais baixa. Por exemplo, um metastore de back-end com uma classificação de 1 é consultado antes de um metastore com uma classificação de 2. Esse valor precisa ser um número inteiro. Por exemplo, --backends 2=first_backend_metastore, 2=second_backend_metastore.
  • BACKEND_METASTORE: o recurso relativo de cada metastore de back-end no seguinte formato: METASTORE_TYPE:METASTORE_NAME. Para serviços do metastore do Dataproc, use dpms:SERVICE_ID. O SERVICE_ID pode ser encontrado no seguinte local: projects/<project>/locations/<location>/services/<service-id>.
  • HIVE_VERSION: a versão do Hive Metastore (3.1.2 ou 2.3.6).

Anexar um cluster do Serviço Gerenciado para Apache Spark a um serviço de federação

As instruções a seguir mostram como criar um cluster do Serviço Gerenciado para Apache Spark e anexar um endpoint de serviço de federação como metastore.

Antes de seguir estas instruções, conclua todas as etapas listadas em Antes de começar e crie um serviço de federação.

CLI da gcloud

Para criar um cluster do Serviço Gerenciado para Apache Spark e anexar um endpoint de federação, execute o seguinte comando gcloud Managed Service for Apache Spark clusters create.

 gcloud dataproc clusters create CLUSTER_NAME \
    --region=LOCATION \
    --project=PROJECT_ID \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --image-version=IMAGE_VERSION \
    --service-account=SERVICE_ACCOUNT \
    --optional-components=DOCKER \
    --initialization-actions=gs://metastore-init-actions/metastore-grpc-proxy/metastore-grpc-proxy.sh \
    --metadata="proxy-uri=FEDERATION_URI,hive-version=FEDERATION_VERSION" \
    --properties="hive:hive.metastore.uris=thrift://localhost:9083,hive:hive.metastore.warehouse.dir=WAREHOUSE_DIR"

Substitua:

  • CLUSTER_NAME: o nome do novo cluster do Serviço gerenciado para Apache Spark.
  • PROJECT_ID: o ID do projeto Google Cloud em que você está criando o cluster do Serviço Gerenciado para Apache Spark.
  • LOCATION: a região do seu cluster do Serviço Gerenciado para Apache Spark.
  • IMAGE_VERSION: a versão da imagem do Serviço Gerenciado para Apache Spark que você quer usar.

    Verifique se a imagem do Serviço Gerenciado para Apache Spark que você está usando neste comando é compatível com a versão do Hive usada com seu serviço de federação. Para mais informações, consulte a lista de versões de imagem do Serviço Gerenciado para Apache Spark.

  • SERVICE_ACCOUNT opcional: a conta de serviço que você está usando para criar o cluster do Serviço Gerenciado para Apache Spark. Se não for especificada, o cluster usará a conta de serviço padrão do Compute Engine.

  • FEDERATION_URI: o URI do endpoint do seu serviço de federação.

  • FEDERATION_VERSION: a versão do Hive que seu serviço de federação está usando.

  • WAREHOUSE_DIR: o diretório do data warehouse do metastore principal do Dataproc.

A seguir