Metastore Hive

O metastore do Dataproc é um metastore (HMS) Apache Hive totalmente gerenciado, altamente disponível, recuperado e sem servidor que é executado no Google Cloud.

Para gerenciar totalmente os metadados, o metastore do Dataproc mapeia os dados para as tabelas do Apache Hive.

Versões compatíveis do Apache Hive

O metastore do Dataproc só oferece suporte a versões específicas do Apache Hive. Para mais informações, consulte a política da versão do Hive.

Como o Hive lida com metadados

Como o Metastore do Dataproc é um metastore Hive, é importante entender como ele gerencia seus metadados.

Por padrão, todos os aplicativos Hive podem ter tabelas internas gerenciadas ou tabelas externas não gerenciadas. Ou seja, os metadados armazenados em um serviço do metastore do Dataproc podem existir em tabelas internas e externas.

Ao modificar dados, um serviço do Dataproc Metastore (Hive) trata tabelas internas e externas de maneira diferente.

  • Tabelas internas. Gerencia metadados e dados de tabelas.
  • Tabelas externas. Só gerencia metadados.

Por exemplo, se você excluir uma definição de tabela usando a instrução SQL do Hive DROP TABLE:

drop table foo
  • Tabelas internas. O metastore do Dataproc exclui todos os metadados. Os arquivos associados à tabela também serão excluídos.

  • Tabelas externas. O metastore do Dataproc exclui apenas os metadados. Ela mantém os dados associados à tabela.

Diretório de depósito do Hive

O metastore do Dataproc usa o diretório de armazenamento Hive para gerenciar suas tabelas internas. Os dados reais são armazenados no diretório de armazenamento do Hive.

Quando você usa um serviço do Dataproc Metastore, o diretório de armazenamento padrão do Hive é um bucket do Cloud Storage. O metastore do Dataproc só aceita o uso de buckets do Cloud Storage para o diretório de armazenamento. Em comparação, isso é diferente de um HMS local, em que o diretório do armazenamento do Hive geralmente aponta para um diretório local.

Esse bucket é criado automaticamente toda vez que você cria um serviço do metastore do Dataproc. Esse valor pode ser alterado definindo uma substituição da configuração do Hive Metastore na propriedade hive.metastore.warehouse.dir.

Buckets de artefatos do Cloud Storage

O bucket de artefatos armazena os artefatos do Dataproc Metastore, como metadados exportados e dados de tabelas internos gerenciados.

Quando você cria um serviço Metastore do Dataproc, um bucket do Cloud Storage é criado automaticamente no projeto para você. Por padrão, o bucket de artefatos e o diretório de armazenamento apontam para o mesmo bucket. Não é possível alterar o local do bucket de artefatos. No entanto, o local do diretório de armazenamento do Hive pode ser alterado.

O bucket de artefatos está localizado no seguinte local:

  • gs://your-artifacts-bucket/hive-warehouse.
  • Por exemplo, gs://gcs-your-project-name-0825d7b3-0627-4637-8fd0-cc6271d00eb4

Acessar o diretório do warehouse do Hive

Depois que o bucket for criado automaticamente, verifique se as contas de serviço do Dataproc têm permissão para acessar o diretório de armazenamento do Hive.

  • Para acessar o diretório de armazenamento no nível do objeto (por exemplo, gs://mybucket/object), conceda às contas de serviço do Dataproc acesso de leitura e gravação ao objeto de armazenamento do bucket usando o papel roles/storage.objectAdmin. Esse papel precisa ser definido no nível do bucket ou superior.

  • Para acessar o diretório de warehouse ao usar uma pasta de nível superior (por exemplo, gs://mybucket), use o papel roles/storage.storageAdmin para conceder às contas de serviço do Dataproc acesso de leitura e gravação ao objeto de armazenamento do bucket.

Se o diretório de armazenamento do Hive não estiver no mesmo projeto que o metastore do Dataproc, verifique se o agente de serviço do metastore do Dataproc tem permissão para acessar o diretório de armazenamento do Hive. O agente de serviço de um projeto Metastore do Dataproc é service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com. Conceda ao agente de serviço acesso de leitura e gravação ao bucket usando o papel roles/storage.objectAdmin.

Encontre o diretório do warehouse do Hive

  1. Abra a página Metastore do Dataproc.
  2. Clique no nome do seu serviço.

    A página "Detalhes do serviço" é aberta.

  3. Na tabela de configuração, encontre Substituições de configuração do Metastore > hive.metastore.warehouse.dir.

  4. Encontre o valor que começa com gs://.

    Esse valor é o local do diretório do armazenamento do Hive.

    Valores de hive.metastore.warehouse.dir

Mudar o diretório do warehouse do Hive

Para usar seu próprio bucket do Cloud Storage com o metastore do Dataproc, defina uma substituição da configuração do Hive Metastore para apontar para o novo local do bucket.

Se você alterar o diretório padrão do warehouse, siga estas recomendações.

  • Não use a raiz do bucket do Cloud Storage (gs://mybucket) para armazenar tabelas do Hive.

  • Verifique se a conta de serviço de VM do metastore do Dataproc tem permissão para acessar o diretório de armazenamento do Hive.

  • Para melhores resultados, use os buckets do Cloud Storage localizados na mesma região do serviço Metastore do Dataproc. Embora o metastore do Dataproc permita buckets entre regiões, os recursos colocalizados têm melhor desempenho. Por exemplo, um bucket multirregional da UE não funciona bem com um serviço us-central1. O acesso entre regiões resulta em maior latência, falta de isolamento de falha regional e cobranças por largura de banda de rede entre regiões.

Para mudar o diretório do warehouse do Hive

  1. Abra a página Metastore do Dataproc.
  2. Clique no nome do seu serviço.

    A página "Detalhes do serviço" é aberta.

  3. Na tabela de configuração, encontre a seção Substituições de configuração do Metastore > hive.metastore.warehouse.dir.

  4. Altere o valor hive.metastore.warehouse.dir para o local do novo bucket. Por exemplo, gs://my-bucket/path/to/location.

Excluir o bucket

A exclusão do serviço do Dataproc Metastore não remove automaticamente o bucket de artefatos do Cloud Storage. O bucket não é excluído automaticamente porque pode conter dados úteis após o serviço. Para excluir o bucket, execute uma operação de exclusão do Cloud Storage.

A seguir