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 funzionalità del cluster, come YARN Resource Manager, l' Hadoop Distributed File System (HDFS), MapReduce e Spark. Il gateway dei componenti fornisce un accesso sicuro agli endpoint web per i componenti predefiniti e facoltativi di Dataproc.
I cluster creati con le versioni delle immagini Dataproc supportate possono abilitare l'accesso alle interfacce web dei componenti senza dover utilizzare tunnel SSH o modificare le regole firewall per consentire il traffico in entrata.
Considerazioni
- Gli utenti devono disporre dell'autorizzazione dataproc.clusters.use Identity and Access Management per accedere alle interfacce web dei componenti abilitati. Consulta Ruoli Dataproc.
- Il gateway dei componenti può essere utilizzato per accedere alle API REST, come Apache Hadoop YARN e Apache Livy, e ai server di cronologia.
- Quando il gateway dei componenti è abilitato, Dataproc aggiunge i seguenti
servizi al primo nodo master del cluster:
- Apache Knox. Il certificato SSL del gateway Knox predefinito è valido per 13 mesi dalla data di creazione del cluster. Se scade, tutti gli URL dell'interfaccia web del gateway dei componenti diventano inattivi. Per ottenere un nuovo certificato, consulta Rigenerare il certificato SSL del gateway dei componenti.
- Proxy inverso
- 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 SOCKS SSH.
Creare un cluster con il gateway dei componenti
Console
Il gateway dei componenti di Dataproc viene attivato per impostazione predefinita quando crei un cluster utilizzando la Google Cloud console. Puoi disattivare questa impostazione deselezionando la casella di controllo Abilita gateway dei componenti nella sezione Componenti del riquadro Configura cluster nella pagina Dataproc Crea un cluster Dataproc su Compute Engine.
Comando g-cloud
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 nell'ambito di una
richiesta clusters.create.
Utilizzare gli URL del 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 mapping,
quindi copiare e incollare l'URL nel browser per connetterti all'UI del componente.
Console
Vai al modulo Cluster Dataproc nella Google Cloud console, 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 g-cloud
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 endpointConfig.httpPorts mappa dei nomi delle porte agli URL.Utilizzare il 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 superficie dell'API Dataproc e tutte le policy 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 che si basano 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 tramite l'intervallo IP virtuale Google limitato
199.36.153.4/30
procedendo nel seguente modo:
- 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 localmente sul nodo master Dataproc per consentire l'accesso a
*.dataproc.cloud.google.com.
Configurare il DNS con Cloud DNS
Crea una zona Cloud DNS che esegua il mapping del traffico destinato a *.dataproc.cloud.google.com
all'intervallo IP virtuale dell'API Google limitato.
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 ognuno dei passaggi seguenti.PROJECT_ID è l'ID del progetto che ospita la rete VPC.
NETWORK_NAME è il nome della 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 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 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 zona.
Esegui la transazione.
gcloud dns record-sets transaction execute --zone=ZONE_NAME --project=PROJECT_ID
ZONE_NAME è il nome della zona.
PROJECT_ID è l'ID del progetto che ospita la rete VPC.
Configurare il DNS localmente sul nodo master Dataproc con un'azione di inizializzazione
Puoi configurare localmente il DNS sui nodi master Dataproc per consentire la connettività privata
a dataproc.cloud.google.com. Questa procedura è destinata a
test e sviluppo a breve termine. Non è consigliata
per l'utilizzo nei carichi di lavoro di produzione.
Esegui lo staging dell'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 gcloud storage cp component-gateway-vpc-sc-dns-init-action.sh gs://BUCKET/- BUCKET è un bucket Cloud Storage accessibile dal cluster Dataproc.
Crea un cluster Dataproc con l'azione di inizializzazione di cui hai eseguito lo staging e il gateway dei componenti abilitato.
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.
Utilizzare le API HTTP a livello di programmazione tramite il 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 a livello di programmazione con il gateway dei componenti, passa l'intestazione
Proxy-Authorization con un
token di accesso 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 è lo schema e le parti dell'autorità degli URL in
httpPorts. In questo esempio, è https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/.
Rigenerare il certificato SSL del gateway dei componenti
Il certificato SSL del gateway Knox predefinito del gateway dei componenti è valido per:
5 anni dalla data di creazione del cluster Dataproc sui cluster creati con le versioni delle immagini 2.0.93, 2.1.41, 2.2.7 e successive.
13 mesi dalla data di creazione del cluster Dataproc sui cluster creati utilizzando versioni delle immagini precedenti.
Se il certificato scade, tutti gli URL dell'interfaccia web del gateway dei componenti diventano inattivi.
Se la tua organizzazione ha fornito il certificato SSL, ottieni un nuovo certificato da ll'organizzazione, quindi sostituisci il vecchio certificato con quello nuovo.
Se utilizzi il certificato SSL autofirmato predefinito, rinnovalo nel seguente modo:
Utilizza SSH per connetterti al nodo master del cluster Dataproc con il
m-0suffisso del nome.Individua
gateway.jksnel/var/lib/knox/security/keystores/gateway.jkspercorso.keytool -list -v -keystore /var/lib/knox/security/keystores/gateway.jks
Sposta il file
gateway.jksin una directory di backup.mv /var/lib/knox/security/keystores/gateway.jks /tmp/backup/gateway.jks
Crea un nuovo certificato autofirmato riavviando il servizio Knox.
systemctl restart knox
Verifica lo stato del gateway dei componenti e di Knox.
systemctl status google-dataproc-component-gateway systemctl status knox
Passaggi successivi
- Crea un cluster con i componenti Dataproc.