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 do gRPC que você pode que você usará para acessar todos os seus metadados.
Por exemplo, usando a federação, você pode criar um cluster do Dataproc que expõe vários serviços do metastore do Dataproc por meio de uma em um único endpoint. Depois, é possível executar jobs de Big Data por meio de código aberto (OSS), como Spark ou Hive, para acessar seus metadados no vários 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.
- 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 fonte
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 seus próprios dados. Em vez disso, a federação serviço apenas exibe metadados de uma de suas 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, siga as instruções a seguir: restrições são aplicáveis:
- Os serviços de federação só estão disponíveis por endpoints gRPC. Para usar um Metastore do Dataproc com federação, crie seu metastore a 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 os papéis corretos do IAM para acessar o projeto que contém a conjuntos de dados do BigQuery.
- Adicione pelo menos um serviço do metastore do Dataproc como origem, junto com os 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.
Ordem da fonte
Seu serviço de federação processa solicitações de metadados em ordem de prioridade. Isso 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 a 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 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 tiver um nome de banco de dados e não criar ou
remover um banco de dados. A solicitação é roteada para a
instância do Dataproc Metastore com a classificação mais baixa. Algumas
exemplos de solicitações do Hive Metastore que não especificam um banco de dados são
set_ugi
ecreate_database
. - Se nenhum dos metastores contiver um banco de dados. O mecanismo OSS responde com o equivalente a um erro não encontrado.