Configure um serviço de Metastore do Dataproc multirregional

Esta página mostra como configurar um serviço do Dataproc Metastore multirregional. Para mais informações sobre o funcionamento dos serviços de Metastore do Dataproc multirregionais, consulte as regiões do Metastore do Dataproc.

Antes de começar

Funções necessárias

Para receber a autorização de que precisa para criar um serviço Dataproc Metastore multirregional, peça ao seu administrador que lhe conceda as seguintes funções de IAM no seu projeto, com base no princípio do menor privilégio:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém a autorização metastore.services.create , que é necessária para criar um serviço Dataproc Metastore multirregional.

Também pode obter esta autorização com funções personalizadas ou outras funções predefinidas.

Para mais informações sobre as funções e as autorizações específicas do Dataproc Metastore, consulte o artigo Faça a gestão do acesso com o IAM.

Acerca dos serviços de Metastore do Dataproc multirregionais

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

  • Um serviço de Metastore do Dataproc multirregional replica metadados em duas regiões e expõe os endpoints relevantes para aceder ao Hive Metastore. Para gRPC, é exposto um ponto final por região. Para o Thrift, é exposto um ponto final por sub-rede.

  • Um serviço de Metastore do Dataproc multirregional fornece uma configuração de cluster de alta disponibilidade (HA) ativo-ativo. Esta configuração significa que as cargas de trabalho podem aceder a qualquer uma das regiões quando executam tarefas. Também oferece um mecanismo de comutação por falha para o seu serviço. Por exemplo, se o seu endpoint regional principal ficar indisponível, as suas cargas de trabalho são encaminhadas automaticamente para a região secundária. Isto ajuda a evitar interrupções nos seus trabalhos do Dataproc.

Considerações

As seguintes considerações aplicam-se aos serviços de Metastore do Dataproc multirregionais.

Crie um serviço de Metastore do Dataproc multirregional

Escolha um dos seguintes separadores para saber como criar um serviço multirregional usando o protocolo de ponto final Thrift ou gRPC, com um serviço Dataproc Metastore 2.

gRPC

Quando cria um serviço multirregional que usa o protocolo de ponto final gRPC, não tem de definir nenhuma definição de rede específica. O protocolo gRPC processa o encaminhamento de rede por si.

Consola

  1. Na Google Cloud consola, aceda à página Dataproc Metastore.

    Aceda ao Dataproc Metastore

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

    É apresentada a caixa de diálogo Criar serviço Metastore.

  3. Selecione Dataproc Metastore 2.

  4. Na secção Preços e capacidade, selecione Enterprise Plus – Região dupla

  5. Para o Protocolo de ponto final, selecione gRPC.

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

    O novo serviço de metastore é apresentado na página Dataproc Metastore. O estado apresenta Creating (A criar) até o serviço estar pronto para utilização. Quando estiver pronto, o estado muda para Ativo. O aprovisionamento do serviço pode demorar alguns minutos.

CLI gcloud

Para criar um serviço multirregional do Dataproc Metastore, execute o seguinte comando gcloud metastore services create. Este 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 o seguinte:

  • SERVICE: o nome do seu serviço do Dataproc Metastore.
  • MULTI_REGION: a multirregião na qual está a criar o seu serviço Dataproc Metastore.
  • INSTANCE_SIZE: o tamanho da instância do seu Dataproc Metastore multirregional. Por exemplo, small, medium ou large. Se especificar um valor para INSTANCE_SIZE, não especifique um valor para SCALING_FACTOR.
  • SCALING_FACTOR: o fator de dimensionamento do seu serviço Dataproc Metastore. Por exemplo, 0.1. Se especificar um valor para SCALING_FACTOR, não especifique um valor para INSTANCE_SIZE.

Poupança

Quando cria um serviço multirregional que usa o protocolo de ponto final Thrift, tem de definir as definições de sub-rede adequadas. Neste caso, para cada rede VPC que estiver a usar, tem de indicar, pelo menos, uma sub-rede de cada região.

Por exemplo, para criar a região múltipla nam7, tem de indicar as regiões us-central1 e us-east4.

Consola

  1. Na Google Cloud consola, aceda à página Dataproc Metastore.

    Aceda ao Dataproc Metastore

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

    É apresentada a caixa de diálogo Criar serviço Metastore.

  3. Selecione Dataproc Metastore 2.

  4. Na secção Preços e capacidade, selecione Enterprise Plus – Região dupla.

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

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

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

  6. Para o Protocolo de ponto final, selecione Thrift.

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

  8. Para as restantes opções de configuração do serviço, use as predefinições fornecidas.

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

    O novo serviço de metastore é apresentado na página Dataproc Metastore. O estado apresenta Creating (A criar) até o serviço estar pronto para utilização. Quando estiver pronto, o estado muda para Ativo. O aprovisionamento do serviço pode demorar alguns minutos.

CLI gcloud

Para criar um serviço multirregional do Dataproc Metastore, execute o seguinte comando gcloud metastore services create. Este 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

Em alternativa, pode armazenar as definições de rede num ficheiro, conforme mostrado no comando seguinte.

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 o seguinte:

  • SERVICE: o nome do seu serviço do Dataproc Metastore.
  • MULTI_REGION: a multirregião na qual está a criar o seu serviço Dataproc Metastore.
  • PROJECT_ID: o ID do projeto no qual está a criar o serviço Dataproc Metastore. Google Cloud
  • SUBNET1,SUBNET2: uma lista de sub-redes que formam uma configuração multirregional. Pode usar o ID, o URL totalmente qualificado ou o nome relativo da sub-rede. Pode especificar até seis sub-redes.
  • LOCATION1,LOCATION2: uma lista de localizações que formam uma configuração multirregional. Pode usar o ID da localização. Por exemplo, para uma nam7multirregião, usa us-central1 e us-east4.
  • NETWORK_CONFIG_FROM_FILE: o caminho para um ficheiro YAML que contenha a sua configuração de rede.
  • INSTANCE_SIZE: o tamanho da instância do seu Dataproc Metastore multirregional. Por exemplo, small, medium ou large. Se especificar um valor para INSTANCE_SIZE, não especifique um valor para SCALING_FACTOR.
  • SCALING_FACTOR: o fator de dimensionamento do seu serviço Dataproc Metastore. Por exemplo, 0.1. Se especificar um valor para SCALING_FACTOR, não especifique um valor para INSTANCE_SIZE.

REST

Para saber como criar um serviço Dataproc Metastore multirregional, siga as instruções para criar um serviço através do 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 o seguinte:

  • PROJECT_ID: o ID do projeto Google Cloud do projeto que contém o seu serviço Dataproc Metastore.
  • LOCATION: a região em que o seu serviço Dataproc Metastore reside. Google Cloud
  • SUBNET1,SUBNET2: uma lista de sub-redes que formam uma configuração multirregional. Pode usar o ID, o URL totalmente qualificado ou o nome relativo da sub-rede. Pode especificar até cinco sub-redes.
  • SCALING_FACTOR: o fator de escalabilidade que quer usar para o serviço.

Associe o Dataproc Metastore a um cluster do Dataproc

Escolha um dos seguintes separadores para saber como ligar um serviço Dataproc Metastore multirregional a partir de um cluster do Dataproc.

gRPC

Para ligar um cluster do Dataproc, escolha o separador que corresponde à versão do Dataproc Metastore que está a usar.

Dataproc Metastore 3.1.2

  1. Crie as seguintes variáveis para o 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 o seguinte:

    • CLUSTER_NAME: o nome do cluster do Dataproc.
    • PROJECT_ID: o Google Cloud projeto que contém o seu cluster do Dataproc. Certifique-se de que a sub-rede que está a usar tem as autorizações adequadas para aceder a este projeto.
    • MULTI_REGION: a Google Cloud região múltipla na qual quer criar o cluster do Dataproc.
    • DATAPROC_IMAGE_VERSION: a versão da imagem do Dataproc que está a usar com o seu serviço Dataproc Metastore. Tem de usar uma versão de imagem de 2.0 ou superior.
    • PROJECT: o projeto que contém o seu serviço Dataproc Metastore.
    • SERVICE_ID: o ID do serviço do seu serviço Dataproc Metastore.
  2. Para criar o cluster, execute o seguinte comando gcloud dataproc clusters create --enable-kerberos é opcional. Inclua esta opção apenas se estiver a usar 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 ]

Dataproc Metastore 2.3.6

  1. Crie as seguintes variáveis para o serviço Dataproc Metastore:

    METASTORE_PROJECT=METASTORE_PROJECT
    METASTORE_ID=METASTORE_ID
    MULTI_REGION=MULTI_REGION
    SUBNET=SUBNET

    Substitua o seguinte:

    • METASTORE_PROJECT: o Google Cloud projeto que contém o seu serviço Dataproc Metastore.
    • METASTORE_ID: o ID do serviço do seu serviço Dataproc Metastore.
    • MULTI_REGION: a localização multirregião que quer usar para o seu serviço Dataproc Metastore.
    • SUBNET: uma das sub-redes que está a usar para o seu serviço Dataproc Metastore. Ou qualquer sub-rede na rede VPC principal das sub-redes usadas para o seu serviço.
  2. Crie as seguintes variáveis para o 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 o seguinte:

    • CLUSTER_NAME: o nome do cluster do Dataproc.
    • DATAPROC_PROJECT: o Google Cloud projeto que contém o seu cluster do Dataproc. Certifique-se de que a sub-rede que está a usar tem as autorizações adequadas para aceder a este projeto.
    • DATAPROC_REGION: a Google Cloud região na qual quer criar o cluster do Dataproc.
    • HIVE_VERSION: a versão do Hive que o seu serviço Dataproc Metastore usa.
    • IMAGE_VERSION: a versão da imagem do Dataproc que está a usar com o seu serviço Dataproc Metastore.
      • Para a versão 2.0 do Hive Metastore, use a versão da imagem 1.5.
      • Para a versão 3.1.2 do Hive Metastore, use a versão da imagem 2.0.
  3. Obtenha o diretório do armazém do seu serviço de Metastore do Dataproc e armazene-o numa 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 um Dataproc Metastore 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

Poupança

Opção 1: edite o ficheiro hive-site.xml

  1. Encontre o URI do ponto final e o diretório do armazém do seu serviço Dataproc Metastore. Pode escolher qualquer um dos pontos finais expostos.
  2. Na Google Cloud consola, aceda à página Instâncias de VM.
  3. Na lista de instâncias de máquinas virtuais, clique em SSH na linha do nó principal do Dataproc (.*-m).

    É aberta uma janela do navegador no seu diretório base no nó.

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

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

    Vê um resultado semelhante ao seguinte:

    <property>
        <name>hive.metastore.uris</name>
        <value>ENDPOINT_URI</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>WAREHOUSE_DIR</value>
    </property>
    

    Substitua o seguinte:

  5. Reinicie o HiveServer2:

    sudo systemctl restart hive-server2.service
    

Opção 2: use a CLI gcloud

Execute o seguinte comando da CLI gcloud.gcloud dataproc clusters create

  1. Encontre o URI do ponto final e o diretório do armazém do seu serviço Dataproc Metastore. Pode escolher qualquer um dos pontos finais 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 o seguinte:

  • CLUSTER_NAME: o nome do cluster do Dataproc.
  • NETWORK: o Google Cloud projeto que contém o seu cluster do Dataproc. Certifique-se de que a sub-rede que está a usar tem as autorizações adequadas para aceder a este projeto.
  • PROJECT_ID: a versão do Hive que o seu serviço Dataproc Metastore usa.
  • IMAGE_VERSION: a versão da imagem do Dataproc que está a usar com o seu serviço Dataproc Metastore.
    • Para a versão 2.0 do Hive Metastore, use a versão da imagem 1.5.
    • Para a versão 3.1.2 do Hive Metastore, use a versão da imagem 2.0.
  • ENDPOINT: o ponto final Thrift que o seu Dataproc Metastore usa.
  • WAREHOUSE_DIR: o diretório do armazém do seu Dataproc Metastore.

Configurações de regiões personalizadas

Pode configurar os serviços do Dataproc Metastore para usar uma configuração de região personalizada.

Uma configuração de região personalizada permite que o seu serviço execute cargas de trabalho a partir de duas regiões separadas. Isto oferece redundância entre regiões, o que significa que as cargas de trabalho podem aceder a qualquer uma das regiões quando executam tarefas. Também oferece um mecanismo de comutação por falha para o seu serviço. Por exemplo, se um dos pontos finais regionais ficar inativo, as suas cargas de trabalho são encaminhadas automaticamente para a outra região. Isto ajuda a evitar interrupções nas suas cargas de trabalho e tarefas.

As configurações de regiões personalizadas também lhe permitem controlar onde está a armazenar metadados e onde expor os seus pontos finais do Hive Metastore. Isto pode melhorar o desempenho ao processar cargas de trabalho.

Considerações

As seguintes considerações aplicam-se aos serviços do Dataproc Metastore configurados com uma configuração de região personalizada:

  • Restrições de região/sincronização: nem todas as regiões e combinações são permitidas.
  • Limitações de só de leitura: as regiões só de leitura não podem aceitar operações de escrita. Se for escolhida uma região de leitura e a região de leitura/escrita estiver inacessível, a escrita não é processada.
  • Imutabilidade da configuração: depois de definida, não é possível alterar a configuração da região.
  • Apenas nos EUA: as regiões duplas personalizadas só suportam a pilha US e estão limitadas à fronteira dos EUA.

Crie um serviço de região personalizado

Para configurar uma região personalizada, escolha duas regiões adjacentes quando criar o seu serviço. Esta combinação pode ser de duas regiões de leitura/escrita ou uma região de leitura/escrita e uma região só de leitura.

Consola

  1. Na Google Cloud consola, aceda à página Dataproc Metastore.

    Aceda ao Dataproc Metastore

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

    É apresentada a caixa de diálogo Criar serviço Metastore.

  3. Selecione Dataproc Metastore 2.

  4. Na secção Preços e capacidade, selecione Enterprise Plus – Região dupla.

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

  6. Para Localização de dados, selecione EUA (continente).

    É apresentada a secção Regiões personalizadas.

  7. Em Regiões personalizadas, selecione uma região de Leitura/escrita e uma região de Só de leitura.

  8. Para as restantes opções de configuração do serviço, use as predefinições fornecidas.

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

    O novo serviço de metastore é apresentado na página Dataproc Metastore. O estado apresenta Creating (A criar) até o serviço estar pronto para utilização. Quando estiver pronto, o estado muda para Ativo. O aprovisionamento do serviço pode demorar alguns minutos.

gcloud

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

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

Substitua o seguinte:

  • SERVICE: o nome do seu serviço do Dataproc Metastore.
  • READ_WRITE_REGIONS: uma região de leitura/gravação suportada que faz parte da configuração da sua região personalizada.
  • READ_ONLY_REGIONS: uma região só de leitura suportada que faz parte da configuração da sua região personalizada.

O que se segue