Habilitar a federação de metastore do Hive para um metastore externo do Hive
Importante
Este recurso está no
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 do metastore do Hive, consulte Federação do Metastore do Hive: ativar o Unity Catalog para gerir tabelas registadas num 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
No seu espaço de trabalho do Azure Databricks, clique Catálogo.
Na página
Acesso rápido , clique emAdicionar uma conexão Adicionar dados. Introduza um nome de ligação fácil de usar.
Selecione um tipo de conexão do Hive Metastore e tipo de Metastore do External.
Insira as seguintes Autenticação propriedades para seu 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
-
Host: Por exemplo,
Insira os seguintes Detalhes da conexão para seu banco de dados 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.
(Opcional) Adicione um comentário.
Você só precisa disso se não quiser usar o local padrão.
Clique Criar.
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:
- Se estiveres a federar um metastore do Hive que armazena dados nas montagens do DBFS , cria o local externo usando o Catalog Explorer e usa a opção Copiar da montagem de DBFS. Consulte Criar um local externo manualmente com o Catalog Explorer ou Criar um local externo para dados na raiz do DBFS.
- Caso contrário, você pode usar o Catalog Explorer ou comandos SQL. Consulte Criar um local externo manualmente usando o Catalog Explorer ou Criar um local externo usando o SQL.
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
- No seu espaço de trabalho do Azure Databricks, clique no ícone do Catálogo .
- Na página Acesso rápido , clique em Dados externos >.
- Selecione o local externo que deseja atualizar.
- 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. Neste caso, o catálogo espelhado são os seus dados registados 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 seu 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 colaborar com o catálogo estrangeiro:
- 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.
No seu espaço de trabalho do Azure Databricks, clique Catálogo para abrir o Explorador de Catálogos.
Na página Acesso rápido, clique no botão Adicionar dados e selecione Adicionar um catálogo.
Insira um de nome de catálogo
e selecione um catálogo Digite deestrangeira . Selecione a Conexão que criou na Etapa 1 a partir da lista suspensa.
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?.
Clique Criar.
(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.
(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 Restringir o acesso do catálogo a espaços de trabalho específicos. 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 recurso de computação compatível com
no Explorador 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 espaço reservado:
-
<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.
-
Consulte também Gerenciar e trabalhar com catálogos estrangeiros.