Partilhar via


Federação de metastore do Hive: habilitar o Unity Catalog para controlar tabelas registradas em um metastore do Hive

Importante

Este recurso está no Public Preview.

Este artigo apresenta a federação de metastore do Hive, um recurso que permite que o Unity Catalog controle tabelas armazenadas em um metastore do Hive. Você pode federar um metastore externo do Hive ou um metastore interno herdado do Azure Databricks Hive.

A federação de metastore do Hive pode ser usada para as seguintes situações:

  • Como uma etapa no caminho de migração para o Unity Catalog, permitindo a migração incremental sem adaptação de código, com algumas de suas cargas de trabalho continuando a usar dados registrados em seu metastore do Hive enquanto outras são migradas.

    Este caso de uso é mais adequado para organizações que usam um metastore interno herdado do Azure Databricks Hive atualmente, porque os metastores internos federados do Hive permitem cargas de trabalho de leitura e gravação.

  • Para fornecer um modelo híbrido de longo prazo para organizações que devem manter alguns dados em um metastore do Hive juntamente com seus dados registrados no Unity Catalog.

    Este caso de uso é mais adequado para organizações que usam um metastore externo de Hive, porque os catálogos federados destes metastores de Hive são de leitura apenas.

Diagrama que introduz a federação do Hive

Visão geral da federação de metastore do Hive

Na federação de metastore do Hive, cria-se uma conexão do espaço de trabalho do Azure Databricks para o metastore do Hive, e o Unity Catalog varre o metastore do Hive para preencher um catálogo federado , permitindo que a sua organização trabalhe com as tabelas do metastore do Hive no Unity Catalog, fornecendo controle de acesso centralizado, rastreamento de proveniência, pesquisa e muito mais.

Os metastores federados do Hive externos ao seu espaço de trabalho do Azure Databricks permitem leituras usando o Catálogo Unity. Os metastores internos do Hive permitem leituras e gravações, atualizando os metadados do Hive, bem como os metadados do Unity Catalog quando você escreve.

Quando você consulta ativos federados do metastore do Hive, o Unity Catalog fornece a camada de governança, executando funções como verificações de controle de acesso e auditoria, enquanto as consultas são executadas usando a semântica do metastore do Hive. Por exemplo, se um usuário consultar uma tabela armazenada no formato Parquet em um catálogo federado, então:

  • O Unity Catalog verifica se o usuário tem acesso à tabela e infere a linhagem para a consulta.
  • A consulta em si é executada no metastore subjacente do Hive, aproveitando os metadados mais recentes e as informações de partição armazenadas lá.

Diagrama que mostra a relação entre as cargas de trabalho HMS, Unity Catalog e Databricks em um cenário de federação do Hive

Como a federação de metastore do Hive se compara ao uso de tabelas externas do Unity Catalog?

Unity Catalog tem a capacidade de criar tabelas externas, pegando dados que já existem em um local de armazenamento em nuvem arbitrário e registrando-os no Unity Catalog como uma tabela. Esta seção explora as diferenças entre tabelas de metastore do Hive externas e federadas.

Ambos os tipos de tabela têm as seguintes propriedades:

  • Pode ser usado para registrar um local arbitrário no armazenamento em nuvem como uma tabela.
  • Pode aplicar permissões do Catálogo Unity e controles de acesso refinados.
  • Pode ser visualizado em linhagem para consultas que fazem referência a eles.

Somente as tabelas federadas têm as seguintes propriedades:

  • São descobertos automaticamente com base no rastreamento de um metastore do Hive. Assim que as tabelas são criadas no metastore do Hive, elas são exibidas e ficam disponíveis para consulta no catálogo federado do Unity Catalog.
  • Permita que tabelas sejam definidas com semântica do Hive, como SerDes do Hive e partições.
  • Permitir que as tabelas tenham caminhos sobrepostos com outras tabelas em catálogos federados.
  • Permita que as tabelas sejam posicionadas em locais de raiz DBFS .
  • Inclua visões definidas no metastore do Hive.

Desta forma, pode considerar as tabelas de metastore federadas do Hive como oferecendo compatibilidade com versões anteriores do metastore do Hive, permitindo que tarefas utilizem exclusivamente a semântica do Hive, mas com governança proporcionada pelo Unity Catalog.

No entanto, alguns recursos do Catálogo Unity não estão disponíveis em tabelas federadas, por exemplo:

  • Recursos disponíveis apenas para tabelas gerenciadas do Unity Catalog, como otimização preditiva.
  • Pesquisa vetorial, Delta Sharing, monitorização do Lakehouse e tabelas online.
  • Algumas funcionalidades de armazenamento de recursos, incluindo criação de armazenamento de recursos, criação de serviço de modelo, criação de especificações de recursos, registro em log de modelo e pontuação em lote.

O desempenho pode ser marginalmente pior do que as cargas de trabalho no Unity Catalog ou no metastore do Hive porque tanto o metastore do Hive quanto o Unity Catalog estão no caminho de consulta de uma tabela federada.

Para obter mais informações sobre a funcionalidade suportada, consulte Requisitos, recursos suportados e limitações.

O que significa escrever num catálogo de metastore federado do Hive no Azure Databricks?

As gravações são suportadas apenas para os metastores internos federados do Hive, e não para os metastores externos do Hive.

As gravações em metastores federados são de dois tipos:

  • Operações DDL, como CREATE TABLE, ALTER TABLEe DROP TABLE.

    As operações DDL são refletidas de forma síncrona no metastore subjacente do Hive. Por exemplo, a execução de uma instrução CREATE TABLE cria a tabela no metastore do Hive e no catálogo federado.

    Advertência

    Isso também significa que os comandos DROP se refletem no metastore do Hive. Por exemplo, o DROP SCHEMA mySchema CASCADE descarta todas as tabelas no esquema de metastore subjacente do Hive, sem a opção de UNDROP, porque o metastore do Hive não suporta UNDROP.

  • Operações DML, como INSERT, UPDATEe DELETE.

    As operações DML também são refletidas de forma síncrona na tabela de metastore subjacente do Hive. Por exemplo, executar INSERT INTO adiciona registros à tabela no metastore do Hive.

    O suporte de gravação é fundamental para permitir uma transição perfeita durante a migração do metastore do Hive para o Unity Catalog. Consulte Como usar a federação de metastore do Hive durante a migração para o Unity Catalog?.

Como você configura a federação de metastore do Hive?

Para configurar a federação de metastore do Hive, faça o seguinte:

  1. Crie uma conexão no Catálogo Unity que especifique o caminho e as credenciais para acessar o metastore do Hive.

    A federação do metastore do Hive usa essa conexão para explorar o metastore do Hive. Para a maioria dos sistemas de banco de dados, você fornece um nome de usuário e senha. Para uma conexão com um metastore Hive do espaço de trabalho interno do Azure Databricks herdado, a federação do metastore do Hive cuida da autorização.

  2. Crie uma credencial de armazenamento e um local externo no Catálogo Unity para os caminhos das tabelas registadas no metastore do Hive.

    Os locais externos contêm caminhos e as credenciais de armazenamento necessárias para acessar esses caminhos. As credenciais de armazenamento são objetos protegíveis do Unity Catalog que especificam credenciais, como identidades gerenciadas do Azure, para acesso ao armazenamento em nuvem. Dependendo do fluxo de trabalho escolhido para criar locais externos, talvez seja necessário criar credenciais de armazenamento antes de criar o local externo.

  3. Crie um de catálogo federado no Unity Catalog, usando a conexão que você criou na etapa 1.

    Este é o catálogo que os usuários do espaço de trabalho e os fluxos de trabalho usam para trabalhar com tabelas de metastore do Hive usando o Unity Catalog. Depois de criar o catálogo federado, o Unity Catalog o preenche com as tabelas registradas no metastore do Hive.

  4. Conceda privilégios às tabelas no catálogo federado usando o Unity Catalog.

    Você também pode usar filtros de linha e coluna do Unity Catalog para controle de acesso refinado.

  5. Comece a consultar dados.

    O acesso a dados federados usando o Unity Catalog é somente leitura para metastores externos do Hive e leitura e gravação para metastores internos do Hive.

    Para metastores Hive internos e externos, o Unity Catalog atualiza continuamente os metadados da tabela conforme ocorrem alterações no metastore do Hive. Para metastores internos do Hive, novas tabelas e atualizações de tabela confirmadas a partir do catálogo federado são escritas novamente no metastore do Hive, mantendo total interoperabilidade entre o Unity Catalog e os catálogos do metastore do Hive.

Para obter instruções detalhadas, consulte:

Como você usa a federação de metastore do Hive durante a migração para o Unity Catalog?

A federação de metastore do Hive permite migrar para o Unity Catalog de forma incremental, reduzindo a necessidade de coordenação entre equipes e cargas de trabalho. Em particular, se você estiver migrando do metastore interno do Hive do seu espaço de trabalho do Azure Databricks, a capacidade de ler e gravar no metastore do Hive e no metastore do Unity Catalog significa que você pode manter metastores "espelhados" durante a migração, fornecendo os seguintes benefícios:

  • As cargas de trabalho executadas em catálogos federados são executadas no modo de compatibilidade de metastore do Hive, reduzindo o custo de adaptação do código durante a migração.
  • Cada carga de trabalho pode optar por migrar independentemente das outras, sabendo que, durante o período de migração, os dados estarão disponíveis no metastore do Hive e no Unity Catalog, aliviando a necessidade de coordenação entre cargas de trabalho que têm dependências entre si.

Diagrama que fornece uma visão geral da federação HMS no contexto da migração

Esta seção descreve um fluxo de trabalho típico para migrar o metastore herdado interno do Hive de um espaço de trabalho do Azure Databricks para o Unity Catalog, com a federação do metastore do Hive a facilitar a transição. Ele não se aplica à migração de um metastore externo do Hive. Os catálogos federados para metastores externos do Hive não suportam gravações.

Etapa 1: Federar o metastore interno do Hive

Nesta etapa, você cria um catálogo federado que espelha seu metastore do Hive no Unity Catalog. Vamos chamá-lo de hms_in_uc.

Diagrama que mostra cargas de trabalho em execução no metastore do Hive e a existência do catálogo federado espelhado do Unity Catalog, hms_in_uc

Observação

Como parte do processo de federação, você configura locais externos para fornecer acesso aos dados no armazenamento em nuvem. Em cenários de migração em que algumas cargas de trabalho estão consultando os dados usando mecanismos de acesso herdados e outras cargas de trabalho estão consultando os mesmos dados no Unity Catalog, os controles de acesso gerenciados pelo Unity Catalog em locais externos podem impedir que as cargas de trabalho herdadas acessem os caminhos para o armazenamento a partir da computação habilitada para Unity Catalog. Você pode habilitar o "modo de fallback" nesses locais externos para usar qualquer credencial com escopo de cluster ou bloco de anotações que tenha sido definida para a carga de trabalho herdada. Em seguida, quando a migração estiver concluída, você desativará o modo de fallback. Consulte O que é o modo de fallback?.

Para obter detalhes, consulte Habilitar a federação de metastore do Hive para um espaço de trabalho herdado O metastore do Hive.

Passo 2. Executar novas cargas de trabalho no catálogo federado no Unity Catalog

Quando você tem um catálogo federado em vigor, pode conceder aos analistas SQL e aos consumidores de ciência de dados acesso a ele e começar a desenvolver novas cargas de trabalho que apontem para ele. As novas cargas de trabalho se beneficiam do conjunto de recursos adicionais no Unity Catalog, incluindo controles de acesso, pesquisa e linhagem.

Diagrama que mostra cargas de trabalho existentes em execução no metastore do Hive e novas cargas de trabalho em execução no catálogo federado espelhado do Unity Catalog, hms_in_uc

Nesta etapa, você normalmente faz o seguinte:

  • Escolha computação compatível com o Unity Catalog (ou seja, modos de acesso a cluster compartilhado ou de usuário único, armazéns SQL ou computação sem servidor). Consulte Requisitos, recursos suportados e limitações.
  • Defina o catálogo federado como o catálogo padrão no recurso de computação ou adicione USE CATALOG hms_in_uc no início do código. Como os esquemas e nomes de tabela no catálogo federado são espelhos exatos daqueles no metastore do Hive, seu código começará a se referir ao catálogo federado.

Passo 3. Migrar trabalhos existentes para serem executados no catálogo federado

Para migrar trabalhos existentes para consultar o catálogo federado:

  1. Altere o catálogo padrão no cluster de trabalho a ser hms_in_uc, definindo uma propriedade no próprio cluster ou adicionando USE CATALOG hms_in_uc na parte superior do código.
  2. Mude o trabalho para computação de usuário único ou modo de acesso compartilhado e atualize para uma das versões do Databricks Runtime que oferece suporte à federação de metastore do Hive. Consulte Requisitos, recursos suportados e limitações.
  3. Peça a um administrador do Azure Databricks para conceder os privilégios corretos do Catálogo Unity nos objetos de dados no hms_in_uc e em quaisquer caminhos de armazenamento em nuvem (incluídos nos locais externos do Catálogo Unity) acessados pelo trabalho. Consulte Gerenciar privilégios no Catálogo Unity.

Segunda instância do diagrama que fornece uma visão geral da federação HMS no contexto da migração

Passo 4. Negar acesso ao metastore do Hive

Depois de migrar todas as cargas de trabalho para consultar o catálogo federado, você não precisará mais do metastore do Hive. Você pode usar controles de acesso à tabela herdados e permissões de computação para bloquear o acesso direto do seu espaço de trabalho do Azure Databricks ao metastore do Hive. Por exemplo, você pode:

  1. Revogar todos os privilégios nos objetos do catálogo do metastore do Hive.

    O comando MSCK REPAIR PRIVILEGES é conveniente para este fim. Consulte privilégios de reparo MSCK e privilégios de metastore do Hive e objetos protegíveis (legado).

  2. Impeça que os usuários criem e usem clusters que ignorem o controle de acesso à tabela (clusters que não usam isolamento, modo de acesso compartilhado ou um tipo de cluster personalizado herdado) usando políticas de computação.

    Consulte Gerenciar configurações de computação.

  3. Torne o catálogo federado o catálogo padrão do espaço de trabalho.

    Consulte Gerenciar o catálogo padrão.

Perguntas frequentes

As seções a seguir fornecem informações mais detalhadas sobre a federação de metastore do Hive.

O que é o modo de fallback?

O modo de fallback é uma configuração em localizações externas que pode ser usada para ignorar as verificações de permissão do Catálogo Unity durante a migração para o Catálogo Unity. Defini-lo garante que as cargas de trabalho que ainda não foram migradas não sejam afetadas durante a fase de configuração.

O Unity Catalog obtém acesso ao armazenamento em nuvem usando locais externos, que são objetos protegíveis que definem um caminho e uma credencial para acessar sua conta de armazenamento em nuvem. Você pode emitir permissões sobre eles, como READ FILES, para governar quem pode usar o caminho. Um desafio durante o processo de migração é que você pode não querer que o Unity Catalog comece a controlar todo o acesso ao caminho imediatamente, por exemplo, quando você tiver cargas de trabalho existentes e não migradas que façam referência ao caminho.

O modo de fallback permite que você atrase a aplicação estrita do controle de acesso do Unity Catalog em locais externos. Quando o modo de fallback está habilitado, as cargas de trabalho que acessam um caminho são primeiro verificadas em relação às permissões do Catálogo Unity e, se falharem, voltam a usar credenciais com escopo de cluster ou notebook, como perfis de instância ou propriedades de configuração do Apache Spark. Isso permite que as cargas de trabalho existentes continuem usando suas credenciais atuais.

O modo de fallback destina-se apenas ao uso durante a migração. Você deve desativá-lo quando todas as cargas de trabalho tiverem sido migradas e estiver pronto para impor os controles de acesso do Catálogo Unity.

O que são caminhos autorizados?

Ao criar um catálogo federado, você será solicitado a fornecer caminhos autorizados para o armazenamento em nuvem onde as tabelas de metastore do Hive estão armazenadas. Qualquer tabela que você queira acessar usando a federação de metastore do Hive deve ser coberta por esses caminhos. O Databricks recomenda que seus caminhos autorizados sejam subcaminhos comuns em um grande número de tabelas. Por exemplo, se você tiver tabelas em abfss://container@storageaccount.dfs.core.windows.net/bucket/table1, ./bucket/table2e ./bucket/table3, deverá fornecer abfss://container@storageaccount.dfs.core.windows.net/bucket/ como um caminho autorizado.

Você pode usar UCX para ajudá-lo a identificar os caminhos que estão presentes no metastore do Hive.

Os caminhos autorizados adicionam uma camada extra de segurança em catálogos federados, permitindo que o proprietário do catálogo aplique guardrails aos dados que os usuários podem acessar usando a federação. Isso é útil se o metastore do Hive permitir que os usuários atualizem metadados e alterem arbitrariamente os locais das tabelas — atualizações que, de outra forma, seriam sincronizadas no catálogo federado. Nesse cenário, os usuários poderiam potencialmente redefinir tabelas às quais já têm acesso para que apontem para novos locais aos quais de outra forma não teriam acesso.

Posso federar metastores do Hive usando UCX?

UCX, o projeto Databricks Labs para migrar espaços de trabalho do Azure Databricks para o Unity Catalog, inclui utilitários para habilitar a federação de metastore do Hive:

  • enable-hms-federation
  • create-federated-catalog

Veja o README do projeto no GitHub. Para obter uma introdução ao UCX, consulte Usar os utilitários UCX para atualizar seu espaço de trabalho para o Unity Catalog.

Requisitos, recursos suportados e limitações

A tabela a seguir lista os serviços e recursos suportados pela federação de metastore do Hive. Em alguns casos, serviços ou recursos não suportados também são listados. Nestas tabelas, "HMS" significa Hive metastore.

Categoria Suportado Não suportado
Metastores - Metastores Hive de espaço de trabalho legado (interno ao Databricks)
- Metastores externos no Apache Hive versão 0.13 ou 2.3 usando mySQL
- Metastores externos em bases de dados diferentes do mySQL
- Hive 3.1
Operações - HMS interno do Databricks: lê e escreve
- HMS externo: somente leitura
Ativos de dados do Hive metastore - Tabelas gerenciadas e externas no metastore Hive
- Esquemas
- Visualizações
- Tabelas Hive SerDe
- Funções Hive e Funções Definidas pelo Utilizador (UDFs)
- Definição de novos clones superficiais no catálogo federado
- Tabelas apoiadas por JDBC
- Tabelas partilhadas de Delta Sharing
- Acesso a clones superficiais registrados no metastore do Hive através do catálogo federado
Armazenamento - Azure Data Lake Storage Gen2
- Tabelas que fazem referência a locais de montagem no DBFS, incluindo a raiz do DBFS
- Tabelas cujos caminhos se sobrepõem a outros caminhos de tabela HMS definidos em locais externos
- Tabelas HMS cujos caminhos se sobrepõem aos caminhos de objeto nativos do Unity Catalog
- Acesso a tabelas na raiz ou nos locais de montagem do DBFS registados num HMS externo
- Acesso a tabelas na raiz do DBFS ou em locais de montagem de qualquer outro espaço de trabalho diferente daquele em que o HMS interno está definido
- Suporte de firewall para a conta de armazenamento do espaço de trabalho
Tipos de computação - Clusters partilhados
- Clusters de usuário único (atribuídos)
- Sem servidor (todos)
- Armazéns SQL (todos)
Sem agrupamentos de isolamento
Versões de computação - Todos os canais Databricks SQL
- Todos os canais Delta Live Tables
- Databricks Runtime 13.3 LTS
- Databricks Runtime 14.3 LTS
- Databricks Runtime 15.1 e superior
Recursos do Catálogo Unity - Modelo de privilégio do Unity Catalog
- Filtros de linha e máscaras de coluna
- Auditoria
- Linhagem a jusante
- Pesquisa de tabelas
- Acesso entre espaços de trabalho (exceto raiz e pontos de montagem DBFS)
- Acesso aos dados limitado a locais externos definidos
- Partilha Delta
- Monitorização de Lakehouse
- Pesquisa vetorial
- Tabelas online
- Algumas funcionalidades de armazenamento de recursos, incluindo criação de loja de recursos, criação de serviço de modelo, criação de especificações de recursos, registro de modelos e pontuação em lote
- Não é possível escrever visualizações materializadas e tabelas de streaming do Delta Live Tables em um catálogo federado, mas você pode usar ativos federados como fonte para visualizações materializadas do Delta Live Tables e tabelas de streaming.
- Migração automática de ACLs de tabela herdada para privilégios de catálogo Unity para o catálogo federado. UCX pode ajudar com isso.