Criar um metastore Unity Catalog

Este artigo mostra como criar um metastore Unity Catalog e vinculá-lo ao workspace.

Importante

Para workspace que foram habilitados automaticamente para o Unity Catalog, as instruções neste artigo são desnecessárias. O Databricks começou a habilitar o novo workspace para o Unity Catalog automaticamente em 8 de novembro de 2023, com uma implementação gradual em todas account. Você deverá seguir as instruções nestes artigos somente se tiver um workspace e ainda não tiver um metastore na região do workspace. Para determinar se já existe um metastore em sua região, consulte Ativação automática do Unity Catalog.

Um metastore é o contêiner de nível superior para dados no Unity Catalog. Unity Catalog armazena metadados de registro sobre objetos protegidos (como tabelas, volumes, locais externos e compartilhamentos) e as permissões que controlam o acesso a eles. Cada metastore expõe um namespace de três níveis (catalog.schema.table) pelo qual os dados podem ser organizados. Você deve ter um metastore para cada região em que sua organização opera. Para trabalhar com o Unity Catalog, os usuários devem estar em um workspace anexado a um metastore em sua região.

Para criar um metastore, faça o seguinte:

  1. Na sua account da AWS, opcionalmente, crie um local de armazenamento para armazenamento em nível de metastore para gerenciar tabelas e volumes.

    Para obter informações que o ajudem a decidir se você precisa de armazenamento no nível do metastore, consulte (Opcional) Criar armazenamento no nível do metastore e Os dados são fisicamente separados no armazenamento.

  2. Na sua account AWS, crie uma IAM role que dê acesso a esse local de armazenamento.

  3. No Databricks, crie o metastore, anexando o local de armazenamento e atribua workspace ao metastore.

Observação

Além das abordagens descritas neste artigo, você também pode criar um metastore usando o provedor Databricks Terraform, especificamente o recurso databricks_metastore . Para permitir que o Unity Catalog acesse o metastore, use databricks_metastore_data_access. Para vincular workspace a um metastore, use databricks_metastore_assignment.

Antes de começar

Antes de começar, você deve se familiarizar com os conceitos básicos do Catálogo do Unity, incluindo metastores e gerenciamento de armazenamento. Consulte O que é Unity Catalog?.

Você também deve confirmar se atende aos seguintes requisitos para todos os passos de configuração:

  • Você deve ser um administrador account do Databricks.

  • Sua account Databricks deve estar no plano Premium ou acima.

  • Se quiser configurar o armazenamento raiz no nível do metastore, você deverá ter a capacidade de criar buckets S3, IAM role, políticas IAM e relações de confiança entreaccount em sua account AWS.

o passo 1 (opcional): Crie um bucket S3 para gerenciamento de armazenamento em nível de metastore na AWS

Nesta etapa, que é opcional, você cria o bucket S3 exigido pelo Unity Catalog para armazenar dados de gerenciamento de tabela e volume no nível do metastore. Você cria o bucket S3 em sua própria account AWS. Para determinar se você precisa de armazenamento no nível do metastore, consulte (Opcional) Criar armazenamento no nível do metastore.

  1. Na AWS, crie um bucket S3.

    Este bucket S3 será o local de armazenamento em nível de metastore para gerenciar tabelas e volumes no Unity Catalog. Esse local de armazenamento default pode ser substituído nos níveis de catálogo e esquema. Veja gerenciamento de armazenamento

    Requisitos:

    • Se você tiver mais de um metastore, deverá usar um bucket S3 dedicado para cada um.

    • Localize o bucket na mesma região do workspace do qual você deseja acessar os dados.

    • O nome do depósito não pode conter notação de ponto (por exemplo, incorrect.bucket.name.notation). Para obter mais orientações sobre nomenclatura de buckets, consulte as regras de nomenclatura de buckets da AWS.

  2. Anote o caminho do bucket S3, que começa com s3://.

  3. Se você habilitar a criptografia KMS no bucket S3, anote o nome da key de criptografia KMS .

o passo 2 (Opcional): Crie uma IAM role para acessar o local de armazenamento

Nesta etapa, que é necessária apenas se você concluiu a etapa 1, você cria a IAM role exigida pelo Unity Catalog para acessar o bucket S3 que você criou na etapa anterior.

A criação de função é um processo de duas etapas. Primeiro, você simplesmente cria a função, adicionando uma política de relacionamento de confiança temporária que você modifica posteriormente. Você deve modificar a política de confiança depois de criar a função porque sua função deve ser auto-assumida, ou seja, deve ser configurada para confiar em si mesma. A função deve, portanto, existir antes de você adicionar a declaração de autossuposição. Para obter informações sobre papéis autoassumidos, consulte os artigos do blog da Amazon.

  1. Encontre o ID da sua account do Databricks.

    1. Faça logon no console da conta do Databricks.

    2. Clique no seu nome de usuário.

    3. No menu, copie o valor da ID da conta.

  2. Na AWS, crie uma IAM role com uma política de confiança personalizada.

  3. No campo Política de confiança personalizada, cole o JSON da política a seguir, substituindo <DATABRICKS-ACCOUNT-ID> pela ID da conta do Databricks que você encontrou na passo 1 (não a ID da sua conta da AWS).

    Esta política estabelece uma relação de confiança entreaccount para que Unity Catalog possa assumir a função de acessar os dados no bucket em nome dos usuários do Databricks. Isso é especificado pelo ARN na seção Principal . É um valor estático que faz referência a uma função criada pelo Databricks. Não o modifique.

    {
      "Version": "2012-10-17",
      "Statement": [{
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL"
          ]
        },
        "Action": "sts:AssumeRole",
        "Condition": {
          "StringEquals": {
            "sts:ExternalId": "<DATABRICKS-ACCOUNT-ID>"
          }
        }
      }]
    }
    

    Se o senhor estiver usando o AWS GovCloud, use a política abaixo:

    {
      "Version": "2012-10-17",
      "Statement": [{
        "Effect": "Allow",
        "Principal": {
          "AWS": [
        "arn:aws-us-gov:iam::044793339203:role/unity-catalog-prod-UCMasterRole-1QRFA8SGY15OJ"
          ]
        },
        "Action": "sts:AssumeRole",
        "Condition": {
          "StringEquals": {
            "sts:ExternalId": "<DATABRICKS-ACCOUNT-ID>"
          }
        }
      }]
    }
    
  4. Ignore a configuração da política de permissões. Você voltará para adicioná-lo em uma passo posterior.

  5. Salve a IAM role.

  6. Modifique a política de relacionamento de confiança para torná-la “autossuposta”.

    1. Retorne à sua IAM role salva e vá para a guia Relações de confiança .

    2. Edite a política de relação de confiança, adicionando o seguinte ARN à instrução “Permitir”.

      Substitua <YOUR-AWS-ACCOUNT-ID> e <THIS-ROLE-NAME> por seus valores reais de IAM role.

      "arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
      

    Sua política agora deve ter esta aparência (com o texto de substituição atualizado para usar o ID da conta do Databricks e os valores de IAM role):

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL",
              "arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
             ]
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "<DATABRICKS-ACCOUNT-ID>"
            }
          }
        }
      ]
    }
    
  7. Na AWS, crie uma política IAM na mesma account da AWS que o bucket S3.

    Para evitar problemas inesperados, você deve usar a política de amostra a seguir, substituindo os seguintes valores:

    • <BUCKET>: o nome do bucket do S3 que você criou na passo anterior.

    • <KMS-KEY>: Opcional. Se a criptografia estiver habilitada, informe o nome da chave KMS que criptografa o conteúdo do bucket do S3. Se a criptografia estiver desabilitada, remova toda a seção KMS da política IAM.

    • <AWS-ACCOUNT-ID>: o ID da conta atual da AWS (não da sua conta do Databricks).

    • <AWS-IAM-ROLE-NAME>: nome da função AWS IAM que você criou na passo anterior.

    {
     "Version": "2012-10-17",
     "Statement": [
         {
             "Action": [
                 "s3:GetObject",
                 "s3:PutObject",
                 "s3:DeleteObject",
                 "s3:ListBucket",
                 "s3:GetBucketLocation"
             ],
             "Resource": [
                 "arn:aws:s3:::<BUCKET>/*",
                 "arn:aws:s3:::<BUCKET>"
             ],
             "Effect": "Allow"
         },
         {
             "Action": [
                 "kms:Decrypt",
                 "kms:Encrypt",
                 "kms:GenerateDataKey*"
             ],
             "Resource": [
                 "arn:aws:kms:<KMS-KEY>"
             ],
             "Effect": "Allow"
         },
         {
             "Action": [
                 "sts:AssumeRole"
             ],
             "Resource": [
                 "arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"
             ],
             "Effect": "Allow"
         }
       ]
    }
    

    Observação

    Se você precisar de uma política IAM mais restritiva para o Unity Catalog, entre em contato com o representante da Databricks para receber ajuda.

  8. Anexe a política do IAM à IAM role.

    Na IAM role Permissões da tab, anexe a política do IAM que você acabou de criar.

o passo 3: Crie o metastore e anexe um espaço de trabalho

Cada região do Databricks requer seu próprio metastore Unity Catalog .

Você cria um metastore para cada região em que sua organização opera. Você pode vincular cada um desses meta-lojas regionais a qualquer número de workspace nessa região. Cada workspace vinculado tem a mesma view dos dados no metastore e o controle de acesso aos dados pode ser gerenciado em todo workspace. Você pode acessar dados em outros meta-lojas usando Delta compartilhamento.

Se você optar por criar armazenamento em nível de metastore, o metastore usará o bucket S3 e IAM role que você criou nas etapas anteriores.

Para criar um metastore:

  1. Entre no console da contado Databricks.

  2. Clique em Ícone de catálogo Catalog.

  3. Clique em Create metastore (Criar metastore).

  4. Digite o seguinte:

    • Um nome para o metastore.

    • A região onde você deseja implantar o metastore.

      Isso deve estar na mesma região que os espaços de trabalho que você deseja usar para acessar os dados. É importante que isso corresponda à região do depósito de armazenamento que você criou anteriormente.

    • (Opcional) O caminho do bucket S3 (você pode omitir s3://) e o nome IAM role para o bucket e a função que você criou na etapa 1 (Opcional): Crie um bucket S3 para gerenciar o armazenamento em nível de metastore na AWS.

  5. Clique em Criar.

  6. Quando solicitado, selecione workspace para vincular ao metastore.

    Para obter detalhes, consulte Habilitar um workspace para o Unity Catalog.

  7. Transfira a função de administrador do metastore para um grupo.

    O usuário que cria um metastore é seu proprietário, também chamado de administrador do metastore. O administrador do metastore pode criar objetos de nível superior no metastore, como catálogos, e pode gerenciar o acesso a tabelas e outros objetos. A Databricks recomenda que você reatribua a função de administrador do metastore a um grupo. Consulte Atribuir um administrador de metastore.

  8. Habilite o gerenciamento do Databricks de upload para gerenciar volumes.

    O Databricks usa o compartilhamento de recursos de origem cruzada (CORS) para upload dados para gerenciar volumes no Catálogo do Unity. Consulte Configurar Unity Catalog account de armazenamento para CORS.

Adicionar gerenciamento de armazenamento a um metastore existente

O armazenamento de gerenciamento em nível de metastore é opcional e não está incluído para metastores que foram criados automaticamente. Talvez você queira adicionar armazenamento em nível de metastore ao seu metastore se preferir um modelo de isolamento de dados que armazene dados centralmente para vários workspace. Você precisa de armazenamento no nível do metastore se quiser compartilhar Notebook usando o Delta Sharing ou se for um parceiro do Databricks que usa locais de preparo pessoais.

Consulte também gerenciamento de armazenamento.

Requisitos

  • Você deve ter pelo menos um workspace anexado ao metastore Unity Catalog .

  • Permissões Databricks necessárias:

    • Para criar um local externo, você deve ser um administrador do metastore ou um usuário com privilégios CREATE EXTERNAL LOCATION e CREATE STORAGE CREDENTIAL .

    • Para adicionar o local de armazenamento à definição de metastore, você deve ser um administrador account .

  • Permissões da AWS necessárias: a capacidade de criar buckets S3, IAM role, políticas IAM e relações de confiança entreaccount .

o passo 1: Crie o local de armazenamento

Siga as instruções na etapa 1 (opcional): Crie um bucket S3 para gerenciamento de armazenamento em nível de metastore na AWS para criar um bucket S3 dedicado em uma account AWS na mesma região que seu metastore.

o passo 2: Crie um local externo no Unity Catalog

Nesta etapa, você cria um local externo no Catálogo do Unity que representa o bucket que você acabou de criar.

  1. Abra um workspace anexado ao metastore.

  2. Clique Ícone de catálogo Catálogo para abrir o Catalog Explorer.

  3. Clique no botão + Adicionar e selecione Adicionar um local externo.

  4. Na caixa de diálogo Criar um novo local externo , clique em AWS Quickstart (recomendado) e clique em Próximo.

    O AWS Quickstart configura o local externo e cria uma credencial de armazenamento para você. Se você optar por usar a opção Manual , deverá criar manualmente uma IAM role que dê acesso ao bucket S3 e criar você mesmo a credencial de armazenamento no Databricks.

  5. Na caixa de diálogo Criar local externo com início rápido , insira o caminho para o bucket S3 no campo Nome do bucket .

  6. Clique em Gerar novos tokens para gerar os tokens de acesso pessoal que você usará para autenticar entre o Databricks e sua account AWS.

  7. Copie os tokens e clique em Iniciar no Início rápido.

  8. No padrão AWS CloudFormation que inicia (rótulo Quick create stack), cole os tokens no campo Credenciais account do Databricks .

  9. Aceite os termos na parte inferior da página (reconheço que o AWS CloudFormation pode criar recursos IAM com nomes personalizados).

  10. Clique em Criar pilha.

    Pode levar alguns minutos para que o padrão do CloudFormation conclua a criação do objeto de localização externa no Databricks.

  11. Retorne ao seu workspace do Databricks e vá para o painel Locais externos no Catalog Explorer.

    No painel esquerdo do Catalog Explorer, role para baixo e clique em Dados Externos > Locais Externos.

  12. Confirme se um novo local externo foi criado.

    Locais externos gerados automaticamente usam a sintaxe de nomenclatura db_s3_external_databricks-S3-ingest-<id>.

  13. Conceda a si mesmo o privilégio CREATE MANAGED STORAGE no local externo.

    1. Clique no nome do local externo para abrir o painel de detalhes.

    2. Na Permissões tab, clique em Conceder .

    3. Na caixa de diálogo Conceder em <external location> , selecione você mesmo no campo Principais e selecione CREATE MANAGED STORAGE.

    4. Clique em Conceder.

o passo 3: Adicione o local de armazenamento ao metastore

Depois de criar um local externo que representa o bucket de armazenamento do metastore, você poderá adicioná-lo ao metastore.

  1. Como administrador da conta, faça login no console da conta.

  2. Clique em Ícone de catálogo Catalog.

  3. Clique no nome do metastore.

  4. Confirme que você é o administrador do Metastore.

    Caso contrário, clique em Editar e atribua-se como administrador do metastore. Você pode cancelar sua atribuição quando concluir este procedimento.

  5. Na Configuração tab, ao lado do caminho do bucket S3, clique em Definir.

  6. Na caixa de diálogo Definir raiz do metastore , insira o caminho do bucket S3 usado para criar o local externo e clique em Atualizar.

    Você não pode modificar esse caminho depois de defini-lo.

Excluir uma metaloja

Se você está fechando sua account do Databricks ou tem outro motivo para excluir o acesso aos dados gerenciados por seu metastore do Unity Catalog, você pode excluir o metastore.

Aviso

Todos os objetos gerenciados pelo metastore ficarão inacessíveis usando workspace do Databricks. Essa ação não pode ser desfeita.

os dados e metadados da tabela gerenciada serão excluídos automaticamente após 30 dias. Os dados da tabela externa em seu armazenamento cloud não são afetados pela exclusão do metastore.

Para excluir um metastore:

  1. Como administrador do metastore, logs in no console da conta.

  2. Clique em Ícone de catálogo Catalog.

  3. Clique no nome do metastore.

  4. Na tab Configuração , clique no menu de três botões no canto superior direito e selecione Excluir.

  5. Na caixa de diálogo de confirmação, insira o nome do metastore e clique em Excluir.