AWS Habilite a federação de Hive metastore para Glue metastores
Este artigo demonstra como federar um AWS Glue Hive metastore para que sua organização possa trabalhar com suas tabelas Hive metastore utilizando Unity Catalog.
Para obter uma visão geral da federação Hive metastore, consulte FederaçãoHive metastore: habilite Unity Catalog para controlar tabelas registradas em um Hive metastore.
Antes de começar
Veja a lista de serviços e recursos suportados pela federação Hive metastore: Requisitos e suporte a recursos.
Os requisitos específicos estão listados para cada etapa abaixo.
Passo 1: Conecte o Unity Catalog ao seu AWS Glue Hive metastore
Para conectar o seu AWS Glue Hive metastore ao Databricks, é necessário:
- Crie um IAM role com uma política de confiança que conceda ao Databricks acesso temporário ao recurso AWS Glue .
- Crie uma credencial de serviço que registre o IAM role em Unity Catalog. Uma credencial de serviço é um objeto protegido do Unity Catalog que encapsula uma credencial de nuvem de longo prazo.
- Crie uma conexão do Unity Catalog com o seu catálogo AWS Glue a partir do Databricks. Uma conexão é um objeto protegido do Unity Catalog que especifica um caminho e credenciais para acessar um sistema de banco de dados.
Requisitos
Você deve ter o seguinte:
- A capacidade de criar um IAM role que concede acesso ao seu catálogo AWS Glue .
- AWS A região e o ID de identificação do account do account que contém o seu AWS Glue catalog.
- Os privilégios
CREATE SERVICE CREDENTIAL
eCREATE CONNECTION
no metastore do Unity Catalog. Os administradores do Metastore possuem esses privilégios por meio de default.
Crie as credenciais IAM role e serviço.
Siga as instruções na Etapa 1: Criar um IAM role para criar um IAM role que conceda ao Databricks acesso temporário ao seu recurso AWS Glue . Como este IAM role deve ser autoassumido, o processo requer três etapas:
- Passo 1: Crie um IAM role
- Passo 2: Forneça os detalhes de “ IAM role ” ao site Databricks
- Passo 3: Atualize a política “ IAM role ” (Controle de aplicativos de rede)
Recomenda-se utilizar a política IAM de exemplo para AWS Glue incluída nestas instruções. O requisito de assumir uma função também é explicado nessas instruções.
Crie a conexão
Para criar uma conexão, você pode usar o Catalog Explorer ou o comando CREATE CONNECTION
do SQL em um Notebook do Databricks ou no editor de consultas SQL do Databricks.
Você também pode utilizar a API REST do Databricks ou a CLI do Databricks para criar uma conexão. Veja POST /api/2.1/unity-catalog/connections e o comandoUnity Catalog.
- Catalog Explorer
- SQL
-
Em Databricks workspace, clique em
Catalog .
-
Na página Acesso rápido , clique em Adicionar dados > Adicionar uma conexão .
-
Na página Noções básicas de conexão do assistente de configuração de conexão , insira um nome de conexão fácil de usar.
-
Selecione um tipo de conexão de Hive metastore e um tipo de Metastore deAWS Glue.
-
(Opcional) Adicione um comentário.
-
Clique em Avançar .
-
Na página Detalhes da conexão , insira o seguinte para seu banco de dados host:
- AWS Região: A região do AWS account que contém o catálogo AWS Glue .
- AWS ID da conta: O ID da conta do AWS account.
- Credencial : selecione a credencial de serviço criada na etapa anterior.
(Opcional) Se a instância do banco de dados não usar um certificado de servidor assinado pela CA, selecione Certificado de servidor confiável .
-
Clique em Criar conexão .
-
Na página Noções básicas do catálogo , insira um nome para o catálogo estrangeiro.
-
Em Caminhos autorizados , escolha caminhos de armazenamento em nuvem que possam ser acessados por meio do catálogo. Somente as tabelas que se enquadram nesses caminhos podem ser consultadas por meio do catálogo estrangeiro. Os caminhos devem ser percorridos por locais externos. Para obter mais informações, consulte O que são caminhos autorizados?
-
Clique em Criar catálogo .
-
Na página Acesso , selecione o espaço de trabalho no qual os usuários podem acessar o catálogo que você criou. É possível selecionar Todos os espaços de trabalho têm acesso ou clicar em Atribuir ao espaço de trabalho , selecionar o espaço de trabalho e, em seguida, clicar em Atribuir .
-
Adicione um proprietário que poderá gerenciar o acesso a todos os objetos no catálogo. Inicie digitando um usuário ou grupo na caixa de texto e, em seguida, clique no usuário ou grupo nos resultados exibidos.
-
Conceda privilégios no catálogo.
-
Clique em Conceder .
-
Especifique os diretores que terão acesso aos objetos no catálogo. Inicie digitando um usuário ou grupo na caixa de texto e, em seguida, clique no usuário ou grupo nos resultados exibidos.
-
Selecione as predefinições de privilégios a serem concedidas a cada usuário ou grupo. Todos os usuários do account têm direito a
BROWSE
por default.- Selecione Leitor de dados no menu suspenso para conceder privilégios
read
em objetos no catálogo. - Selecione Editor de dados no menu suspenso para conceder os privilégios
read
emodify
aos objetos no catálogo. - Selecione manualmente os privilégios a serem concedidos.
- Selecione Leitor de dados no menu suspenso para conceder privilégios
-
Clique em Conceder .
-
-
Clique em Avançar .
-
Na página Metadados , opcionalmente, especifique tags como par key-value. Para obter mais informações, consulte Aplicar tags a objetos protegidos d Unity Catalog.
-
(Opcional) Adicione um comentário.
-
Clique em Salvar .
Execute o seguinte comando em um notebook ou no editor de consultas SQL.
CREATE CONNECTION <connection-name> TYPE glue
OPTIONS (
aws_region '<aws-region-ID>',
aws_account_id '<aws-account-ID>',
credential '<service-credential-ID>'
);
Passo 2: Crie locais externos para os dados em seu Hive metastore
Nesta etapa, você configura um local externo em Unity Catalog para controlar o acesso aos locais de armazenamento em nuvem que contêm os dados registrados em AWS Glue Hive metastore.
Os locais externos são objetos protegíveis Unity Catalog que associam credenciais de armazenamento a caminhos de contêineres de armazenamento cloud.
Opções para criar o local externo
O processo recomendado pela Databricks para criar um local externo no Unity Catalog depende da sua situação:
- Se o senhor não tiver uma credencial de armazenamento criada em Unity Catalog, poderá criar o local externo usando um padrão do AWS CloudFormation que cria uma credencial de armazenamento e IAM role para o senhor. Siga as instruções em Criar uma credencial de armazenamento que acesse um bucket do AWS S3.
- Se o senhor já tiver uma credencial de armazenamento criada no Unity Catalog, crie o local externo manualmente usando o Catalog Explorer ou o SQL.
Ativar modo de fallback em locais externos
Assim que criar um local externo em Unity Catalog, o acesso ao caminho representado por esse local externo será imposto pelas permissões Unity Catalog quando executar consultas em Unity Cataloghabilitado compute. Isso pode interromper as cargas de trabalho existentes que não possuem as permissões corretas do Unity Catalog para acessar o caminho.
Quando um local externo está no modo “ fallback ”, o sistema primeiro verifica as permissões “ Unity Catalog ” do principal que está fazendo a consulta no local e, se isso não for bem-sucedido, recorre ao uso de credenciais de clustering existentes ou no escopo do Notebook, como o perfil da instância ou as propriedades de configuração “ Apache Spark ”, para que suas cargas de trabalho existentes continuem a ser executadas sem interrupções.
O modo de fallback é conveniente quando você está migrando sua carga de trabalho legada. Após atualizar suas cargas de trabalho para execução com sucesso usando permissões Unity Catalog, é recomendável desativar o modo fallback para evitar que credenciais de escopo de cluster legadas sejam utilizadas para contornar a governança de dados Unity Catalog.
É possível ativar o modo de fallback utilizando o Catalog Explorer ou a API REST de locais externos do Unity Catalog.
Permissões necessárias : Proprietário do local externo.
- Catalog Explorer
- API
- Em Databricks workspace, clique em
Catalog .
- Na página Acesso rápido , clique em Dados externos > .
- Selecione o local externo que você deseja atualizar.
- Ative o botão de alternância do modo de fallback e clique em Ativar para confirmar.
Os exemplos de curl a seguir mostram como habilitar o modo de fallback ao criar um local externo e ao atualizar um local externo existente.
Criação de 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": "s3://external_location_bucket/url",
"credential_name": "external_location_credential",
"fallback": true
"skip_validation": true
}'
Atualizando um local externo:
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 estrangeiro
Talvez você já tenha concluído essa etapa se tiver usado o assistente de criação de conexão no Catalog Explorer para concluir a Etapa 1. Caso não tenha criado o catálogo externo ao concluir a etapa 1 ou se tiver utilizado SQL para criar a conexão, é necessário seguir as instruções nesta seção.
Nesta etapa, utilize a conexão criada na etapa 1 para criar um catálogo externo em Unity Catalog que aponte para o local externo criado na etapa 2. Um catálogo externo é um objeto protegido em Unity Catalog que espelha um banco de dados ou catálogo em um sistema de dados externo, permitindo que você execute consultas sobre esses dados em Databricks workspace, com acesso gerenciado por Unity Catalog. Nesse caso, o catálogo espelhado é o seu dado registrado em um Hive metastore.
Sempre que um usuário ou fluxo de trabalho interage com o catálogo externo, os metadados são sincronizados a partir do Hive metastore.
Requisitos
Requisitos de permissão :
Para criar o catálogo estrangeiro:
- O privilégio
CREATE CATALOG
no seu metastore do Unity Catalog. - Propriedade da conexão ou o privilégio
CREATE FOREIGN CATALOG
na conexão. - Para inserir caminhos autorizados para o catálogo externo, você deve ter o privilégio
CREATE FOREIGN SECURABLE
em um local externo que cubra esses caminhos. O proprietário do local externo possui este privilégio por meio de default.
Para trabalhar com o catálogo estrangeiro:
- Propriedade do catálogo ou
USE CATALOG
requisitos de computação :
- Para criar o catálogo utilizando o Catalog Explorer: não é necessário realizar o download do compute.
- Para criar o catálogo utilizando o SQL: Databricks Runtime 13.3 LTS ou superior.
- Para trabalhar com o catálogo: um compute com modo de acesso padrão em Databricks Runtime 13.3 LTS, 14.3 LTS, 15.1 ou superior.
Crie o catálogo estrangeiro
Para criar um catálogo externo, é possível utilizar o Catalog Explorer ou o comando CREATE FOREIGN CATALOG
SQL em um Notebook Databricks ou no editor de consultas SQL.
Consulte também gerenciar e trabalhar com catálogos estrangeiros.
Também é possível utilizar o Unity Catalog API. Consulte Criar um catálogo na referência da API REST do Databricks.
- Catalog Explorer
- SQL
-
No seu Databricks workspace, clique em
Catalog para abrir o Catalog Explorer.
-
Na página de acesso rápido , clique no botão Adicionar dados e selecione Adicionar um catálogo .
-
Insira um nome de catálogo e selecione um tipo de catálogo estrangeiro .
-
Selecione a conexão que você criou na Etapa 1 no menu suspenso.
-
No campo Caminhos autorizados , insira caminhos para os locais de armazenamento em nuvem que você definiu como locais externos na Etapa 2. Por exemplo,
s3://demo, s3://depts/finance
.Os caminhos autorizados são uma camada adicional de segurança para catálogos externos protegidos por uma federação Hive metastore. Consulte O que são caminhos autorizados?.
-
Clique em Criar .
-
(Opcional) Clique em Configurar para abrir um assistente que orienta você na concessão de permissões no catálogo e na adição de tags. Você também pode executar essas etapas posteriormente.
Consulte gerenciar privilégios em Unity Catalog e Aplicar tags a Unity Catalog objetos protegidos.
-
(Opcional) Vincule o catálogo a um espaço de trabalho específico.
Por meio de default, os catálogos podem ser acessados a partir de qualquer workspace conectado ao metastore Unity Catalog (restrito por privilégios de usuário). Se desejar permitir o acesso apenas a partir de um espaço de trabalho específico, acesse o espaço de trabalho tab e atribua o espaço de trabalho. Consulte Limitar o acesso ao catálogo a áreas de trabalho específicas.
-
Preencha o catálogo externo com os metadados Hive metastore.
Sempre que um usuário ou fluxo de trabalho interage com o catálogo externo, os metadados são sincronizados a partir do Hive metastore. 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. É possível preencher o catálogo selecionando e iniciando um recurso compute compatível no Catalog Explorer. Você deve ser o proprietário do catálogo (o 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 notebook ou no editor de consultas SQL. Os itens entre colchetes são opcionais. Substitua os valores temporários:
<catalog-name>
: Nome para o catálogo no 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,s3://demo, s3://depts/finance
. Os caminhos autorizados são uma camada adicional de segurança para catálogos externos protegidos por uma federação Hive metastore. Consulte O que são caminhos autorizados?. Consulte O que são caminhos autorizados?. Se você não adicionar caminhos autorizados ao criar o catálogo, poderá usarALTER CATALOG
para adicioná-los posteriormente. Consulte ALTER CATALOG.
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 Hive metastore.