Mit dem Component Gateway können Sie sicher auf Webendpunkte für Standardkomponenten und optionale Komponenten in Google Managed Service for Apache Spark-Clustern zugreifen. Mit diesen Weboberflächen können Sie Clusterressourcen und -einrichtungen wie den YARN-Ressourcenmanager, das Hadoop Distributed File System (HDFS), MapReduce, Apache Hadoop und Apache Spark verwalten und überwachen.
In Clustern, die mit unterstützten Image-Versionen von Managed Service for Apache Spark erstellt wurden, bietet das Component Gateway Zugriff auf Komponenten-Weboberflächen, ohne dass SSH-Tunnel erforderlich sind oder Firewallregeln geändert werden müssen, um eingehenden Traffic zuzulassen.
Hinweise
- Nutzer benötigen die Identity and Access Management-Berechtigung dataproc.clusters.use, um auf aktivierte Komponenten-Weboberflächen zuzugreifen. Weitere Informationen finden Sie unter Managed Service for Apache Spark-Rollen.
- Mit dem Komponentengateway können Sie auf REST APIs wie Apache Hadoop YARN und Apache Livy sowie auf Verlaufsserver zugreifen.
- Wenn das Component Gateway aktiviert ist, fügt Managed Service for Apache Spark dem ersten Masterknoten des Clusters die folgenden Dienste hinzu:
- Apache Knox. Das standardmäßige Knox Gateway-SSL-Zertifikat ist ab dem Erstellungsdatum des Clusters 13 Monate lang gültig. Wenn es abläuft, werden alle URLs der Component Gateway-Weboberfläche inaktiv. Informationen zum Abrufen eines neuen Zertifikats finden Sie unter SSL-Zertifikat für das Komponenten-Gateway neu generieren.
- 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
Google Cloud Console
Die Benutzeroberflächen der Managed Service for Apache Spark-Komponenten (über das Komponentengateway) sind standardmäßig aktiviert, wenn Sie einen Cluster mit der Google Cloud Console erstellen. Sie können diese Einstellung deaktivieren, indem Sie das Häkchen aus dem Kästchen Komponenten in der UI aktivieren entfernen:
- Öffnen Sie die Seite Cluster erstellen.
- Klicken Sie auf Zusätzliche Konfiguration, um den Bereich zu maximieren.
- Bearbeiten Sie Optionale Komponenten.
- Aktivieren oder deaktivieren Sie im daraufhin angezeigten Steuerfeld das Kästchen Komponenten in der UI aktivieren.
- Klicken Sie auf Speichern.
gcloud CLI-Befehl
Führen Sie den gcloud CLI-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 das Component Gateway für einen Cluster aktiviert ist, können Sie eine Verbindung zu den Weboberflächen der Komponenten herstellen, die auf dem ersten Masterknoten des Clusters ausgeführt werden. Klicken Sie dazu auf die Links in der Google Cloud Console. Das Komponentengateway legt außerdem endpointConfig.httpPorts mit einer Zuordnung von Portnamen zu URLs fest. Alternativ zur Console können Sie das gcloud-Befehlszeilentool oder die Dataproc REST API verwenden, um diese Zuordnungsinformationen aufzurufen. Kopieren Sie dann die URL und fügen Sie sie in Ihren Browser ein, um eine Verbindung zur Benutzeroberfläche der Komponente herzustellen.
Console
Rufen Sie in der Google Cloud Console das Formular Cluster für Managed Service for Apache Spark auf und wählen Sie Ihren 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 standardmäßigen und optionalen Komponenten aufzurufen, die im Cluster installiert sind. Klicken Sie auf den entsprechenden Link, um die auf dem Masterknoten des Clusters ausgeführte Weboberfläche in Ihrem lokalen Browser zu öffnen.
gcloud CLI-Befehl
Führen Sie den gcloud CLI-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.
Das Component Gateway unterstützt auch VPC-SC-Konfigurationen, die auf privater Google-Konnektivität für Managed Service for Apache Spark-Cluster ohne externe IP-Adressen basieren. Sie müssen Ihr Netzwerk jedoch manuell konfigurieren, um den Zugriff von der Managed Service for Apache Spark-Master-VM auf *.dataproc.cloud.google.com über den eingeschränkten virtuellen IP-Bereich von Google 199.36.153.4/30 zuzulassen. Gehen Sie dazu so vor:
- Folgen Sie der Anleitung, um eine private Verbindung für alle Google APIs zu konfigurieren.
- Konfigurieren Sie DNS mit Cloud DNS oder konfigurieren Sie DNS lokal auf dem Managed Service for Apache Spark-Masterknoten, um den Zugriff auf
*.dataproc.cloud.google.comzu ermöglichen.
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:
vpcDieser 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 auf dem Managed Service for Apache Spark-Masterknoten mit einer Initialisierungsaktion konfigurieren
Sie können DNS auf Managed Service for Apache Spark-Masterknoten lokal konfigurieren, um eine private Verbindung zu dataproc.cloud.google.com zu ermöglichen. Dieses Verfahren ist für kurzfristige Tests und die Entwicklung gedacht. 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-managed-spark/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 ist ein Cloud Storage-Bucket, auf den über den Managed Service for Apache Spark-Cluster zugegriffen werden kann.
Erstellen Sie einen Managed Service for Apache Spark-Cluster mit der bereitgestellten Initialisierungsaktion und aktiviertem Komponentengateway.
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 in Schritt 1 verwendete Cloud Storage-Bucket.
HTTP APIs programmatisch über Component Gateway 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/.
SSL-Zertifikat für das Komponenten-Gateway neu generieren
Das Standard-SSL-Zertifikat des Knox-Gateways für das Komponenten-Gateway ist gültig für:
5 Jahre ab dem Erstellungsdatum des Managed Service for Apache Spark-Clusters für Cluster, die mit den Image-Versionen 2.0.93, 2.1.41, 2.2.7 und höher erstellt wurden.
13 Monate ab dem Erstellungsdatum des Managed Service for Apache Spark-Clusters bei Clustern, die mit früheren Image-Versionen erstellt wurden.
Wenn das Zertifikat abläuft, werden alle URIs 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, erneuern Sie es so:
Stellen Sie über SSH eine Verbindung zum Clustermaster des Managed Service for Apache Spark-Clusters mit dem Namenssuffix
m-0her.Suchen Sie nach
gateway.jksim Pfad/var/lib/knox/security/keystores/gateway.jks.keytool -list -v -keystore /var/lib/knox/security/keystores/gateway.jks
Verschieben Sie die Datei
gateway.jksin ein Sicherungsverzeichnis.mv /var/lib/knox/security/keystores/gateway.jks /tmp/backup/gateway.jks
Erstellen Sie ein neues selbst signiertes Zertifikat, indem Sie den Knox-Dienst neu starten.
systemctl restart knox
Prüfen Sie den Status von Component Gateway und Knox.
systemctl status google-dataproc-component-gateway systemctl status knox
Nächste Schritte
- Erstellen Sie einen Cluster mit Managed Service for Apache Spark-Komponenten.