Einige der Open-Source-Standardkomponenten in Google Dataproc-Clustern bieten Weboberflächen wie Apache Hadoop und Apache Spark. Diese Oberflächen können zum Verwalten und Überwachen von Clusterressourcen und -einrichtungen verwendet werden, wie z. B. YARN ResourceManager, Hadoop Distributed File System (HDFS), MapReduce und Spark. Component Gateway bietet für Standardkomponenten und optionale Komponenten von Dataproc sicheren Zugriff auf Webendpunkte.
Cluster, die mit unterstützten Dataproc-Image-Versionen erstellt wurden, können den Zugriff auf die Weboberflächen von Komponenten ermöglichen, ohne dass SSH-Tunnel erforderlich sind oder Firewallregeln geändert werden müssen, um eingehenden Traffic zuzulassen.
Hinweise
- Auf die Weboberflächen von Komponenten können die Nutzer zugreifen, die über die IAM-Berechtigung dataproc.clusters.use verfügen. Siehe Dataproc-Rollen.
- Component Gateway kann für den Zugriff auf REST APIs wie Apache Hadoop YARN und Apache Livy sowie auf Verlaufsserver verwendet werden.
- Wenn Component Gateway aktiviert ist, fügt Dataproc dem ersten Masterknoten des Clusters die folgenden Dienste hinzu:
- Apache Knox Das Standard-SSL-Zertifikat von Knox Gateway ist ab dem Erstellungsdatum des Clusters 13 Monate lang gültig. Wenn sie abläuft, werden alle Component Gateway-Weboberflächen inaktiv. Informationen zum Erhalt eines neuen Zertifikats finden Sie unter So regenerieren Sie das Component Gateway-SSL-Zertifikat.
- Inverting Proxy
- Component Gateway ermöglicht keinen direkten Zugriff auf die
node:port
-Schnittstellen, fungiert aber für eine bestimmte Teilmenge von Diensten als automatischer Proxy. Wenn Sie auf Dienste zugreifen möchten, die sich auf Knoten (node:port
) befinden, sollten Sie einen SSH SOCKS-Proxy verwenden.
Cluster mit Component Gateway erstellen
Console
Dataproc Component Gateway ist standardmäßig aktiviert, wenn Sie einen Cluster mit der Google Cloud Console erstellen. Sie können diese Einstellung deaktivieren, indem Sie auf der Dataproc-Seite Dataproc-Cluster in Compute Engine erstellen im Abschnitt Komponenten des Bereichs Cluster einrichten das Häkchen aus dem Kästchen Komponentengateway aktivieren entfernen.
![](https://cloud.google.com/static/dataproc/images/component-gateway-creation.png?authuser=7&hl=de)
gcloud-Befehl
Führen Sie in der gcloud CLI den Befehl gcloud dataproc clusters create lokal in einem Terminalfenster oder in Cloud Shell aus.
gcloud dataproc clusters create cluster-name \ --enable-component-gateway \ --region=region \ other args ...
REST API
Legen Sie das Attribut EndpointConfig.enableHttpPortAccess als Teil einer clusters.create-Anfrage auf true
fest.
Component Gateway-URLs für den Zugriff auf Weboberflächen verwenden
Wenn Component Gateway in einem Cluster aktiviert ist, können Sie eine Verbindung zu den Weboberflächen von Komponenten herstellen, die auf dem ersten Masterknoten des Clusters ausgeführt werden. Klicken Sie dazu auf die Links in der Google Cloud Console. Component Gateway hält die Zuordnung von Portnamen und URLs in endpointConfig.httpPorts fest. Alternativ zur Console können Sie auch das gcloud
-Befehlszeilentool oder die Dataproc REST API verwenden, um diese Zuordnungen anzuzeigen. Wenn Sie die URL in den Webbrowser kopieren, können Sie auf die UI der entsprechenden Komponente zugreifen.
Console
Rufen Sie in der Google Cloud Console das Dataproc-Formular Clusters auf und wählen Sie den entsprechenden Cluster aus, um das Formular Clusterdetails zu öffnen. Klicken Sie auf den Tab Weboberflächen, um eine Liste der Component Gateway-Links zu den Weboberflächen der im Cluster installierten Standardkomponenten und optionalen Komponenten zu öffnen. Klicken Sie auf den entsprechenden Link, um die auf dem Masterknoten des Clusters ausgeführte Weboberfläche in Ihrem lokalen Browser zu öffnen.
![](https://cloud.google.com/static/dataproc/images/web-interfaces-tab.png?authuser=7&hl=de)
gcloud-Befehl
Führen Sie in der gcloud CLI den Befehl gcloud dataproc clusters describe lokal in einem Terminalfenster oder in Cloud Shell aus.
gcloud dataproc clusters describe cluster-name \ --region=region
Beispielausgabe
... 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/ ...
REST API
Rufen Sie clusters.get auf, um die endpointConfig.httpPorts-Zuordnung von Portnamen zu URLs abzurufen.Component Gateway mit VPC-SC verwenden
Component Gateway unterstützt VPC Service Controls.
Für die Dienstperimetererzwingung werden Anfragen an Schnittstellen über Component Gateway als Teil der Dataproc API-Oberfläche behandelt. Alle Zugriffsrichtlinien, die die Berechtigungen für dataproc.googleapis.com
steuern, steuern auch den Zugriff auf Component Gateway-UIs.
Component Gateway unterstützt auch VPC-SC-Konfigurationen, die eine private Google-Verbindung für Dataproc-Cluster ohne externe IP-Adressen benötigen. Sie müssen Ihr Netzwerk jedoch manuell so konfigurieren, dass der Zugriff von der Dataproc-Master-VM auf *.dataproc.cloud.google.com
über den eingeschränkten virtuellen IP-Bereich 199.36.153.4/30
von Google zugelassen wird. Gehen Sie dazu so vor:
- Folgen Sie der Anleitung, um eine private Verbindung für alle Google APIs zu konfigurieren.
- Konfigurieren SIe entweder DNS mit Cloud DNS oder DNS lokal auf dem Dataproc-Masterknoten, um Zugriff auf
*.dataproc.cloud.google.com
zu gewähren.
DNS mit Cloud DNS konfigurieren
Erstellen Sie eine Cloud DNS-Zone, die den Traffic für *.dataproc.cloud.google.com
dem eingeschränkten virtuellen IP-Bereich der Google API zuordnet.
Erstellen Sie für Ihr VPC-Netzwerk eine verwaltete private Zone.
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 ist ein Name für die Zone, die Sie erstellen. Beispiel:
vpc
Dieser Zonenname wird in jedem der folgenden Schritte verwendet.PROJECT_ID ist die ID des Projekts, in dem Ihr VPC-Netzwerk gehostet wird.
NETWORK_NAME ist der Name Ihres VPC-Netzwerks.
DESCRIPTION ist eine optionale menschenlesbare Beschreibung der verwalteten Zone.
Starten Sie eine Transaktion.
gcloud dns record-sets transaction start --zone=ZONE_NAME
- ZONE_NAME ist Ihr Zonenname.
Fügen Sie DNS-Einträge hinzu.
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 ist Ihr Zonenname.
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 ist Ihr Zonenname.
Führen Sie die Transaktion aus.
gcloud dns record-sets transaction execute --zone=ZONE_NAME --project=PROJECT_ID
ZONE_NAME ist Ihr Zonenname.
PROJECT_ID ist die ID des Projekts, in dem Ihr VPC-Netzwerk gehostet wird.
DNS lokal mit einer Initialisierungsaktion auf dem Dataproc-Masterknoten konfigurieren
Sie können DNS auf Dataproc-Masterknoten lokal konfigurieren, um eine private Verbindung zu dataproc.cloud.google.com
zu ermöglichen. Dieses Verfahren ist für kurzfristige Tests und Entwicklung vorgesehen. Es wird nicht für die Verwendung in Produktionsarbeitslasten empfohlen.
Stellen Sie die Initialisierungsaktion auf Cloud Storage bereit.
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 ist ein Cloud Storage-Bucket, auf den über den Dataproc-Cluster zugegriffen werden kann.
Erstellen Sie einen Dataproc-Cluster mit der bereitgestellten Initialisierungsaktion und dem aktivierten Component Gateway.
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 ist der Cloud Storage-Bucket, der in Schritt 1 oben verwendet wurde.
HTTP APIs über Component Gateway programmatisch verwenden
Component Gateway ist ein Proxy, der Apache Knox enthält. Die von Apache Knox bereitgestellten Endpunkte sind über https://component-gateway-base-url/component-path
verfügbar.
Für eine programmatische Authentifizierung bei Component Gateway übergeben Sie den Header Proxy-Authorization
mit einem OAuth 2.0-Inhabertoken.
$ 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,
...
Component Gateway entfernt den Proxy-Authorization
-Header, bevor Anfragen an Apache Knox weitergeleitet werden.
Führen Sie folgenden Befehl aus, um die Basis-URL des Component Gateway zu ermitteln: 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/
...
Die Basis-URL ist das Schema und die Autorisierungsabschnitte der URLs unter httpPorts
. In diesem Beispiel ist das https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/
.
So generieren Sie das SSL-Zertifikat für Component Gateway neu
Das Standard-Knox-Gateway-SSL-Zertifikat für Component Gateway ist gültig für:
5 Jahre nach dem Datum der Dataproc-Clustererstellung auf Clustern, die mit den Image-Versionen 2.0.93, 2.1.41, 2.2.7 und höher erstellt wurden.
13 Monate nach dem Datum der Dataproc-Clustererstellung auf Clustern, die mit früheren Image-Versionen erstellt wurden.
Wenn das Zertifikat abläuft, werden alle URLs der Component Gateway-Weboberfläche inaktiv.
Wenn Ihre Organisation das SSL-Zertifikat bereitgestellt hat, fordern Sie ein neues Zertifikat von der Organisation an und ersetzen Sie das alte Zertifikat durch das neue.
Wenn Sie das standardmäßige selbst signierte SSL-Zertifikat verwenden, verlängern Sie es so:
Verwenden Sie SSH, um eine Verbindung zum Dataproc-Cluster-Masterknoten mit dem Namenssuffix
m-0
herzustellen.Suchen Sie
gateway.jks
im Pfad/var/lib/knox/security/keystores/gateway.jks
.keytool -list -v -keystore /var/lib/knox/security/keystores/gateway.jks
Verschieben Sie die Datei
gateway.jks
in ein Sicherungsverzeichnis.mv /var/lib/knox/security/keystores/gateway.jks /tmp/backup/gateway.jks
Starten Sie den Knox-Dienst neu, um ein neues selbst signiertes Zertifikat zu erstellen.
systemctl restart knox
Prüfen Sie den Component Gateway- und Knox-Status.
systemctl status google-dataproc-component-gateway systemctl status knox
Weitere Informationen
- Erstellen Sie einen Cluster mit Dataproc-Komponenten.