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 risorse e servizi del cluster, come Resource Manager YARN, HDFS (Hadoop Distributed File System), MapReduce e Spark. Il gateway dei componenti fornisce accesso sicuro agli endpoint web per i componenti predefiniti e facoltativi di Dataproc.
I cluster creati con versioni immagine 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. Consulta Ruoli Dataproc.
- Il gateway dei componenti può essere utilizzato per accedere ad API REST, come YARN di Apache Hadoop, Apache Livy, e ai server di cronologia.
- Quando il gateway dei componenti è abilitato, il primo nodo master nel cluster avrà i seguenti servizi aggiuntivi:
- Il gateway dei componenti non consente l'accesso diretto alle interfacce
node:port
, ma aggiunge automaticamente come proxy un sottoinsieme specifico di servizi. Se vuoi accedere ai servizi sui nodi (node:port
), utilizza un proxy SSH SOCKS.
Crea un cluster con il gateway dei componenti
Console
Per abilitare il gateway dei componenti dalla console Google Cloud, seleziona la casella di controllo Gateway dei 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 in locale 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.
Utilizzare gli URL dei gateway dei componenti per accedere alle interfacce web
Quando il gateway dei componenti è 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. Il gateway dei componenti imposta anche endpointConfig.httpPorts con una mappa dei nomi delle porte agli URL. In alternativa all'utilizzo della console, puoi utilizzare lo strumento a riga di comando gcloud
o l'API REST Dataproc per visualizzare queste informazioni di mappatura, quindi copia e incolla l'URL nel browser per connetterti all'interfaccia utente del componente.
Console
Vai al modulo Cluster di Dataproc nella 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 gateway dei componenti alle interfacce web dei componenti predefiniti e facoltativi installati sul 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 in locale in una finestra del terminale o in Cloud Shell.
gcloud dataproc clusters describe cluster-name \ --region=region
Esempio di output
... 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 del gateway dei componenti con VPC-SC
Il gateway dei componenti supporta i Controlli di servizio VPC.
Per l'applicazione del perimetro di servizio, le richieste alle interfacce tramite il gateway dei componenti vengono trattate come parte della piattaforma API Dataproc e tutti i criteri di accesso che controllano le autorizzazioni per dataproc.googleapis.com
controlleranno anche l'accesso alle UI del gateway dei componenti.
Il gateway dei componenti supporta anche le configurazioni VPC-SC basate sulla connettività privata di Google 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
attraverso l'intervallo IP virtuale limitato di Google 199.36.153.4/30
seguendo questi passaggi:
- Segui le istruzioni per configurare la connettività privata di Google per tutte le API di Google.
- Configura il DNS con Cloud DNS o configura il DNS in locale 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 limitato dell'API di Google.
Crea 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
. Questo nome di zona verrà utilizzato in ciascuno dei passaggi seguenti.PROJECT_ID è l'ID del progetto che ospita la rete VPC.
NETWORK_NAME è il nome della tua rete VPC.
DESCRIPTION è una descrizione facoltativa e leggibile della zona gestita.
Avvia una transazione.
gcloud dns record-sets transaction start --zone=ZONE_NAME
- ZONE_NAME è il nome della tua zona.
Aggiungi 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.
Esegui 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 rete VPC.
Configurazione del DNS in locale sul nodo master di 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 è concepita per
test e sviluppo a breve termine. L'utilizzo non è consigliato nei carichi di lavoro di produzione.
Stage 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.
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 descritto sopra.
Utilizzo programmatico di API HTTP tramite Gateway dei componenti
Il gateway dei componenti è 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 il gateway dei componenti, passa 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,
...
Il gateway dei componenti rimuove l'intestazione Proxy-Authorization
prima di inoltrare le richieste ad Apache Knox.
Per trovare l'URL di base del gateway dei componenti, esegui:
gcloud dataproc clusters describe
:
$ gcloud dataproc clusters describe <var>cluster-name</var> \
--region=<var>region</var>
...
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 è le parti relative a schema e autorità degli URL in httpPorts
. In questo esempio, è https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/
.
Passaggi successivi
- Crea un cluster con componenti Dataproc.