O metastore do Dataproc é um metastore Apache Hive (HMS) totalmente gerenciado, altamente disponível, de recuperação automática e sem servidor que é executado em Google Cloud.
Para gerenciar totalmente os metadados, o metastore do Dataproc mapeia os dados para tabelas do Apache Hive.
Versões compatíveis do Apache Hive
O metastore do Dataproc só é compatível com versões específicas do Apache Hive. Para mais informações, consulte a política de versões do Hive.
Como o Hive processa 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 metastore do Dataproc (Hive) trata tabelas internas e externas de maneira diferente.
- Tabelas internas. Gerencia metadados e dados de tabelas.
- Tabelas externas. Gerencia apenas metadados.
Por exemplo, se você excluir uma definição de tabela usando a instrução DROP TABLE do Hive SQL:
drop table my_table
Tabelas internas. O metastore do Dataproc exclui todos os metadados. Ele também exclui os arquivos associados à tabela.
Tabelas externas. O metastore do Dataproc exclui apenas os metadados. Ele mantém os dados associados à tabela.
Diretório de armazenamento do Hive
O metastore do Dataproc usa o diretório de armazenamento do Hive para gerenciar suas tabelas internas. O diretório de armazenamento do Hive é onde os dados reais são armazenados.
Quando você usa um serviço do metastore do Dataproc, o diretório de armazenamento padrão do Hive é um bucket do Cloud Storage. O metastore do Dataproc só oferece suporte ao 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 de armazenamento do Hive geralmente aponta para um diretório local.
Esse bucket é criado automaticamente para você sempre que você cria um serviço do metastore do Dataproc. Esse valor pode ser alterado definindo
uma substituição de configuração do metastore do Hive na hive.metastore.warehouse.dir
propriedade.
Buckets de artefatos do Cloud Storage
O bucket de artefatos armazena os artefatos do metastore do Dataproc, como metadados exportados e dados de tabelas internas gerenciadas.
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 mudar o local do bucket de artefatos, mas é possível mudar o local do diretório de armazenamento do Hive.
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 de armazenamento do Hive
Depois que o bucket for criado automaticamente, verifique se as contas de serviço do Serviço Gerenciado para Apache Spark 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 Serviço Gerenciado para Apache Spark 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 armazenamento ao usar uma pasta de nível superior (por exemplo, gs://mybucket), conceda às contas de serviço do Serviço Gerenciado para Apache Spark acesso de leitura e gravação ao objeto de armazenamento do bucket usando o papel
roles/storage.storageAdmin.
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 do 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
roles/storage.objectAdmin papel.
Encontrar o diretório de armazenamento do Hive
- Abra a página Metastore do Dataproc.
Clique no nome do serviço.
A página Detalhes do serviço é aberta.
Na tabela de configuração, encontre Substituições de configuração do metastore > hive.metastore.warehouse.dir.
Encontre o valor que começa com
gs://.Esse valor é o local do diretório de armazenamento do Hive.

Mudar o diretório de armazenamento do Hive
Para usar seu próprio bucket do Cloud Storage com o metastore do Dataproc, defina uma substituição de configuração do metastore do Hive para apontar para o novo local do bucket.
Se você mudar o diretório de armazenamento padrão, siga estas recomendações.
Não use a raiz do bucket do Cloud Storage (
gs://mybucket) para armazenar tabelas Hive.Verifique se a conta de serviço da 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
europe-west1não funciona bem com um serviçous-central1. O acesso entre regiões resulta em maior latência, falta de isolamento da falha regional e cobranças pela largura de banda da rede entre regiões.
Para mudar o diretório de armazenamento do Hive
- Abra a página Metastore do Dataproc.
Clique no nome do serviço.
A página Detalhes do serviço é aberta.
Na tabela de configuração, encontre a seção Substituições de configuração do metastore > hive.metastore.warehouse.dir.
Mude o valor
hive.metastore.warehouse.dirpara o local do novo bucket. Por exemplo,gs://my-bucket/path/to/location.
Excluir o bucket
A exclusão do serviço do metastore do Dataproc não exclui automaticamente o bucket de artefatos do Cloud Storage. O bucket não é excluído automaticamente porque pode conter dados úteis pós-serviço. Para excluir o bucket, execute uma operação de exclusão do Cloud Storage.