O Dataproc Metastore é um metastore (HMS) do Apache Hive totalmente gerido, de elevada disponibilidade, com autocorreção, sem servidor e que é executado no Google Cloud.
Para gerir totalmente os seus metadados, o Dataproc Metastore mapeia os seus dados para tabelas do Apache Hive.
Versões do Apache Hive compatíveis
O Dataproc Metastore só suporta versões específicas do Apache Hive. Para mais informações, consulte a Política de Versões do Hive.
Como o Hive processa os metadados
Uma vez que o Dataproc Metastore é um metastore do Hive, é importante compreender como gere os seus metadados.
Por predefinição, todas as aplicações Hive podem ter tabelas internas geridas ou tabelas externas não geridas. Isto significa que os metadados que armazena num serviço Dataproc Metastore podem existir em tabelas internas e externas.
Quando modifica dados, um serviço do Dataproc Metastore (Hive) trata as tabelas internas e externas de forma diferente.
- Tabelas internas. Gerem os metadados e os dados das tabelas.
- Tabelas externas. Apenas gere metadados.
Por exemplo, se eliminar uma definição de tabela através da declaração DROP TABLE
Hive SQL:
drop table foo
Tabelas internas. O Dataproc Metastore elimina todos os metadados. Também elimina os ficheiros associados à tabela.
Tabelas externas. O Dataproc Metastore elimina apenas os metadados. Mantém os dados associados à tabela.
Diretório de armazéns do Hive
O Dataproc Metastore usa o diretório do armazém do Hive para gerir as suas tabelas internas. O diretório do armazém do Hive é onde os seus dados reais são armazenados.
Quando usa um serviço Dataproc Metastore, o diretório do armazém do Hive predefinido é um contentor do Cloud Storage. O Dataproc Metastore só suporta a utilização de contentores do Cloud Storage para o diretório do armazém. Em comparação, isto é diferente de um HMS no local, em que o diretório do armazém de dados do Hive aponta normalmente para um diretório local.
Este contentor é criado automaticamente sempre que cria um serviço do Dataproc Metastore. Pode alterar este valor definindo uma substituição da configuração do Hive Metastore na propriedade hive.metastore.warehouse.dir
.
Contentores do Cloud Storage de artefactos
O contentor de artefactos armazena os artefactos do Dataproc Metastore, como metadados exportados e dados de tabelas internas geridas.
Quando cria um serviço Dataproc Metastore, é criado automaticamente um contentor do Cloud Storage no seu projeto. Por predefinição, o contentor de artefactos e o diretório do armazém apontam para o mesmo contentor. Não pode alterar a localização do contentor de artefactos. No entanto, pode alterar a localização do diretório do armazém do Hive.
O contentor de artefactos encontra-se na seguinte localização:
gs://your-artifacts-bucket/hive-warehouse
.- Por exemplo,
gs://gcs-your-project-name-0825d7b3-0627-4637-8fd0-cc6271d00eb4
.
Aceda ao diretório do armazém do Hive
Depois de o contentor ser criado automaticamente, certifique-se de que as contas de serviço do Dataproc têm autorização para aceder ao diretório do armazém do Hive.
Para aceder ao diretório do armazém ao nível do objeto (por exemplo, gs://mybucket/object), conceda às contas de serviço do Dataproc acesso de leitura e escrita ao objeto de armazenamento do contentor, através da função
roles/storage.objectAdmin
. Esta função tem de ser definida ao nível do contentor ou superior.Para aceder ao diretório do armazém quando usa uma pasta de nível superior (por exemplo, gs://mybucket), conceda às contas de serviço do Dataproc acesso de leitura e escrita ao objeto de armazenamento do contentor, usando a função
roles/storage.storageAdmin
.
Se o diretório do armazém de dados do Hive não estiver no mesmo projeto que o
Dataproc Metastore, certifique-se de que o agente de serviço do
Dataproc Metastore tem autorização para aceder ao diretório do armazém de dados do Hive. O agente de serviço de um projeto do Dataproc Metastore é service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com
.
Conceda ao agente de serviço acesso de leitura e escrita ao contentor através da função
roles/storage.objectAdmin
.
Encontre o diretório do armazém do Hive
- Abra a página Dataproc Metastore.
Clique no nome do seu serviço.
É apresentada a página de detalhes do serviço.
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://
.Este valor é a localização do diretório do seu armazém de dados do Hive.
Altere o diretório do armazém do Hive
Para usar o seu próprio contentor do Cloud Storage com o Dataproc Metastore, defina uma substituição da configuração do Hive Metastore para apontar para a nova localização do contentor.
Se alterar o diretório de armazém predefinido, siga estas recomendações.
Não use a raiz do contentor do Cloud Storage (
gs://mybucket
) para armazenar tabelas do Hive.Certifique-se de que a conta de serviço da VM do Dataproc Metastore tem autorização para aceder ao diretório do armazém do Hive.
Para obter os melhores resultados, use contentores do Cloud Storage localizados na mesma região que o seu serviço Dataproc Metastore. Embora o Dataproc Metastore permita buckets entre regiões, os recursos colocados têm um melhor desempenho. Por exemplo, um contentor multirregional da UE não funciona bem com um serviço
us-central1
. O acesso entre regiões resulta numa latência mais elevada, na falta de isolamento de falhas regionais e em custos de largura de banda de rede entre regiões.
Para alterar o diretório do armazém de dados do Hive
- Abra a página Dataproc Metastore.
Clique no nome do seu serviço.
É apresentada a página de detalhes do serviço.
Na tabela de configuração, encontre a secção Substituições da configuração do metastore > hive.metastore.warehouse.dir.
Altere o valor
hive.metastore.warehouse.dir
para a localização do novo contentor. Por exemplo,gs://my-bucket/path/to/location
.
Elimine o seu contentor
A eliminação do serviço Dataproc Metastore não elimina automaticamente o contentor de artefactos do Cloud Storage. O seu contentor não é eliminado automaticamente porque pode conter dados úteis pós-serviço. Para eliminar o seu contentor, execute uma operação de eliminação do Cloud Storage.