Compartilhar via


Habilitar a federação de metastore do Hive para um metastore externo do Hive

Importante

Este recurso está noPublic Preview .

Este artigo mostra como federar um metastore externo do Hive para que sua organização possa trabalhar com suas tabelas de metastore do Hive usando o Unity Catalog.

Para obter uma visão geral da federação de metastore do Hive, consulte federação de metastore do Hive: habilitar o Unity Catalog para governar tabelas registradas em um metastore do Hive.

Antes de começar

Analise a lista de serviços e recursos suportados pela federação de metastore do Hive: Requisitos, recursos suportados e limitações.

Os requisitos específicos estão listados para cada etapa abaixo.

Etapa 1: Conectar o Unity Catalog ao seu metastore externo do Hive

Nesta etapa, você cria uma conexão , um objeto protegível do Unity Catalog que especifica um caminho e credenciais para acessar um sistema de banco de dados, neste caso, seu metastore do Hive.

Requerimentos

Você deve ter o seguinte:

  • Um nome de usuário e senha que concede acesso ao sistema de banco de dados que hospeda o metastore do Hive.
  • A url para o banco de dados (host e porta).
  • O nome do banco de dados.
  • O privilégio CREATE CONNECTION no metastore do Unity Catalog. Os administradores da Metastore têm esse privilégio por padrão.

Criar a conexão

Para criar uma conexão, você pode usar o Gerenciador de Catálogos ou o comando CREATE CONNECTION SQL em um bloco de anotações do Azure Databricks ou no editor de consultas Databricks SQL.

Observação

Você também pode usar a API REST do Databricks ou a CLI do Databricks para criar uma conexão. Consulte POST /api/2.1/unity-catalog/connections e comandos do Unity Catalog.

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique ícone CatálogoCatálogo.
  2. Na página Acesso rápido, clique em Adicionar uma conexãoAdicionar dados.
  3. Na página Noções básicas de conexão do assistente Configurar de conexão, insira um amigável Nome da conexão.
  4. Selecione um Tipo de conexão de Hive Metastore e Tipo de Metastore de Externo.
  5. (Opcional) Adicione um comentário.
  6. Clique Avançar.
  7. Na página de Autenticação, insira o seguinte para o banco de dados host:
    • Host: Por exemplo, mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • Port: Por exemplo, 3306
    • User: Por exemplo, mysql_user
    • Palavra-passe: Por exemplo, password123
  8. Clique Avançar.
  9. Na página de detalhes da ligação , insira o seguinte para o banco de dados do host:
    • Versão: As versões de metastore do Hive suportadas incluem 0.13 e 2.3.
    • Database: O nome do banco de dados ao qual você está se conectando.
    • Tipo de banco de dados: Por exemplo, MySQL.
  10. Clique em Criar conexão.
  11. Na página Noções básicas do catálogo, insira um nome para o catálogo estrangeiro.
  12. Para os Caminhos autorizados, escolha caminhos de armazenamento em nuvem que podem ser acessados através do catálogo. Somente as tabelas que se enquadram nesses caminhos podem ser consultadas por meio do catálogo federado. Os caminhos devem ser cobertos por locais externos. Para obter mais informações, consulte O que são caminhos autorizados?.
  13. (Opcional) Para local de armazenamento, escolha um local no armazenamento em nuvem onde os dados selecionados serão armazenados para tabelas neste catálogo. Se não for especificado, o local será definido por predefinição para o local raiz do metastore, se presente.
  14. Clique Criar catálogo.
  15. Na página Access, selecione os espaços de trabalho nos quais os usuários podem acessar o catálogo que você criou. Você pode selecionar Todos os espaços de trabalho têm acessoou clicar em Atribuir a espaços de trabalho, selecionar os espaços de trabalho desejados e clicar em Atribuir.
  16. Adicione um Proprietário que poderá gerir o acesso a todos os objetos do catálogo. Comece a digitar um usuário ou grupo na caixa de texto e clique no usuário ou grupo nos resultados retornados.
  17. Conceder privilégios no catálogo. Clique Conceder:
    1. Especifique os Principals que terão acesso aos objetos no catálogo. Comece a digitar um usuário ou grupo na caixa de texto e clique no usuário ou grupo nos resultados retornados.
    2. Selecione as predefinições de Privilégio a conceder a cada utilizador ou grupo. Todos os usuários da conta recebem BROWSE por padrão.
      • Selecione do Leitor de Dados no menu suspenso para conceder privilégios de read em objetos no catálogo.
      • Selecione Editor de Dados no menu suspenso para conceder privilégios de read e modify em objetos no catálogo.
      • Selecione manualmente os privilégios a conceder.
    3. Clique em Conceder.
  18. Clique Avançar.
  19. Na página de Metadados , especifique os pares chave-valor das etiquetas. Para mais informações, consulte Aplicar tags a objetos securáveis do Unity Catalog.
  20. (Opcional) Adicione um comentário.
  21. Clique Salvar.

SQL

Execute o seguinte comando em um bloco de anotações ou no editor de consultas Databricks SQL.

CREATE CONNECTION <connection-name> TYPE hive_metastore
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>',
  database '<database-name>',
  db_type 'MYSQL',
  version '2.3',
);

Inclui warehouse_directory apenas se não quiseres usar a localização padrão do diretório de armazenamento do Hive para o teu metastore do Hive.

Recomendamos que você use o Azure Databricks segredos em vez de cadeias de caracteres de texto sem formatação para valores confidenciais, como credenciais. Por exemplo:

CREATE CONNECTION <connection-name> TYPE hive_metastore
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>'),
  database '<database-name>',
  db_type 'MYSQL',
  version '2.3'
)

Se for necessário usar cadeias de texto simples em comandos SQL de notebooks, evite truncar a cadeia escapando caracteres especiais, como $ por \. Por exemplo: \$.

Para obter informações sobre como configurar segredos, consulte Gestão de segredos.

Etapa 2: Criar locais externos para dados no metastore do Hive

Nesta etapa, você configura um local externo no Unity Catalog para controlar o acesso aos locais de armazenamento em nuvem que contêm os dados registrados em seu metastore externo do Hive.

Locais externos são objetos protegíveis do Unity Catalog que associam credenciais de armazenamento a caminhos de contêiner de armazenamento em nuvem. Consulte Locais externos e credenciais de armazenamento.

Requerimentos

Para obter informações sobre armazenamento em nuvem e requisitos de permissão do Azure Databricks, consulte "Antes de começar" em Criar um local externo para conectar o armazenamento em nuvem ao Azure Databricks.

Opções para criar o local externo

O processo que o Databricks recomenda para criar um local externo no Unity Catalog depende da sua situação:

Ativar o modo de fallback em locais externos

Assim que você cria um local externo no Unity Catalog, o acesso ao caminho representado por esse local externo é imposto pelas permissões do Unity Catalog quando você executa consultas na computação habilitada para Unity Catalog (usuário único, compartilhado ou SQL warehouse). Isso pode interromper cargas de trabalho existentes que não têm as permissões corretas do Catálogo Unity para acessar o caminho.

Quando um local externo está no modo de fallback, o sistema primeiro verifica as permissões do Unity Catalog da entidade de consulta no local e, se isso não for bem-sucedido, volta a usar credenciais existentes com escopo de cluster ou notebook, como perfis de instância ou propriedades de configuração do Apache Spark, para que suas cargas de trabalho existentes continuem a ser executadas ininterruptamente.

O modo de fallback é conveniente quando você está no processo de migração de sua carga de trabalho herdada. Depois de atualizar suas cargas de trabalho para serem executadas com êxito usando as permissões do Catálogo Unity, você deve desabilitar o modo de fallback para impedir que credenciais herdadas com escopo de cluster sejam usadas para ignorar a governança de dados do Catálogo Unity.

Você pode habilitar o modo de fallback usando o Catalog Explorer ou a API REST de locais externos do Unity Catalog.

Permissões necessárias: Proprietário do local externo.

Explorador de Catálogos

  1. No seu espaço de trabalho do Azure Databricks, clique ícone CatálogoCatálogo.
  2. Na página Acesso rápido , clique em Dados externos >.
  3. Selecione o local externo que deseja atualizar.
  4. Ative a alternância do modo Fallback e clique em Ativar para confirmar.

API

Os exemplos de curvas a seguir mostram como habilitar o modo de fallback quando você cria um local externo e quando atualiza um local externo existente.

Criando um novo local externo:

curl -X POST -H 'Authorization: Bearer <token>' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations \
--data
'{
  "name": "fallback_mode_enabled_external_location",
  "url": "abfss://container-name@storage-account.dfs.core.windows.net/external_location_container/url",
  "credential_name": "external_location_credential",
  "fallback": true
  "skip_validation": true
}'

Atualizar uma localização externa

curl -X PATCH \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations/<external-location-name> \
--data
 '{
   "comment": "fallback mode enabled",
   "fallback": true
  }'

Etapa 3: Criar um catálogo federado

Nesta etapa, você usa a conexão criada na etapa 1 para criar um catálogo federado no Unity Catalog que aponta para o local externo criado na etapa 2. Um catálogo federado é um tipo de catálogo estrangeiro , que é um objeto protegível no Unity Catalog que espelha um banco de dados ou catálogo em um sistema de dados externo, permitindo que você execute consultas nesses dados em seu espaço de trabalho do Azure Databricks, com acesso gerenciado pelo Unity Catalog. Nesse caso, o catálogo espelhado é o seu dado registado em um metastore do Hive.

Sempre que um usuário ou fluxo de trabalho interage com o catálogo federado, os metadados são sincronizados a partir do metastore do Hive.

Requisitos

Requisitos de permissão:

Para criar o catálogo estrangeiro:

  • O privilégio CREATE CATALOG no metastore do Catálogo Unity.
  • Propriedade da conexão ou o privilégio de CREATE FOREIGN CATALOG na conexão.
  • Para inserir caminhos autorizados para o catálogo estrangeiro, você deve ter o privilégio de CREATE FOREIGN SECURABLE em um local externo que cubra esses caminhos. O proprietário do local externo tem esse privilégio por padrão.

Para trabalhar com o catálogo internacional:

  • Propriedade do catálogo ou USE CATALOG

Requisitos de computação:

  • Para criar o catálogo usando o Catalog Explorer: não é necessário calcular.
  • Para criar o catálogo usando SQL: Databricks Runtime 13.3 LTS ou superior.
  • Para trabalhar com o catálogo: um cluster compartilhado no Databricks Runtime 13.3 LTS, 14.3 LTS, 15.1 ou superior.

Criar o catálogo estrangeiro

Para criar um catálogo estrangeiro, você pode usar o Gerenciador de Catálogos ou o comando CREATE FOREIGN CATALOG SQL em um bloco de anotações do Azure Databricks ou no editor de consultas SQL.

Observação

Você também pode usar a API do Unity Catalog. Consulte Criar um catálogo na referência da API REST do Databricks.

  1. No seu espaço de trabalho do Azure Databricks, clique ícone de Catálogo para abrir o Explorador de Catálogo.

  2. Na página Acesso rápido, clique no botão Adicionar dados e selecione Adicionar um catálogo.

  3. Insira um de nome de catálogo e selecione um catálogo Digite de estrangeira .

  4. Selecione a Conexão que foi criada na Etapa 1 na lista suspensa.

  5. No campo Caminhos autorizados, insira caminhos para os locais de armazenamento em nuvem que você definiu como locais externos na Etapa 2. Por exemplo, abfss://container@storageaccount.dfs.core.windows.net/demo,abfss://container@storageaccount.dfs.core.windows.net/depts/finance.

    Os caminhos autorizados são uma camada adicional de segurança apenas para catálogos federados. Consulte O que são caminhos autorizados?.

  6. Clique Criar.

  7. (Opcional) Clique Configurar para abrir um assistente que o orienta na concessão de permissões no catálogo e na adição de tags. Você também pode executar essas etapas mais tarde.

    Consulte Gerenciar privilégios no Unity Catalog e Aplicar tags a objetos protegíveis do Unity Catalog.

  8. (Opcional) Vincule o catálogo a espaços de trabalho específicos.

    Por padrão, os catálogos podem ser acessados de qualquer espaço de trabalho anexado ao metastore do Unity Catalog (restrito pelos privilégios do usuário). Se quiser permitir o acesso apenas a partir de espaços de trabalho específicos, aceda ao separador Espaços de Trabalho e atribua espaços de trabalho. Consulte Limitar o acesso do catálogo a espaços de trabalho específicos.

  9. Preencha o catálogo federado com os metadados do metastore do Hive.

    Sempre que um usuário ou fluxo de trabalho interage com o catálogo federado, os metadados são sincronizados a partir do metastore do Hive. A primeira interação preenche o catálogo no Unity Catalog e torna seu conteúdo visível na interface do usuário do Catalog Explorer. Você pode preencher o catálogo selecionando e iniciando um de recursos de computação com suporte de no Gerenciador de Catálogos. Você deve ser o proprietário do catálogo (que você é em virtude da criação do catálogo) ou um usuário com o privilégio USE CATALOG.

    Execute o seguinte comando SQL em um bloco de anotações ou no editor de consultas SQL. Os itens entre parênteses são opcionais. Substitua os valores de marcador:

    • <catalog-name>: Nome do catálogo no Azure Databricks.
    • <connection-name>: O nome do objeto de conexão que você criou na Etapa 1.
    • <path1>,<path2>: Caminhos para os locais de armazenamento em nuvem que você definiu como locais externos na Etapa 2. Por exemplo, abfss://container@storageaccount.dfs.core.windows.net/demo,abfss://container@storageaccount.dfs.core.windows.net/depts/finance. Os caminhos autorizados são uma camada adicional de segurança apenas para catálogos federados. Consulte O que são caminhos autorizados?.
    CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
    OPTIONS (authorized_paths '<path1>,<path2>');
    

    Sempre que um usuário ou fluxo de trabalho interage com o catálogo federado, os metadados são sincronizados a partir do metastore do Hive.

Ver também Gerir e trabalhar com catálogos estrangeiros.