Nesta página, mostramos como configurar um serviço multirregional do metastore do Dataproc. Para mais informações sobre como os serviços multirregionais do Metastore do Dataproc funcionam, consulte Regiões de Metastore do Dataproc.
Antes de começar
- Ative o metastore do Dataproc no seu projeto.
- Entenda os requisitos de rede específicos do projeto.
- Saiba mais sobre as regiões do metastore do Dataproc e escolha uma região apropriada.
Funções exigidas
Para ter a permissão necessária para criar um serviço multirregional do Dataproc Metastore, peça ao administrador para conceder a você os seguintes papéis do IAM no seu projeto, com base no princípio de privilégio mínimo:
-
Conceder controle total dos recursos do metastore do Dataproc (
roles/metastore.editor
) -
Conceder acesso total a todos os recursos do metastore do Dataproc, incluindo a administração de políticas do IAM (
roles/metastore.admin
)
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Esse papel predefinido contém a permissão
metastore.services.create
, que é
necessária para criar um serviço multirregional do Dataproc Metastore.
Também é possível conseguir essa permissão com papéis personalizados ou outros papéis predefinidos.
Para mais informações sobre permissões e papéis específicos do metastore do Dataproc, consulte Gerenciar o acesso com o IAM.Sobre os serviços multirregionais do metastore do Dataproc
Os serviços multirregionais do Dataproc Metastore armazenam seus dados em duas
regiões diferentes e usam as duas regiões para executar as cargas de trabalho. Por exemplo,
o nam7
multirregional contém as regiões us-central1
e us-east4
.
Um serviço multirregional do Dataproc Metastore replica metadados em duas regiões e expõe os endpoints relevantes para acessar o Hive Metastore. Para gRPC, um endpoint por região é exposto. No Thrift, um endpoint por sub-rede é exposto.
Um serviço multirregional do Dataproc Metastore fornece uma configuração de cluster de alta disponibilidade (HA, na sigla em inglês) ativo-ativo. Essa configuração significa que as cargas de trabalho podem acessar qualquer região ao executar jobs. Ele também fornece um mecanismo de failover para seu serviço. Por exemplo, se o endpoint regional principal ficar inativo, as cargas de trabalho serão roteadas automaticamente para a região secundária. Isso ajuda a evitar interrupções nos jobs do Dataproc.
Considerações
As considerações a seguir se aplicam aos serviços multirregionais do Dataproc Metastore.
Os serviços multirregionais aceitam apenas o tipo de banco de dados do Spanner. Verifique a lista de recursos compatíveis antes de criar o serviço multirregional.
Os serviços multirregionais são compatíveis apenas com as configurações do Dataproc Metastore 2.
Os serviços multirregionais criam buckets de artefatos em um local multirregional do Cloud Storage. Por exemplo, buckets
Nam7
são criados no local multirregionalUS
.
Criar um serviço multirregional do Dataproc Metastore
Escolha uma das seguintes guias para aprender a criar um serviço multirregional usando o protocolo de endpoint Thrift ou gRPC, com um serviço Metastore do Dataproc 2.
gRPC
Ao criar um serviço multirregional que usa o protocolo de endpoint do gRPC, não é necessário definir nenhuma configuração de rede específica. O protocolo gRPC lida com o roteamento de rede para você.
Console
No console do Google Cloud, acesse a página Metastore do Dataproc.
Na barra de navegação, clique em +Criar.
A caixa de diálogo Criar serviço de metastore é aberta.
Selecione Dataproc Metastore 2.
Na seção Preço e capacidade, selecione Enterprise Plus - birregional.
Em Protocolo do endpoint, selecione gRPC*.
Para criar e iniciar o serviço, clique em Enviar.
Seu novo serviço de metastore aparece na página Metastore do Dataproc. O status será exibido como Criando até que o serviço esteja pronto para uso. Quando ela estiver pronta, o status mudará para Ativo. O provisionamento do serviço pode levar alguns minutos.
CLI da gcloud
Para criar um serviço multirregional do Dataproc Metastore, execute o
comando gcloud metastore services create
a seguir. Esse comando cria o metastore do Dataproc versão 3.1.2.
gcloud metastore services create SERVICE \ --location=MULTI_REGION \ { --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \ --endpoint-protocol=grpc
Substitua:
SERVICE
: o nome do serviço Metastore do Dataproc.MULTI_REGION
: a multirregião em que você está criando o serviço Metastore do Dataproc.INSTANCE_SIZE
: o tamanho da instância do metastore multirregional do Dataproc. Por exemplo,small
,medium
oularge
. Se você especificar um valor paraINSTANCE_SIZE
, não especifique um valor paraSCALING_FACTOR
.SCALING_FACTOR
: o fator de escalonamento do serviço Metastore do Dataproc. Por exemplo,0.1
. Se você especificar um valor paraSCALING_FACTOR
, não especifique um valor paraINSTANCE_SIZE
.
Economia
Ao criar um serviço multirregional que usa o protocolo de endpoint Thrift, é preciso definir as configurações de sub-rede apropriadas. Nesse caso, para cada rede VPC que você está usando, é preciso fornecer pelo menos uma sub-rede de cada região.
Por exemplo, para criar a multirregião nam7
, você precisa fornecer as regiões us-central1
e us-east4
.
Console
No console do Google Cloud, acesse a página Metastore do Dataproc.
Na barra de navegação, clique em +Criar.
A caixa de diálogo Criar serviço de metastore é aberta.
Selecione Dataproc Metastore 2.
Na seção Preço e capacidade, selecione Enterprise Plus - birregional.
Para mais informações, consulte planos de preços e configurações de escalonamento.
No campo Nome do serviço, insira um nome exclusivo para o serviço.
Para mais informações sobre convenções de nomenclatura, consulte a Convenção de nomenclatura de recursos.
Em Protocolo do endpoint, selecione Thrift.
Em Configuração de rede, forneça as sub-redes que formam a configuração multirregional escolhida.
Para as opções de configuração de serviço restantes, use os padrões fornecidos.
Para criar e iniciar o serviço, clique em Enviar.
Seu novo serviço de metastore aparece na página Metastore do Dataproc. O status será exibido como Criando até que o serviço esteja pronto para uso. Quando ela estiver pronta, o status mudará para Ativo. O provisionamento do serviço pode levar alguns minutos.
CLI da gcloud
Para criar um serviço multirregional do Dataproc Metastore,
execute o seguinte comando gcloud metastore services create
.
Esse comando cria o metastore do Dataproc versão 3.1.2.
gcloud metastore services create SERVICE \ --location=MULTI_REGION \ --consumer-subnetworks="projects/PROJECT_ID/regions/LOCATION1/subnetworks/SUBNET1,projects/PROJECT_ID/regions/LOCATION2/subnetworks/SUBNET2" \ { --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \ --endpoint-protocol=thrift
Também é possível armazenar suas configurações de rede em um arquivo, conforme mostrado no comando a seguir.
gcloud metastore services create SERVICE \ --location=MULTI_REGION \ --network-config-from-file=NETWORK_CONFIG_FROM_FILE { --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \ --endpoint-protocol=thrift
Substitua:
SERVICE
: o nome do serviço Metastore do Dataproc.MULTI_REGION
: a multirregião em que o serviço Metastore do Dataproc está sendo criado.PROJECT_ID
: o ID do projeto do Google Cloud em que você está criando o serviço Metastore do Dataproc.SUBNET1
,SUBNET2
: uma lista de sub-redes que formam uma configuração multirregional. Você pode usar o ID, o URL totalmente qualificado ou o nome relativo da sub-rede. Você pode especificar até seis sub-redes.LOCATION1
,LOCATION2
: uma lista de locais que formam uma configuração multirregional. Você pode usar o ID do local. Por exemplo, para uma multirregiãonam7
, useus-central1
eus-east4
.NETWORK_CONFIG_FROM_FILE
: o caminho para um arquivo YAML contendo a configuração de rede.INSTANCE_SIZE
: o tamanho da instância do metastore multirregional do Dataproc. Por exemplo,small
,medium
oularge
. Se você especificar um valor paraINSTANCE_SIZE
, não especifique um valor paraSCALING_FACTOR
.SCALING_FACTOR
: o fator de escalonamento do serviço Metastore do Dataproc. Por exemplo,0.1
. Se você especificar um valor paraSCALING_FACTOR
, não especifique um valor paraINSTANCE_SIZE
.
REST
Para saber como criar um serviço multirregional do Metastore do Dataproc, siga as instruções de como criar um serviço usando as APIs Explorer do Google.
Para configurar um serviço multirregional, forneça as seguintes informações
nos objetos Network Config
.
"network_config": { "consumers": [ {"subnetwork": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET1"}, {"subnetwork": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET2"} ], "scaling_config": { "scaling_factor": SCALING_FACTOR } }
Substitua:
PROJECT_ID
: o ID do projeto do Google Cloud que contém o serviço Metastore do Dataproc.LOCATION
: a região do Google Cloud em que o serviço Metastore do Dataproc reside.SUBNET1
,SUBNET2
: uma lista de sub-redes que formam uma configuração multirregional. Você pode usar o ID, o URL totalmente qualificado ou o nome relativo da sub-rede. É possível especificar até cinco sub-redes.SCALING_FACTOR
: o fator de escalonamento que você quer usar para o serviço.
Conectar o metastore do Dataproc a um cluster do Dataproc
Escolha uma das guias a seguir para aprender a conectar um serviço multirregional do Metastore do Dataproc a partir de um cluster do Dataproc.
gRPC
Para conectar um cluster do Dataproc, escolha a guia correspondente à versão do metastore do Dataproc que você está usando.
Metastore do Dataproc 3.1.2
Crie as variáveis a seguir para o cluster do Dataproc:
CLUSTER_NAME=CLUSTER_NAME PROJECT_ID=PROJECT_ID MULTI_REGION=MULTI_REGION DATAPROC_IMAGE_VERSION=DATAPROC_IMAGE_VERSION PROJECT=PROJECT SERVICE_ID=SERVICE_ID
Substitua:
CLUSTER_NAME
: o nome do cluster do Dataproc.PROJECT_ID
: o projeto do Google Cloud que contém o cluster do Dataproc. Verifique se a sub-rede que você está usando tem as permissões apropriadas para acessar esse projeto.MULTI_REGION
: a multirregião do Google Cloud em que você quer criar o cluster do Dataproc.DATAPROC_IMAGE_VERSION
: a versão da imagem do Dataproc que você está usando com o serviço Metastore do Dataproc. Use a versão de imagem2.0
ou mais recente.PROJECT
: o projeto que contém o serviço Metastore do Dataproc.SERVICE_ID
: o ID do serviço do Metastore do Dataproc.
Para criar o cluster, execute o seguinte comando
gcloud dataproc clusters create
.--enable-kerberos
é opcional. Só inclua essa opção se você estiver usando o kerberos com o cluster.gcloud dataproc clusters create ${CLUSTER_NAME} \ --project ${PROJECT_ID} \ --region ${MULTI_REGION} \ --image-version ${DATAPROC_IMAGE_VERSION} \ --scopes "https://www.googleapis.com/auth/cloud-platform" \ --dataproc-metastore projects/${PROJECT}/locations/${MULTI_REGION}/services/${SERVICE_ID} \ [ --enable-kerberos ]
Metastore do Dataproc 2.3.6
Crie as seguintes variáveis para o serviço Metastore do Dataproc:
METASTORE_PROJECT=METASTORE_PROJECT METASTORE_ID=METASTORE_ID MULTI_REGION=MULTI_REGION SUBNET=SUBNET
Substitua:
METASTORE_PROJECT
: o projeto do Google Cloud que contém o serviço Metastore do Dataproc.METASTORE_ID
: o ID do serviço do Metastore do Dataproc.MULTI_REGION
: o local multirregional que você quer usar para o serviço Metastore do Dataproc.SUBNET
: uma das sub-redes que você está usando para o serviço Metastore do Dataproc. ou qualquer sub-rede na rede VPC mãe das sub-redes usadas para seu serviço.
Crie as variáveis a seguir para o cluster do Dataproc:
CLUSTER_NAME=CLUSTER_NAME DATAPROC_PROJECT=DATAPROC_PROJECT DATAPROC_REGION=DATAPROC_REGION HIVE_VERSION=HIVE_VERSION IMAGE_VERSION=
r>IMAGE_VERSION Substitua:
CLUSTER_NAME
: o nome do cluster do Dataproc.DATAPROC_PROJECT
: o projeto do Google Cloud que contém o cluster do Dataproc. Verifique se a sub-rede que você está usando tem as permissões apropriadas para acessar esse projeto.DATAPROC_REGION
: a região do Google Cloud em que você quer criar o cluster do Dataproc.HIVE_VERSION
: a versão do Hive que o serviço do Metastore do Dataproc usa.IMAGE_VERSION
: a versão da imagem do Dataproc que você está usando com o serviço Metastore do Dataproc.- Para a versão 2.0 do metastore Hive, use a versão de imagem
1.5
. - Para a versão 3.1.2 do metastore Hive, use a versão de imagem
2.0
.
- Para a versão 2.0 do metastore Hive, use a versão de imagem
Recupere o diretório de warehouse do serviço Metastore do Dataproc e armazene-o em uma variável.
WAREHOUSE_DIR=$(gcloud metastore services describe "${METASTORE_ID}" --project "${METASTORE_PROJECT}" --location "${MULTI_REGION}" --format="get(hiveMetastoreConfig.configOverrides[hive.metastore.warehouse.dir])")
Criar um cluster do Dataproc configurado com um metastore multirregional do Dataproc.
gcloud dataproc clusters create ${CLUSTER_NAME} \ --project "${DATAPROC_PROJECT}" \ --region ${DATAPROC_REGION} \ --scopes "https://www.googleapis.com/auth/cloud-platform" \ --subnet "${SUBNET}" \ --optional-components=DOCKER \ --image-version ${IMAGE_VERSION} \ --metadata "hive-version=${HIVE_VERSION},dpms-name=${DPMS_NAME}" \ --properties "hive:hive.metastore.uris=thrift://localhost:9083,hive:hive.metastore.warehouse.dir=${WAREHOUSE_DIR}" \ --initialization-actions gs://metastore-init-actions/mr-metastore-grpc-proxy/metastore-grpc-proxy.sh
Economia
Opção 1: editar o arquivo hive-site.xml
- Encontre o URI do endpoint e o diretório de armazenamento do serviço Metastore do Dataproc. É possível escolher qualquer um dos endpoints expostos.
- No console do Google Cloud, acesse a página Instâncias de VM.
Na lista de instâncias de máquina virtual, clique em SSH na linha do nó principal do Dataproc (
.*-m
).Uma janela de navegador é aberta no diretório principal do nó.
Abra o arquivo
/etc/hive/conf/hive-site.xml
.sudo vim /etc/hive/conf/hive-site.xml
Você verá uma resposta semelhante a esta:
<property> <name>hive.metastore.uris</name> <value>ENDPOINT_URI</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>WAREHOUSE_DIR</value> </property>
Substitua:
ENDPOINT_URI
: o URI do endpoint do serviço Metastore do Dataproc.WAREHOUSE_DIR
: o local do diretório de warehouse do Hive.
Reinicie o HiveServer2:
sudo systemctl restart hive-server2.service
Opção 2: usar a CLI gcloud
Execute o seguinte comando gcloud dataproc clusters create
da CLI gcloud.
- Encontre o URI do endpoint e o diretório de armazenamento do serviço Metastore do Dataproc. É possível escolher qualquer um dos endpoints expostos.
gcloud dataproc clusters create CLUSTER_NAME \ --network NETWORK \ --project PROJECT_ID \ --scopes "https://www.googleapis.com/auth/cloud-platform" \ --image-version IMAGE_VERSION \ --properties "hive:hive.metastore.uris=ENDPOINT,hive:hive.metastore.warehouse.dir=WAREHOUSE_DIR"
Substitua:
CLUSTER_NAME
: o nome do cluster do Dataproc.NETWORK
: o projeto do Google Cloud que contém o cluster do Dataproc. Verifique se a sub-rede que você está usando tem as permissões apropriadas para acessar esse projeto.PROJECT_ID
: a versão do Hive que o serviço do Metastore do Dataproc usa.IMAGE_VERSION
: a versão da imagem do Dataproc que você está usando com o serviço Metastore do Dataproc.- Para a versão 2.0 do metastore Hive, use a versão de imagem
1.5
. - Para a versão 3.1.2 do metastore Hive, use a versão de imagem
2.0
.
- Para a versão 2.0 do metastore Hive, use a versão de imagem
ENDPOINT
: o endpoint do Thrift usado pelo Metastore do Dataproc.WAREHOUSE_DIR
: o diretório de armazenamento do Metastore do Dataproc.