Configurar um serviço Metastore do Dataproc multirregional

Esta página mostra como configurar um serviço do metastore do Dataproc multirregional. Para mais informações sobre como os serviços multirregionais do metastore do Dataproc funcionam, consulte Regiões do metastore do Dataproc.

Antes de começar

Funções exigidas

Para receber a permissão necessária para criar um serviço de Metastore do Dataproc multirregional, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto, com base no princípio de privilégio mínimo:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém a permissão metastore.services.create, que é necessária para criar um serviço de Metastore do Dataproc multirregional.

Também é possível conseguir essa permissão com papéis personalizados ou outros papéis predefinidos.

Para mais informações sobre papéis e permissões específicos do Dataproc Metastore, consulte Gerenciar o acesso com o IAM.

Sobre os serviços multirregionais do Dataproc Metastore

Os serviços multirregionais do Dataproc Metastore armazenam seus dados em duas regiões diferentes e usam as duas para executar seus workloads. Por exemplo, a multirregião nam7 contém as regiões us-central1 e us-east4.

  • Um serviço do metastore do Dataproc multirregional replica metadados em duas regiões e expõe os endpoints relevantes para acessar o metastore do Hive. Para gRPC, um endpoint por região é exposto. Para o Thrift, um endpoint por sub-rede é exposto.

  • Um serviço de metastore multirregional do Dataproc fornece uma configuração de cluster de alta disponibilidade (HA) ativo-ativo. Essa configuração significa que as cargas de trabalho podem acessar qualquer região ao executar jobs. Ele também oferece um mecanismo de failover para seu serviço. Por exemplo, se o endpoint regional principal falhar, as cargas de trabalho serão roteadas automaticamente para a região secundária. Isso ajuda a evitar interrupções nos seus trabalhos do Dataproc.

Considerações

As considerações a seguir se aplicam a serviços multirregionais do metastore do Dataproc.

Criar um serviço Metastore do Dataproc multirregional

Escolha uma das guias a seguir para saber como 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 gRPC, não é necessário definir configurações de rede específicas. O protocolo gRPC processa o roteamento de rede para você.

Console

  1. No console do Google Cloud, acesse a página Metastore do Dataproc.

    Acesse o metastore do Dataproc

  2. Na barra de navegação, clique em +Criar.

    A caixa de diálogo Criar serviço de metastore é aberta.

  3. Selecione Dataproc Metastore 2.

  4. Na seção Preços e capacidade, selecione Enterprise Plus: birregional.

  5. Para o Protocolo do endpoint, selecione gRPC.

  6. Para criar e iniciar o serviço, clique em Enviar.

    O novo serviço de metastore aparece na página Metastore do Dataproc. O status Criando é exibido até que o serviço esteja pronto para uso. Quando estiver pronto, o status vai 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 a versão 3.1.2 do Dataproc Metastore.

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 do metastore do Dataproc.
  • MULTI_REGION: a várias regiões em que você está criando o serviço do metastore do Dataproc.
  • INSTANCE_SIZE: o tamanho da instância do metastore multirregional do Dataproc. Por exemplo, small, medium ou large. Se você especificar um valor para INSTANCE_SIZE, não especifique um valor para SCALING_FACTOR.
  • SCALING_FACTOR: o fator de escalonamento do seu serviço do metastore do Dataproc. Por exemplo, 0.1. Se você especificar um valor para SCALING_FACTOR, não especifique um valor para INSTANCE_SIZE.

Economia

Ao criar um serviço multirregional que usa o protocolo de endpoint Thrift, é necessário definir as configurações de subrede adequadas. Nesse caso, para cada rede VPC que você estiver usando, é necessário fornecer pelo menos uma sub-rede de cada região.

Por exemplo, para criar a multirregião nam7, é necessário fornecer as regiões us-central1 e us-east4.

Console

  1. No console do Google Cloud, acesse a página Metastore do Dataproc.

    Acesse o metastore do Dataproc

  2. Na barra de navegação, clique em +Criar.

    A caixa de diálogo Criar serviço de metastore é aberta.

  3. Selecione Dataproc Metastore 2.

  4. Na seção Preços e capacidade, selecione Enterprise Plus: birregional.

    Para mais informações, consulte planos de preços e configurações de escalonamento.

  5. No campo Nome do serviço, insira um nome exclusivo para o serviço.

    Para informações sobre as convenções de nomenclatura, consulte Convenção de nomenclatura de recursos.

  6. Para o Protocolo do endpoint, selecione Thrift.

  7. Em Configuração de rede, forneça as sub-redes que formam a configuração multirregional escolhida.

  8. Para as demais opções de configuração do serviço, use os padrões fornecidos.

  9. Para criar e iniciar o serviço, clique em Enviar.

    O novo serviço de metastore aparece na página Metastore do Dataproc. O status Criando é exibido até que o serviço esteja pronto para uso. Quando estiver pronto, o status vai mudar para Ativo. O provisionamento do serviço pode levar alguns minutos.

CLI da gcloud

Para criar um serviço multirregional do metastore do Dataproc, execute o comando gcloud metastore services create abaixo. Esse comando cria a versão 3.1.2 do Dataproc Metastore.

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

Ou você pode armazenar as configurações de rede em um arquivo, conforme mostrado no comando abaixo.

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 do metastore do Dataproc.
  • MULTI_REGION: a região múltipla em que você está criando o serviço do metastore do Dataproc.
  • PROJECT_ID: o ID do projeto do Google Cloud em que você está criando o serviço do Dataproc Metastore.
  • SUBNET1,SUBNET2: uma lista de subredes que formam uma configuração multirregional. É possível usar o ID, o URL totalmente qualificado ou o nome relativo da sub-rede. É possível especificar até seis subredes.
  • LOCATION1,LOCATION2: uma lista de locais que formam uma configuração multirregional. Você pode usar o ID do local. Por exemplo, para uma multirregião nam7, use us-central1 e us-east4.
  • NETWORK_CONFIG_FROM_FILE: o caminho para um arquivo YAML que contém a configuração de rede.
  • INSTANCE_SIZE: o tamanho da instância do metastore multirregional do Dataproc. Por exemplo, small, medium ou large. Se você especificar um valor para INSTANCE_SIZE, não especifique um valor para SCALING_FACTOR.
  • SCALING_FACTOR: o fator de escalonamento do seu serviço do metastore do Dataproc. Por exemplo, 0.1. Se você especificar um valor para SCALING_FACTOR, não especifique um valor para INSTANCE_SIZE.

REST

Para saber como criar um serviço do Dataproc Metastore multirregional, siga as instruções para criar um serviço usando o Google APIs Explorer.

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 do projeto que contém o serviço Metastore do Dataproc.
  • LOCATION: a região do Google Cloud em que o serviço do Dataproc Metastore está localizado.
  • SUBNET1,SUBNET2: uma lista de sub-redes que formam uma configuração multirregional. É possível usar o ID, o URL totalmente qualificado ou o nome relativo da sub-rede. É possível especificar até cinco subredes.
  • SCALING_FACTOR: o fator de escalonamento que você quer usar para o serviço.

Conectar o Dataproc Metastore a um cluster do Dataproc

Escolha uma das guias a seguir para saber como conectar um serviço do Dataproc Metastore multirregional 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

  1. Crie as seguintes variáveis para seu 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 seu cluster do Dataproc. Verifique se a sub-rede que você está usando tem as permissões adequadas para acessar o 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 do metastore do Dataproc. Use uma versão de imagem de 2.0 ou mais recente.
    • PROJECT: o projeto que contém seu serviço do Dataproc Metastore.
    • SERVICE_ID: o ID do serviço do seu serviço de metastore do Dataproc.
  2. Para criar o cluster, execute o comando gcloud dataproc clusters create a seguir. --enable-kerberos é opcional. Inclua essa opção somente se você estiver usando 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

  1. Crie as seguintes variáveis para seu serviço do 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 de metastore do Dataproc.
    • METASTORE_ID: o ID do serviço do seu serviço de metastore do Dataproc.
    • MULTI_REGION: o local multirregional que você quer usar para o serviço de metastore do Dataproc.
    • SUBNET: uma das sub-redes que você está usando para o serviço do Metastore do Dataproc. Ou qualquer sub-rede na rede VPC pai das sub-redes usadas para seu serviço.
  2. Crie as seguintes variáveis para seu 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 adequadas para acessar o 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 usada pelo seu serviço do Dataproc Metastore.
    • 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 do Hive, use a versão da imagem 1.5.
      • Para a versão 3.1.2 do Metastore do Hive, use a versão de imagem 2.0.
  3. Extraia o diretório de armazenamento 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])")
  4. Crie um cluster do Dataproc configurado com uma Metastore do Dataproc multirregional.

    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

  1. Encontre o URI do endpoint e o diretório do armazém do seu serviço do Metastore do Dataproc. Você pode escolher qualquer um dos endpoints expostos.
  2. No console do Google Cloud, acesse a página Instâncias de VM.
  3. 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ó.

  4. Abra o arquivo /etc/hive/conf/hive-site.xml.

    sudo vim /etc/hive/conf/hive-site.xml
    

    Você vai ver uma saída 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:

  5. 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:

  1. Encontre o URI do endpoint e o diretório do armazém do seu serviço do Metastore do Dataproc. Você pode 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 seu cluster do Dataproc. Verifique se a sub-rede que você está usando tem as permissões adequadas para acessar o projeto.
  • PROJECT_ID: a versão do Hive usada pelo seu serviço do Dataproc Metastore.
  • 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 do Hive, use a versão da imagem 1.5.
    • Para a versão 3.1.2 do Metastore do Hive, use a versão de imagem 2.0.
  • ENDPOINT: o endpoint Thrift usado pelo metastore do Dataproc.
  • WAREHOUSE_DIR: o diretório do repositório do seu metastore do Dataproc.

Configurações de região personalizadas

É possível configurar os serviços do metastore do Dataproc para usar uma configuração de região personalizada.

Uma configuração de região personalizada permite que o serviço execute cargas de trabalho de duas regiões separadas. Isso oferece redundância entre regiões, o que significa que as cargas de trabalho podem acessar qualquer região ao executar jobs. Ele também oferece um mecanismo de failover para seu serviço. Por exemplo, se um dos endpoints regionais ficar inativo, as cargas de trabalho serão roteadas automaticamente para a outra região. Isso ajuda a evitar interrupções nas cargas de trabalho e nos jobs.

As configurações de região personalizadas também permitem controlar onde você está armazenando metadados e onde expor os endpoints do Hive Metastore. Isso pode melhorar o desempenho ao processar cargas de trabalho.

Considerações

As considerações a seguir se aplicam aos serviços do metastore do Dataproc configurados com uma configuração de região personalizada:

  • Restrições de região/pareamento: nem todas as regiões e combinações são permitidas.
  • Limitações somente leitura: as regiões somente leitura não aceitam operações de gravação. Se uma região somente leitura for escolhida e a região de leitura/gravação não puder ser alcançada, a gravação não será processada.
  • Imutabilidade da configuração: depois de definida, a configuração da região não pode ser alterada.
  • Somente pilha dos EUA: as regiões duplas personalizadas oferecem suporte apenas à pilha US e são limitadas ao limite dos EUA.

Criar um serviço de região personalizado

Para configurar uma região personalizada, escolha duas regiões adjacentes ao criar o serviço. Essa combinação pode ser de duas regiões de leitura/gravação ou de uma região de leitura/gravação e uma região somente leitura.

Console

  1. No console do Google Cloud, acesse a página Metastore do Dataproc.

    Acesse o metastore do Dataproc

  2. Na barra de navegação, clique em +Criar.

    A caixa de diálogo Criar serviço de metastore é aberta.

  3. Selecione Dataproc Metastore 2.

  4. Na seção Preços e capacidade, selecione Enterprise Plus: birregional.

  5. No campo Nome do serviço, insira um nome exclusivo para o serviço.

  6. Em Local dos dados, selecione Estados Unidos (continente).

    A seção Regiões personalizadas vai aparecer.

  7. Em Regiões personalizadas, selecione uma região de Leitura/gravação e uma de Somente leitura.

  8. Para as demais opções de configuração do serviço, use os padrões fornecidos.

  9. Para criar e iniciar o serviço, clique em Enviar.

    O novo serviço de metastore aparece na página Metastore do Dataproc. O status Criando é exibido até que o serviço esteja pronto para uso. Quando estiver pronto, o status vai mudar para Ativo. O provisionamento do serviço pode levar alguns minutos.

gcloud

Para criar um serviço do Dataproc Metastore com regiões personalizadas, execute o comando gcloud beta metastore services create da CLI gcloud a seguir.

gcloud beta metastore services create SERVICE \
  --read-write-regions

Substitua:

  • SERVICE: o nome do serviço do metastore do Dataproc.
  • READ_WRITE_REGIONS: uma região de leitura e gravação com suporte que faz parte da configuração da região personalizada.
  • READ_ONLY_REGIONS: uma região somente leitura compatível que faz parte da configuração da região personalizada.

A seguir