Federação de metadados

A federação de metadados permite acessar os metadados armazenados em várias instâncias do metastore do Dataproc.

Para configurar a federação, crie um serviço de federação e configure várias instâncias do metastore do Dataproc como seus metastores de back-end. Em seguida, o serviço de federação expõe um único endpoint gRPC, que pode ser usado para acessar metadados em todas as instâncias do metastore.

Por exemplo, é possível criar um cluster do Dataproc e expor todos os serviços do metastore do Dataproc por meio de um único endpoint. Em seguida, é possível executar jobs de Big Data com mecanismos de software de código aberto (OSS), como Spark ou Hive, para acessar os metadados em várias instâncias do metastore.

Como funciona a federação

As cargas de trabalho de Big Data do OSS, executadas no Spark ou no Hive, enviam solicitações para a API Hive Metastore para buscar metadados no ambiente de execução. Ao enviar solicitações, a interface Hive Metastore é compatível com os 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 tempo de execução, quando o serviço de federação recebe uma solicitação, ele conclui uma das seguintes ações:

  • Se a solicitação tiver um nome de banco de dados, ela será roteada para o metastore de back-end que contém o banco de dados. Se mais de um metastore tiver o mesmo nome de banco de dados, a solicitação será encaminhada ao metastore com a classificação mais baixa na ordem de origem, também conhecida como metastore principal.
  • Se a solicitação não contiver um nome de banco de dados, ela será roteada para o metastore mais baixo na ordenação de origem.
  • Se nenhum dos metastores contiver um banco de dados, o mecanismo do OSS responderá com o equivalente a um erro não encontrado.

Restrições

As restrições a seguir se aplicam aos serviços de federação:

  • Os serviços de federação só estão disponíveis por meio de endpoints gRPC. É preciso criar os serviços do metastore do Dataproc com endpoints gRPC para incluí-los em um serviço de federação.
  • Os serviços de federação precisam estar localizados na mesma região de todos os metastores associados. Por exemplo, se você criar o serviço de federação em us-central1, também precisará criar seus metastores em us-central1.

Origens de metadados

Ao criar um serviço de federação, você precisa adicionar uma origem de metadados. As seguintes restrições se aplicam às 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 só envia metadados de uma origem.
  • Um serviço de federação não pode ser uma fonte de metadados em outro serviço desse tipo.

Tipos de fonte

Use as seguintes fontes para preencher metadados no seu serviço de federação:

  • Um serviço do metastore do Dataproc

Ordem de origem

O serviço de federação processa solicitações de metadados em ordem de prioridade. Esse conceito é conhecido como classificação de origem.

Quando você envia uma solicitação ao serviço de federação, ela verifica a ordem da origem e decide qual metastore chamar para retornar os metadados aplicáveis.

O metastore com a classificação de classificação de origem mais baixa (ou seja, o primeiro da lista) é chamado de metastore principal. Se uma solicitação for enviada ao serviço de federação que não especifica um banco de dados, ela será enviada ao metastore principal. Alguns exemplos de solicitações do metastore Hive que não especificam um banco de dados são set_ugi e create_database.

Antes de começar

Controle de acesso

Para usar um serviço de federação, você precisa de metastore.federation.* permissões do IAM para concluir as seguintes ações:

  • listar e receber federações do metastore do Dataproc
  • criar e atualizar federações do metastore do Dataproc
  • excluir federações do metastore do Dataproc

A conta de usuário ou de serviço usada para acessar os metadados pelo serviço de federação deve ter os seguintes papéis do IAM:

  • Para acessar o serviço de federação, use o papel roles/metastore.federationAccessor.
  • Para concluir as operações de metadados em um metastore do Dataproc configurado com um serviço de federação, adicione os dois papéis a seguir:

Para mais informações, consulte IAM e Dataproc de controle de 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 ao serviço do metastore do Dataproc.

Para criar um serviço de federação, você precisa ter criado um ou mais serviços do metastore do Dataproc.

Console

  1. No console, abra a página do metastore do Dataproc:

    Abra o metastore do Dataproc no console

  2. No menu de navegação do Dataproc, clique em Federação.

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

  3. No menu de navegação do metastore Federated, clique em Create.

    A página Criar serviço federado é aberta.

  4. No campo Nome do serviço, insira um nome exclusivo para o serviço.

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

  5. Selecione o Local.

    Confira se a região do serviço de federação é a mesma do metastore principal.

  6. Selecione a Versão do Hive.

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

    Especifique o ID do projeto, a região e o ID do serviço de um serviço do metastore do Dataproc.

    É possível adicionar uma ou mais origens. A primeira fonte adicionada a esta lista é definida automaticamente como seu metastore principal. É possível atualizar a ordem das fontes após a criação.

    Confira se o metastore principal está usando uma versão do Hive compatível com seu serviço de federação. O metastore principal precisa usar uma versão do Hive maior ou igual ao serviço de federação.

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

Atualizar um serviço de federação

As instruções a seguir mostram como atualizar um serviço de federação.

Ao atualizar um serviço de federação, você pode concluir as seguintes tarefas:

  • Adicione uma origem do metastore do Dataproc a um serviço de federação.
  • Remova uma origem do metastore do Dataproc de um serviço de federação.
  • Altere a ordem de origem dos metastores do Dataproc contidos em uma federação.
  • Excluir uma federação permanentemente. Depois que você exclui uma federação, todos os recursos dela são liberados.

Console

  1. No console, abra a página do metastore do Dataproc:

    Abra o metastore do Dataproc no console

  2. No menu de navegação do Dataproc, clique em Federação.

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

  3. Na página Serviços de metastore federados, clique no nome do serviço federado que você gostaria de atualizar.

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

  4. Na barra de menus, clique em Editar.

    A página Editar serviço é aberta.

  5. Escolha os valores atualizados do parâmetro de federação.

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

Anexar um cluster do Dataproc a um serviço de federação

As instruções a seguir mostram como criar um cluster do Dataproc e anexar um endpoint de federação como seu metastore. Antes de iniciar estas instruções, conclua as seguintes tarefas:

gcloud

Para criar um cluster do Dataproc e anexar um endpoint de federação, execute o seguinte comando gcloud dataproc 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;
  • PROJECT_ID: o ID do projeto em que você está criando o cluster do Dataproc.
  • LOCATION: a região do cluster do Dataproc.
  • IMAGE_VERSION: a versão da imagem Dataproc.
  • SERVICE_ACCOUNT: a conta de serviço que você está usando para criar o cluster do Dataproc. Se não for especificado, o cluster usará sua conta de serviço padrão do Compute Engine.
  • FEDERATION_URI: o URI do endpoint do serviço de federação.
  • FEDERATION_VERSION: a versão do Hive do seu serviço de federação.
  • WAREHOUSE_DIR: o diretório de armazenamento do metastore principal.

A seguir