Gateway dei componenti Dataproc

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Alcuni dei componenti open source predefiniti inclusi nei cluster Google Dataproc, come Apache Hadoop e Apache Spark, forniscono interfacce web. Queste interfacce possono essere utilizzate per gestire e monitorare le risorse e le strutture del cluster, come il gestore delle risorse YARN, l'HDFS (Hadoop Distributed File System), il MapReduce e Spark. Gateway Gateway fornisce un accesso sicuro agli endpoint web per i componenti facoltativi e per i valori predefiniti di Dataproc.

I cluster creati con versioni delle immagini Dataproc supportate possono consentire l'accesso alle interfacce web dei componenti senza fare affidamento sui tunnel SSH o sulla modifica delle regole firewall per consentire il traffico in entrata.

Considerazioni

  • Le interfacce web dei componenti sono accessibili agli utenti che dispongono dell'autorizzazione IAM dataproc.clusters.use. Vedi Ruoli Dataproc.
  • Component Gateway può essere utilizzato per accedere alle API REST, come Apache Hadoop YARN, Apache Livy e ai server di cronologia.
  • Quando è abilitato, il primo gateway nel cluster avrà i seguenti servizi aggiuntivi:
  • Il gateway dei componenti non consente l'accesso diretto alle interfacce node:port, ma esegue automaticamente il proxy di un sottoinsieme specifico di servizi. Se vuoi accedere ai servizi sui nodi (node:port), utilizza un proxy SSH SOCKS.

Creazione di un cluster con Component Gateway

Console

Per abilitare Gateway Gateway dalla console Google Cloud, seleziona la casella di controllo Gateway componenti nella sezione Componenti del riquadro Configura cluster nella pagina Crea un cluster di Dataproc.

Comando gcloud

Esegui il comando gcloud CLI gcloud dataproc clusters create localmente in una finestra del terminale o in Cloud Shell.

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

API REST

Imposta la proprietà EndpointConfig.enableHttpPortAccess su true come parte di una richiesta clusters.create.

Visualizzazione e accesso agli URL dei componenti del gateway

Quando Gateway Gateway è abilitato su un cluster, puoi connetterti alle interfacce web dei componenti in esecuzione sul primo nodo master del cluster facendo clic sui link forniti nella console Google Cloud. Component Gateway imposta anche endpointConfig.httpPorts con una mappa dei nomi delle porte agli URL. Invece di utilizzare la console, puoi utilizzare lo strumento a riga di comando gcloud o l'API REST di Dataproc per visualizzare queste informazioni di mappatura, quindi copiare e incollare l'URL nel browser per connetterti all'interfaccia utente del componente.

Console

Vai al modulo Cluster di Dataproc sulla console Google Cloud, quindi seleziona il cluster per aprire il modulo Dettagli cluster. Fai clic sulla scheda Interfacce web per visualizzare un elenco di link del componente Gateway alle interfacce web dei componenti predefiniti e facoltativi installati nel cluster. Fai clic su un link per aprire l'interfaccia web in esecuzione sul nodo master del cluster nel browser locale.

Comando gcloud

Esegui il comando gcloud CLI gcloud dataproc clusters describe localmente in una finestra del terminale o in Cloud Shell.

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

Output di esempio

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

Chiama clusters.get per ottenere la mappa endpointConfig.httpPorts dei nomi delle porte agli URL.

Utilizzo di Component Gateway con VPC-SC

Gateway Gateway supporta i Controlli di servizio VPC. Per l'applicazione del perimetro di servizio, le richieste alle interfacce tramite Component Gateway vengono trattate come parte della piattaforma API Dataproc e qualsiasi criterio di accesso che controlla le autorizzazioni per dataproc.googleapis.com controllerà anche l'accesso alle UI dei componenti Gateway.

Component Gateway supporta anche le configurazioni VPC-SC che si basano sulla connettività Google privata per i cluster Dataproc senza indirizzi IP esterni, ma devi configurare manualmente la rete per consentire l'accesso dalla VM master Dataproc a *.dataproc.cloud.google.com tramite l'intervallo IP virtuale Google con restrizioni 199.36.153.4/30, procedendo nel seguente modo:

  1. Segui le istruzioni per configurare la connettività privata di Google per tutte le API di Google.
  2. Configura DNS con Cloud DNS o configura DNS localmente sul nodo master di Dataproc per consentire l'accesso a *.dataproc.cloud.google.com.

Configura DNS con Cloud DNS

Crea una zona Cloud DNS che mappa il traffico destinato a *.dataproc.cloud.google.com all'intervallo IP virtuale dell'API Google con restrizioni.

  1. Creare una zona privata gestita per la tua rete 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 è un nome per la zona che stai creando. Ad esempio, vpc. Il nome della zona verrà utilizzato in ciascuno dei seguenti passaggi.

    • PROJECT_ID è l'ID del progetto che ospita la tua rete VPC.

    • NETWORK_NAME è il nome della tua rete VPC.

    • DESCRIPTION è una descrizione facoltativa della zona gestita leggibile.

  2. Avviare una transazione.

    gcloud dns record-sets transaction start --zone=ZONE_NAME
    
    • ZONE_NAME è il nome della tua zona.
  3. Aggiungere record 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 è il nome della tua 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 è il nome della tua zona.
  4. Eseguire la transazione.

    gcloud dns record-sets transaction execute --zone=ZONE_NAME --project=PROJECT_ID
    
    • ZONE_NAME è il nome della tua zona.

    • PROJECT_ID è l'ID del progetto che ospita la tua rete VPC.

Configura DNS localmente sul nodo master Dataproc con un'azione di inizializzazione

Puoi configurare localmente il DNS sui nodi master di Dataproc per consentire la connettività privata a dataproc.cloud.google.com. Questa procedura è pensata per test e sviluppo a breve termine. Non è consigliabile utilizzare nei carichi di lavoro di produzione.

  1. Imposta l'azione di inizializzazione in 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 è un bucket Cloud Storage accessibile dal cluster Dataproc.
  2. Creare un cluster Dataproc con l'azione di inizializzazione graduale e il gateway dei componenti abilitati.

    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 è il bucket Cloud Storage utilizzato nel passaggio 1, sopra.

Utilizzo di API HTTP in modo programmatico mediante Component Gateway

Component Gateway è un proxy che incorpora Apache Knox. Gli endpoint esposti da Apache Knox sono disponibili tramite https://component-gateway-base-url/component-path.

Per eseguire l'autenticazione in modo programmatico con Component Gateway, trasmetti l'intestazione Proxy-Authorization con un token di connessione 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,
...

Gateway Gateway rimuove l'intestazione Proxy-Authorization prima di inoltrare le richieste a Apache Knox.

Per trovare l'URL di base di Component Gateway, esegui: 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/

...

L'URL di base è la parte dello schema e dell'autorità degli URL in httpPorts. In questo esempio, è https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/.

Passaggi successivi