Esta página foi traduzida pela API Cloud Translation.
Switch to English

Gateway de componentes do Dataproc

Alguns dos componentes de código aberto padrão incluídos nos clusters do Google Dataproc, como Apache Hadoop e Apache Spark, fornecem interfaces da Web. Elas podem ser usadas para gerenciar e monitorar diferentes recursos e instalações do cluster, como o gerenciador de recursos YARN, o Sistema de arquivos distribuídos Hadoop (HDFS, na sigla em inglês), o MapReduce e o Spark. O Gateway de componentes fornece acesso seguro a endpoints da Web para componentes padrão e opcionais do Dataproc.

Os clusters criados com a versão de imagem 1.3.29 e posteriores do Dataproc podem ativar o acesso a interfaces de componentes na Web sem depender do uso de túneis SSHou de modificação de regras de firewall para permitir o tráfego de entrada.

Considerações

  • As interfaces de componentes na Web podem ser acessadas por usuários com permissão do IAM dataproc.clusters.use. Por padrão, somente os membros do projeto têm essa permissão. Consulte Papéis do Dataproc.
  • O Gateway de componentes pode ser usado para acessar APIs REST, como o Apache Hadoop YARN, o Apache Livy (ambos em inglês) e servidores de histórico.
  • Quando o Gateway de componentes está ativado, o primeiro nó mestre do cluster terá os seguintes serviços adicionais:
  • O Gateway de componentes não permite acesso direto a interfaces node:port, mas faz proxy de um subconjunto específico de serviços automaticamente. Se você quer acessar serviços em nós (node:port), use um proxy SSH SOCKS.

Criar um cluster com o Gateway de componentes

Console

Para ativar o Gateway de componentes no Console do Cloud, marque a caixa de seleção "Gateway de componentes" na seção "Componentes" do painel "Configurar cluster" na página Criar um cluster do Dataproc.

Comando gcloud

Execute localmente o comando gcloud dataproc clusters create do SDK do Cloud em uma janela de terminal ou no Cloud Shell.

gcloud dataproc clusters create cluster-name \
    --enable-component-gateway \
    --region=region \
    other args ...

API REST

Defina a propriedade EndpointConfig.enableHttpPortAccess como true como parte de uma solicitação clusters.create.

Visualizar e acessar URLs do Gateway de componentes

Quando o Component Gateway está ativado em um cluster, você pode se conectar a interfaces de componentes na Web em execução no primeiro nó mestre do cluster clicando em links fornecidos no Console do Cloud. O Gateway de componentes também define endpointConfig.httpPorts com um mapa de nomes de portas para URLs. Como alternativa ao uso do console, você pode usar a ferramenta de linha de comando gcloud ou a API REST do Dataproc para visualizar essas informações de mapeamento e copiar e colar o URL no navegador para se conectar à IU do componente.

Console

Navegue até o formulário Clusters do Dataproc no Google Cloud Console e selecione o cluster para abrir o formulário Detalhes do cluster. Clique na guia Interfaces da Web para exibir uma lista de links do Gateway de componentes para as interfaces da Web dos componentes padrão e opcionais instalados no cluster. Clique em um link para abrir a interface da Web em execução no nó principal do cluster em seu navegador local.

Comando gcloud

Execute localmente o comando gcloud dataproc clusters describe do SDK do Cloud em uma janela de terminal ou no Cloud Shell.

gcloud dataproc clusters describe cluster-name \
    --region=region

Exemplo de saída

...
config:
  endpointConfig:
    enableHttpPortAccess: true
    httpPorts:
      HDFS NameNode:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/hdfs/ MapReduce Job History:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/jobhistory/ Spark HistoryServer:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/sparkhistory/ YARN ResourceManager:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/yarn/ YARN Application Timeline:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/apphistory/ ...

API REST

Chame clusters.get para receber o mapa endpointConfig.httpPorts de nomes de portas para URLs.

Como usar o Gateway de componentes com o VPC-SC

O Gateway de componentes é compatível com o VPC Service Controls. Para a aplicação do perímetro de serviço, as solicitações a interfaces por meio do Gateway de componentes são tratadas como parte da superfície de API do Dataproc, e qualquer política de acesso que controle permissões para dataproc.googleapis.com também controlará o acesso às interfaces de usuário do Gateway de componentes.

O Gateway de componentes também é compatível com configurações do VPC-SC que dependem de conectividade particular do Google para clusters do Dataproc sem endereços IP externos, mas você deve configurar manualmente sua rede para permitir o acesso da VM mestre do Dataproc a *.dataproc.cloud.google.com por meio do intervalo de IP virtual restrito do Google 199.36.153.4/30 fazendo o seguinte:

  1. Siga as instruções para configurar a conectividade privada do Google para todas as APIs do Google.
  2. Configure o DNS com o Cloud DNS ou configure o DNS localmente no nó mestre do Dataproc para permitir o acesso a *.dataproc.cloud.google.com.

Configurar DNS com o Cloud DNS

Crie uma zona do Cloud DNS que mapeie o tráfego destinado a *.dataproc.cloud.google.com ao intervalo de IP virtual restrito de API do Google.

  1. Crie uma zona privada gerenciada para sua rede VPC.

    gcloud dns managed-zones create ZONE_NAME \
     --visibility=private \
     --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
     --description=DESCRIPTION \
     --dns-name=dataproc.cloud.google.com
     --project=PROJECT_ID
    
    • ZONE_NAME é um nome para a zona que você está criando. Por exemplo, vpc. Esse nome será utilizado em todas as etapas a seguir.

    • PROJECT_ID é o código do projeto que hospeda sua rede VPC.

    • NETWORK_NAME é o nome da sua rede VPC.

    • DESCRIPTION é uma descrição opcional, legível por humanos, da zona gerenciada.

  2. Inicie uma transação.

    gcloud dns record-sets transaction start --zone=ZONE_NAME
    
    • ZONE_NAME é o nome da zona.
  3. Adicione registros de DNS.

    gcloud dns record-sets transaction add --name=*.dataproc.cloud.google.com. \
        --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
        --zone=ZONE_NAME \
        --ttl=300
    
    • ZONE_NAME é o nome da zona.
    gcloud dns record-sets transaction add --name=dataproc.cloud.google.com. \
        --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
        --zone=ZONE_NAME \
        --ttl=300
    
    • ZONE_NAME é o nome da zona.
  4. Execute a transação.

    gcloud dns record-sets transaction execute --zone=ZONE_NAME --project=PROJECT_ID
    
    • ZONE_NAME é o nome da zona.

    • PROJECT_ID é o código do projeto que hospeda sua rede VPC.

Configurar o DNS localmente no nó mestre do Dataproc com uma ação de inicialização

Você pode configurar o DNS localmente nos nós mestres do Dataproc para permitir conectividade privada a dataproc.cloud.google.com. Esse procedimento destina-se a testes e desenvolvimento de curto prazo. Ele não é recomendado para uso em cargas de trabalho de produção.

  1. Estabeleça a ação de inicialização no Cloud Storage.

    cat <<EOF >component-gateway-vpc-sc-dns-init-action.sh
    #!/bin/bash
    readonly ROLE="$(/usr/share/google/get_metadata_value attributes/dataproc-role)"
    
    if [[ "${ROLE}" == 'Master' ]]; then
      readonly PROXY_ENDPOINT=$(grep "^dataproc.proxy.agent.endpoint=" \
        "/etc/google-dataproc/dataproc.properties" | \
        tail -n 1 | cut -d '=' -f 2- | sed -r 's/\\([#!=:])/\1/g')
    
      readonly HOSTNAME=$(echo ${PROXY_ENDPOINT} | \
        sed -n -E 's;^https://([^/?#]*).*;\1;p')
    
      echo "199.36.153.4 ${HOSTNAME}  # Component Gateway VPC-SC" >> "/etc/hosts"
    fi
    EOF
    
    gsutil cp component-gateway-vpc-sc-dns-init-action.sh gs://BUCKET/
    
    • BUCKET é um bucket do Cloud Storage acessível a partir do cluster do Dataproc.
  2. Crie um cluster do Dataproc com a ação de inicialização estabelecida e o Gateway de componentes ativado.

    gcloud dataproc clusters create cluster-name \
        --region=region \
        --initialization-actions=gs://BUCKET/component-gateway-vpc-sc-dns-init-action.sh \
        --enable-component-gateway \
        other args ...
    
    • BUCKET é o bucket do Cloud Storage usado na etapa 1 acima.

Programaticamente, usando APIs HTTP por meio do Gateway de componentes

O Gateway de componentes é um proxy que incorpora o Apache Knox. Os endpoints expostos pelo Apache Knox estão disponíveis por meio do https://component-gateway-base-url/component-path.

Para autenticar de maneira programática com o Gateway de componentes, passe o cabeçalho Proxy-Authorization com um token do portador OAuth 2.0.

$ ACCESS_TOKEN="$(gcloud auth print-access-token)"
$ curl -H "Proxy-Authorization: Bearer ${ACCESS_TOKEN}" "https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/yarn/jmx"
{
  "beans" : [ {
    "name" : "Hadoop:service=ResourceManager,name=RpcActivityForPort8031",
    "modelerType" : "RpcActivityForPort8031",
    "tag.port" : "8031",
    "tag.Context" : "rpc",
    "tag.NumOpenConnectionsPerUser" : "{\"yarn\":2}",
    "tag.Hostname" : "demo-cluster-m",
    "ReceivedBytes" : 1928581096,
    "SentBytes" : 316939850,
    "RpcQueueTimeNumOps" : 7230574,
    "RpcQueueTimeAvgTime" : 0.09090909090909091,
    "RpcProcessingTimeNumOps" : 7230574,
    "RpcProcessingTimeAvgTime" : 0.045454545454545456,
...

O Gateway de componentes remove o cabeçalho Proxy-Authorization antes de encaminhar solicitações para o Apache Knox.

Para encontrar o URL base do Gateway de componentes, execute: gcloud dataproc clusters describe:

$ gcloud dataproc clusters describe
...
  endpointConfig:
    enableHttpPortAccess: true
    httpPorts:
      HDFS NameNode: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/hdfs/dfshealth.html
      MapReduce Job History: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/jobhistory/
      Spark History Server: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/sparkhistory/
      Tez: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/apphistory/tez-ui/
      YARN Application Timeline: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/apphistory/
      YARN ResourceManager: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/yarn/

...

O URL base é as partes do esquema e da autoridade dos URLs em httpPorts. Neste exemplo, é https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/.

A seguir