Sobre a federação de metadados

A federação de metadados é um serviço que permite acessar várias fontes de metadados em um único endpoint.

Para configurar a federação, crie um serviço de federação e configure as origens de metadados. Depois, o serviço expõe um único endpoint do gRPC que pode ser usado para acessar todos os metadados.

Por exemplo, usando a federação, é possível criar um cluster do Dataproc que expõe vários serviços do metastore do Dataproc por meio de um único endpoint. Em seguida, é possível executar jobs de Big Data por meio de mecanismos de software de código aberto (OSS, na sigla em inglês), como Spark ou Hive, para acessar seus metadados em vários metastores.

Como a federação funciona

As cargas de trabalho de Big Data do OSS executadas no Spark ou no Hive enviam solicitações à API Hive Metastore para buscar metadados no ambiente de execução.

  • A interface do metastore do Hive é compatível com métodos de leitura e gravação. O serviço de federação expõe uma versão gRPC da interface do metastore Hive.
  • No ambiente de execução, quando o serviço de federação recebe uma solicitação, ele verifica a ordenação de origem para recuperar os metadados apropriados.

Origens de metadados

Ao criar um serviço de federação, você precisa adicionar uma origem de metadados. É possível usar as seguintes origens como metastores de back-end:

  • Uma instância do metastore do Dataproc.
  • Um projeto que contém um ou mais conjuntos de dados do BigQuery.
  • Um lake do Dataplex (pré-lançamento).

Restrições de fonte

Na seção a seguir, listamos as restrições que você precisa seguir ao usar várias fontes de metadados.

Todas as origens

As restrições a seguir se aplicam a todas as origens de metadados:

  • Um serviço de federação não contém seus próprios dados. Em vez disso, o serviço de federação apenas exibe metadados de uma das fontes de metadados.
  • Um serviço de federação não pode ser uma fonte de metadados em outro serviço de federação.

Dataproc Metastore

Se você estiver usando um metastore do Dataproc como origem, as seguintes restrições se aplicarão:

  • Os serviços de federação estão disponíveis apenas por meio de endpoints gRPC. Para usar um metastore do Dataproc com federação, crie seu metastore com um endpoint gRPC.
  • Os serviços de federação podem ser anexados aos serviços do metastore do Dataproc de região única em qualquer região única. Os serviços de federação não são compatíveis com serviços do metastore do Dataproc multirregionais.

BigQuery

Se você estiver usando um projeto que contém conjuntos de dados do BigQuery como origem, precisará atender às seguintes condições:

  • Conceda os papéis corretos do IAM para acessar o projeto que contém os conjuntos de dados do BigQuery.
  • Adicione pelo menos um serviço do Dataproc Metastore como origem, junto com seus conjuntos de dados do BigQuery.

Lakes do Dataplex

  • Conceda um papel do IAM que contenha a permissão dataplex.lakes.get.
  • Adicione pelo menos um serviço do metastore do Dataproc como fonte com o lake do Dataplex.

Ordem da fonte

Seu serviço de federação processa solicitações de metadados em ordem de prioridade. Esse conceito é conhecido como ordenação de origem. No ambiente de execução, quando o serviço de federação recebe uma solicitação, ele verifica a ordem da origem e conclui uma das seguintes ações:

  • Se a solicitação contiver um nome de banco de dados. A solicitação é roteada para o metastore de back-end que contém o nome do banco de dados. Se mais de um metastore contiver o mesmo nome de banco de dados, a solicitação será roteada para o metastore com a classificação mais baixa.
  • Se a solicitação criar ou descartar um banco de dados: A solicitação é encaminhada para o metastore com a classificação mais baixa.
  • Se a solicitação não contiver um nome de banco de dados e não criar ou descartar um banco de dados. A solicitação é encaminhada para a instância do metastore do Dataproc com a classificação mais baixa. Alguns exemplos de solicitações do Hive Metastore que não especificam um banco de dados são set_ugi e create_database.
  • Se nenhum dos metastores contiver um banco de dados. O mecanismo OSS responde com o equivalente a um erro não encontrado.

A seguir