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, em seguida, configure suas fontes de metadados. Depois, o serviço expõe um único endpoint 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 um endpoint único. Depois, é possível executar jobs de Big Data usando mecanismos de software de código aberto (OSS, na sigla em inglês), como o Spark ou o Hive, para acessar seus metadados em várias metastores.
Como a federação funciona
Cargas de trabalho de Big Data do OSS executadas no Spark ou no Hive enviam solicitações para a API Metastore do Hive para buscar metadados no ambiente de execução.
- A interface do Metastore do Hive oferece suporte a métodos de leitura e gravação. O serviço de federação expõe uma versão gRPC da interface do metastore do Hive.
- No momento da execução, quando o serviço de federação recebe uma solicitação, ele verifica a classificação da origem para recuperar os metadados apropriados.
Origens de metadados
Ao criar um serviço de federação, é necessário adicionar uma origem de metadados. É possível usar as seguintes origens como metalojas 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 origem
A seção a seguir lista as restrições que você precisa seguir ao usar várias origens 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 os próprios dados. Em vez disso, o serviço de federação serve apenas 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 serão aplicadas:
- Os serviços de federação só estão disponíveis por endpoints gRPC. Para usar o metastore do Dataproc com a federação, crie o metastore com um endpoint gRPC.
- Os serviços de federação podem ser anexados a serviços do Metastore do Dataproc em uma única região. Os serviços de federação não oferecem suporte a serviços do metastore do Dataproc em várias regiões.
BigQuery
Se você estiver usando um projeto que contém conjuntos de dados do BigQuery como fonte, será necessário atender às seguintes condições:
- Conceda as funções corretas do IAM para acessar o projeto que contém os conjuntos de dados do BigQuery.
- Adicione pelo menos um serviço do Metastore do Dataproc 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 origem, junto com o Dataplex Lake.
Ordenação da origem
O serviço de federação processa solicitações de metadados em ordem de prioridade. Esse conceito é conhecido como ordenação de origem. No momento da execução, quando o serviço de federação recebe uma solicitação, ele verifica a ordem da origem e realiza uma das seguintes ações:
- Se a solicitação contiver um nome de banco de dados. A solicitação é roteada para a metastore de back-end que contém o nome do banco de dados. Se mais de uma metastore tiver o mesmo nome de banco de dados, a solicitação será roteada para a metastore com a classificação mais baixa.
- Se a solicitação cria ou exclui um banco de dados. A solicitação é encaminhada para a 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 excluir um banco de dados. A solicitação é roteada para a
instância do Dataproc Metastore com a classificação mais baixa. Alguns
exemplos de solicitações do metastore do Hive que não especificam um banco de dados são
set_ugi
ecreate_database
. - Se nenhuma das metastores contiver um banco de dados. O mecanismo OSS responde com o equivalente a um erro não encontrado.