Apache Hadoop YARN, HDFS, Spark und zugehörige Attribute
Die in Dataproc-Clustern installierten Open-Source-Komponenten enthalten viele Konfigurationsdateien. Apache Spark und Apache Hadoop haben beispielsweise mehrere XML- und Nur-Text-Konfigurationsdateien. Mit dem Flag ‑‑properties
des Befehls gcloud dataproc clusters create können Sie beim Erstellen eines Clusters viele häufig verwendete Konfigurationsdateien ändern.
Formatierung
Das Flag gcloud dataproc clusters create --properties
akzeptiert das folgende Stringformat:
file_prefix1:property1=value1,file_prefix2:property2=value2,...
Das file_prefix wird wie in der folgenden Tabelle dargestellt einer vordefinierten Konfigurationsdatei zugeordnet und die property wird einem Attribut in der Datei zugeordnet.
Das Standardtrennzeichen zum Trennen mehrerer Clusterattribute ist das Komma (,). Wenn in einem Attributwert jedoch ein Komma enthalten ist, müssen Sie das Trennzeichen ändern, indem Sie ein "^delimiter^" am Anfang der Attributsliste angeben (weitere Informationen finden Sie unter gcloud topic escaping).
- Beispiel mit einem „#“-Trennzeichen:
--properties ^#^file_prefix1:property1=part1,part2#file_prefix2:property2=value2
- Beispiel mit einem „#“-Trennzeichen:
Beispiele
gcloud-Befehl
Fügen Sie das folgende Flag gcloud dataproc clusters create --properties
hinzu, um die Einstellung spark.master
in der Datei spark-defaults.conf
zu ändern:
--properties 'spark:spark.master=spark://example.com'
Sie können mehrere Eigenschaften gleichzeitig in einer oder mehreren Konfigurationsdateien ändern, indem Sie ein Komma als Trennzeichen verwenden. Jede Eigenschaft muss im vollständigen file_prefix:property=value
-Format angegeben werden. Wenn Sie beispielsweise die Einstellung spark.master
in der Datei spark-defaults.conf
und die Einstellung dfs.hosts
in der Datei hdfs-site.xml
ändern möchten, verwenden Sie das folgende --properties
-Flag, wenn Sie den Cluster erstellen:
--properties 'spark:spark.master=spark://example.com,hdfs:dfs.hosts=/foo/bar/baz'
REST API
Um spark.executor.memory
auf 10g
zu setzen, fügen Sie die folgende properties
-Einstellung in den Abschnitt SoftwareConfig Ihrer clusters.create-Anfrage ein:
"properties": { "spark:spark.executor.memory": "10g" }
Der JSON-Text einer REST-Anfrage von Cloud Dataproc API-Clustern kann einfach durch Initiieren des entsprechenden gcloud
-Befehls mithilfe des Flags --log-http
erstellt werden.
Hier sehen Sie ein Beispiel für einen gcloud dataproc clusters create
-Befehl, mit dem Cluster-Eigenschaften mit dem Flag --properties spark:spark.executor.memory=10g
festgelegt werden.
Das Stdout-Log zeigt den resultierenden REST-Anfragetext an (das properties
-Snippet wird unten dargestellt):
gcloud dataproc clusters create my-cluster \ --region=region \ --properties=spark:spark.executor.memory=10g \ --log-http \ other args ...
Ausgabe:
... == body start == {"clusterName": "my-cluster", "config": {"gceClusterConfig": ... "masterConfig": {... "softwareConfig": {"properties": {"spark:spark.executor.memory": "10g"}},
... == body end == ...
Um zu vermeiden, dass der Befehl wirksam wird, müssen Sie den Befehl abbrechen, wenn der JSON-Text in der Ausgabe angezeigt wird.
Console
So ändern Sie die Einstellung spark.master
in der Datei spark-defaults.conf
:
- Öffnen Sie in der Cloud Console die Dataproc-Seite Cluster erstellen. Klicken Sie auf das Feld „Cluster anpassen“ und scrollen Sie zum Abschnitt „Clusterattribute“.
- Klicken Sie auf + ATTRIBUTE HINZUFÜGEN. Wählen Sie in der Präfixliste spark aus und fügen Sie den Wert „spark.master“ im Feld „Schlüssel“ sowie die Einstellung im Feld „Wert“ hinzu.
Cluster- oder Jobattribute
Die Apache Hadoop YARN-, HDFS-, Spark- und andere Dateipräfixattribute werden beim Erstellen eines Clusters auf Clusterebene angewendet. Viele dieser Attribute können auch auf bestimmte Jobs angewendet werden. Wenn Sie ein Attribut auf einen Job anwenden, wird das Dateipräfix nicht verwendet.
Beispiel:
Legen Sie den Spark-Executor-Arbeitsspeicher für einen Spark-Job auf 4 GB fest (Präfix spark:
wird ausgelassen).
gcloud dataproc jobs submit spark \ --region=region \ --properties=spark.executor.memory=4g \ ... other args ...
Tabelle mit Attributen mit Dateipräfixen
Dateipräfix | Datei | Dateizweck |
---|---|---|
capacity-scheduler | capacity-scheduler.xml | Hadoop YARN Capacity Scheduler-Konfiguration |
core | core-site.xml | Hadoop – allgemeine Konfiguration |
distcp | distcp-default.xml | Hadoop Distributed Copy-Konfiguration |
hadoop-env | hadoop-env.sh | Hadoop-spezifische Umgebungsvariablen |
HBase | hbase-site.xml | HBase-Konfiguration |
hdfs | hdfs-site.xml | Hadoop – HDFS-Konfiguration |
hive | hive-site.xml | Hive-Konfiguration |
mapred | mapred-site.xml | Hadoop – MapReduce-Konfiguration |
mapred-env | mapred-env.sh | Hadoop MapReduce-spezifische Umgebungsvariablen |
pig | pig.properties | Pig-Konfiguration |
presto | config.properties | Presto-Konfiguration |
presto-jvm | jvm.config | Presto-spezifische JVM-Konfiguration |
spark | spark-defaults.conf | Spark-Konfiguration |
spark-env | spark-env.sh | Spark-spezifische Umgebungsvariablen |
yarn | yarn-site.xml | Hadoop – YARN-Konfiguration |
yarn-env | yarn-env.sh | Hadoop YARN-spezifische Umgebungsvariablen |
zeppelin | zeppelin-site.xml | Zeppelin-Konfiguration |
zeppelin-env | zeppelin-env.sh | Zeppelin-spezifische Umgebungsvariablen (nur optionale Komponente) |
zookeeper | zoo.cfg | Zookeeper-Konfiguration |
Hinweise
- Einige Attribute sind reserviert und können nicht überschrieben werden, da sie sich auf die Funktionalität des Dataproc-Clusters auswirken. Wenn Sie versuchen, ein reserviertes Attribut zu ändern, erhalten Sie beim Erstellen des Clusters eine Fehlermeldung.
- Mehrere Änderungen werden durch ein Komma getrennt.
- Mit dem Flag
--properties
können nur die oben aufgeführten Konfigurationsdateien geändert werden. - Änderungen an den Attributen werden übernommen, bevor die Daemons auf dem Cluster gestartet werden.
- Wenn das angegebene Attribut bereits vorhanden ist, wird es aktualisiert. Wenn die angegebene Eigenschaft nicht vorhanden ist, wird sie der Konfigurationsdatei hinzugefügt.
Dataproc-Dienstattribute
Die im Folgenden aufgeführten Attribute gelten speziell für Dataproc. Diese Attribute können verwendet werden, um die Funktionalität Ihres Dataproc-Clusters weiter zu konfigurieren. Diese Clusterattribute werden beim Erstellen des Clusters angegeben. Sie können nach der Clustererstellung nicht angegeben oder aktualisiert werden.
Formatierung
Das Flag gcloud dataproc clusters create --properties
akzeptiert das folgende Stringformat:
property_prefix1:property1=value1,property_prefix2:property2=value2,...
Das Standardtrennzeichen zum Trennen mehrerer Clusterattribute ist das Komma (,). Wenn in einem Attributwert jedoch ein Komma enthalten ist, müssen Sie das Trennzeichen ändern, indem Sie "^delimiter^" am Anfang der Attributsliste angeben (weitere Informationen finden Sie unter gcloud topic escaping).
- Beispiel mit einem „#“-Trennzeichen:
--properties ^#^property_prefix1:property1=part1,part2#property_prefix2:property2=value2
- Beispiel mit einem „#“-Trennzeichen:
Beispiel:
Erstellen Sie einen Cluster und legen Sie den Enhanced Flexibility Mode auf den primären Worker-Shuffle für Spark fest.
gcloud dataproc jobs submit spark \ --region=region \ --properties=dataproc:efm.spark.shuffle=primary-worker \ ... other args ...
Tabelle der Dataproc-Dienstattribute
Attributpräfix | Attribut | Werte | Beschreibung |
---|---|---|---|
Dataproc | am.primary_only | true oder false |
Setzen Sie dieses Attribut auf true true, um zu verhindern, dass der Anwendungsmaster auf Workern auf Abruf des Dataproc-Clusters ausgeführt wird. Hinweis: Diese Funktion ist nur in Verbindung mit Dataproc 1.2 und höher verfügbar. Der Standardwert ist false . |
Dataproc | dataproc.allow.zero.workers | true oder false |
Legen Sie für dieses SoftwareConfig-Attribut true in der Cloud Dataproc clusters.create API-Anfrage fest, um einen Cluster mit einem einzigen Knoten zu erstellen. Dadurch wird die Standardanzahl der Worker von 2 in 0 geändert und es werden Worker-Komponenten im Masterhost platziert. Ein Cluster mit einzelnem Knoten kann auch über die Cloud Console oder mit dem gcloud -Befehlszeilentool erstellt werden, indem Sie die Anzahl der Worker auf 0 setzen. |
Dataproc | dataproc.alpha.master.nvdimm.size.gb | 1500-6500 | Durch das Festlegen eines Werts wird mit Intel Optane DC Persistent Memory ein Dataproc-Master erstellt. Hinweis: Optane-VMs können nur in us-central1-f -Zonen, nur mit n1-highmem-96-aep -Maschinentyp und nur in Projekten auf der weißen Liste erstellt werden. |
dataproc: | dataproc.alpha.worker.nvdimm.size.gb | 1500-6500 | Durch das Festlegen eines Werts wird mit Intel Optane DC Persistent Memory ein Dataproc-Worker erstellt. Hinweis: Optane-VMs können nur in us-central1-f -Zonen, nur mit n1-highmem-96-aep -Maschinentyp und nur in Projekten auf der weißen Liste erstellt werden. |
dataproc: | dataproc.beta.secure.multi-tenancy.user.mapping | user-to-service account mappings |
Diese Property verwendet eine Liste von Nutzer-zu-Dienst-Kontozuordnungen. Zugeordnete Nutzer können interaktive Arbeitslasten an den Cluster mit isolierten Nutzeridentitäten senden (siehe Dataproc-Dienstkonto: Sichere Mehrinstanzenfähigkeit). |
Dataproc | dataproc.conscrypt.provider.enable | true oder false |
Aktiviert (true ) oder deaktiviert (false ) Conscrypt als primären Java-Sicherheitsanbieter. Hinweis: Conscrypt ist in Dataproc 1.2 und höher standardmäßig aktiviert, jedoch in 1.0/1.1 deaktiviert. |
Dataproc | dataproc.cooperative.multi-tenancy.user.mapping | user-to-service account mappings |
Dieses Attribut verwendet eine Liste mit durch Kommas getrennten Nutzer-zu-Dienst-Kontozuordnungen. Wenn ein Cluster mit diesem Attribut erstellt wird und ein Nutzer einen Job sendet, versucht der Cluster, beim Zugriff auf Cloud Storage über den Cloud Storage-Connector die Identität des entsprechenden Dienstkontos zu übernehmen. Für diese Funktion ist der Cloud Storage-Connector Version 2.1.4 oder höher erforderlich. Weitere Informationen finden Sie unter Dataproc-Cooperative-Mandantenfähigkeit. (Standardeinstellung: empty ). |
Dataproc | dataproc.localssd.mount.enable | true oder false |
Gibt an, ob lokale SSDs als temporäre Hadoop/Spark-Verzeichnisse und HDFS-Datenverzeichnisse bereitgestellt werden sollen (Standardeinstellung: true ). |
Dataproc | dataproc.logging.stackdriver.enable | true oder false |
Aktiviert (true ) oder deaktiviert (false ) das Logging (Standardeinstellung: true ). |
Dataproc | dataproc.logging.stackdriver.job.driver.enable | true oder false |
Aktiviert (true ) oder deaktiviert (false ) Dataproc-Jobtreiberprotokolle in Logging (Standardeinstellung: false ). |
Dataproc | dataproc.logging.stackdriver.job.yarn.container.enable | true oder false |
Aktiviert (true ) oder deaktiviert (false ) YARN-Containerlogs in Logging. (Standardeinstellung: false ) |
Dataproc | dataproc.monitoring.stackdriver.enable | true oder false |
Aktiviert (true ) oder deaktiviert (false ) den Monitoring-Agent. |
Dataproc | dataproc.scheduler.driver-size-mb | number |
Der durchschnittliche Speicherbedarf des Treibers, der die maximale Anzahl gleichzeitiger Jobs bestimmt, die ein Cluster ausführen wird. Der Standardwert ist 1 GB. Für Spark-Jobs kann ein kleinerer Wert wie 256 geeignet sein. |
Dataproc | dataproc.worker.custom.init.actions.mode | RUN_BEFORE_SERVICES |
(Standardeinstellung: nicht aktiviert ). Wenn dieses Flag während der Clustererstellung angegeben wird und die primäre Worker-VM zum ersten Mal gestartet wird, werden die Initialisierungsaktionen ausgeführt, bevor der Knotenmanager und die Datenknoten-Daemons gestartet werden. Weitere Informationen finden Sie unter Initialisierungsaktionen – wichtige Überlegungen und Richtlinien. |
Dataproc | efm.mapreduce.shuffle | hcfs |
Bei der Einstellung hcfs werden Spark-Shuffle-Daten in HDFS beibehalten. Weitere Informationen finden Sie unter Dataprocer Enhanced Flexibility Mode. Hinweis: Diese Funktion ist momentan nur mit Dataproc 1.4 und 1.5 verfügbar. |
Dataproc | efm.spark.shuffle | primary-worker oder hcfs |
Wenn primary-worker festgelegt ist, schreiben Mapper Daten an primäre Worker (verfügbar für und Spark-Jobs empfohlen). Bei der Einstellung hcfs werden Spark-Shuffle-Daten in HDFS beibehalten. Weitere Informationen finden Sie unter Dataprocer Enhanced Flexibility Mode. Hinweis: Diese Funktion ist momentan nur mit Dataproc 1.4 und 1.5 verfügbar. |
Dataproc | job.history.to-gcs.enabled | true oder false |
Ermöglicht das Beibehalten von MapReduce- und Spark-Verlaufsdateien im temporären Dataproc-Bucket (Standardeinstellung: true für Image-Versionen 1.5 und höher). Nutzer können die Speicherorte der Jobprotokoll-Persistenz über die folgenden Attribute überschreiben: mapreduce.jobhistory.done-dir , mapreduce.jobhistory.intermediate-done-dir , spark.eventLog.dir , und spark.history.fs.logDirectory |
Dataproc | jobs.file-backed-output.enable | true oder false |
Konfiguriert Dataproc-Jobs, um ihre Ausgabe an temporäre Dateien im Verzeichnis /var/log/google-dataproc-job weiterzuleiten. Muss auf true gesetzt werden, damit das Jobtreiber-Logging in Logging aktiviert wird (Standardeinstellung: true ). |
Dataproc | jupyter.listen.all.interfaces | true oder false |
Um das Risiko der Remotecodeausführung über unsichere Notebookserver-APIs zu verringern, ist die Standardeinstellung für Image-Versionen 1.3 und höher false , die Verbindungen auf localhost (127.0.0.1 ) beschränkt, wenn Komponenten-Gateway ist aktiviert. Diese Standardeinstellung kann überschrieben werden, indem für dieses Attribut true festgelegt wird. |
Dataproc | jupyter.notebook.gcs.dir | gs://<dir-path> |
Speicherort in Cloud Storage zum Speichern von Jupyter-Notebooks. |
Dataproc | kerberos.beta.automatic-config.enable | true oder false |
Wenn true festgelegt ist, müssen Nutzer das Passwort des Kerberos-Root-Hauptkontos nicht mit den Flags --kerberos-root-principal-password und --kerberos-kms-key-uri (Standard: false ) angeben. Weitere Informationen finden Sie unter Sicheren Hadoop-Modus über Kerberos aktivieren. |
Dataproc | kerberos.cross-realm-trust.admin-server | hostname/address |
Hostname/Adresse des Remote-Admin-Servers (oft identisch mit dem KDC-Server). |
Dataproc | kerberos.cross-realm-trust.kdc | hostname/address |
Hostname/Adresse des entfernten KDC. |
Dataproc | kerberos.cross-realm-trust.realm | realm name |
Realm-Namen können aus beliebigen ASCII-Strings in GROSSBUCHSTABEN bestehen. Normalerweise ist der Realm-Name derselbe wie Ihr DNS-Domainname (in GROSSBUCHSTABEN). Beispiel: Wenn Maschinen den Namen "machine-id.example.west-coast.mycompany.com" erhalten, kann der zugeordnete Realm als "EXAMPLE.WEST-COAST.MYCOMPANY.COM" bezeichnet werden. |
Dataproc | kerberos.cross-realm-trust.shared-password.uri | gs://<dir-path> |
Speicherort in Cloud Storage des mit KMS verschlüsselten freigegebenen Passworts. |
Dataproc | kerberos.kdc.db.key.uri | gs://<dir-path> |
Speicherort in Cloud Storage der KMS-verschlüsselten Datei mit dem Masterschlüssel der KDC-Datenbank. |
Dataproc | kerberos.key.password.uri | gs://<dir-path> |
Speicherort in Cloud Storage der KMS-verschlüsselten Datei, die das Passwort des Schlüssels in der Keystore-Datei enthält. |
Dataproc | kerberos.keystore.password.uri | gs://<dir-path> |
Speicherort in Cloud Storage der KMS-verschlüsselten Datei, die das Keystore-Passwort enthält. |
Dataproc | kerberos.keystore.uri1 | gs://<dir-path> |
Speicherort in Cloud Storage der Keystore-Datei, die das Platzhalterzertifikat und den von Clusterknoten verwendeten privaten Schlüssel enthält. |
Dataproc | kerberos.kms.key.uri | KMS key URI |
Der URI des KMS-Schlüssels zum Entschlüsseln des Root-Passworts, z. B. projects/project-id/locations/region/keyRings/key-ring/cryptoKeys/key (siehe Schlüsselressourcen-ID). |
Dataproc | kerberos.root.principal.password.uri | gs://<dir-path> |
Speicherort in Cloud Storage des KMS-verschlüsselten Passworts für das Kerberos-Root-Principal. |
Dataproc | kerberos.tgt.lifetime.hours | hours |
Maximale Lebensdauer des Ticket gewährenden Tickets. |
Dataproc | kerberos.truststore.password.uri | gs://<dir-path> |
Speicherort in Cloud Storage der KMS-verschlüsselten Datei, die das Passwort für die Truststore-Datei enthält. |
Dataproc | kerberos.truststore.uri2 | gs://<dir-path> |
Speicherort in Cloud Storage der KMS-verschlüsselten Datei, die vertrauenswürdige Zertifikate enthält. |
Dataproc | ranger.kms.key.uri | KMS key URI |
Der URI des KMS-Schlüssels, der zum Entschlüsseln des Administratorpassworts für Ranger verwendet wird, z. B. projects/project-id/locations/region/keyRings/key-ring/cryptoKeys/key Schlüsselressourcen-ID. |
Dataproc | ranger.admin.password.uri | gs://<dir-path> |
Speicherort in Cloud Storage des mit KMS verschlüsselten Passworts für den Ranger-Administrator. |
Dataproc | ranger.db.admin.password.uri | gs://<dir-path> |
Speicherort des KMS-verschlüsselten Passworts für den Ranger-Datenbankadministrator in Cloud Storage. |
Dataproc | ranger.cloud-sql.instance.connection.name | cloud sql instance connection name |
Der Verbindungsname der Cloud SQL-Instanz, z. B. project-id:region:name. |
Dataproc | ranger.cloud-sql.root.password.uri | gs://<dir-path> |
Speicherort in Cloud Storage des KMS-verschlüsselten Passworts für den Root-Nutzer der Cloud SQL-Instanz. |
Dataproc | ranger.cloud-sql.use-private-ip | true oder false |
Legt fest, ob die Kommunikation zwischen Clusterinstanzen und der Cloud SQL-Instanz über eine private IP-Adresse erfolgen soll (Standardwert ist false ). |
Dataproc | solr.gcs.path | gs://<dir-path> |
Cloud Storage-Pfad, der als Solr-Basisverzeichnis fungiert. |
Dataproc | startup.component.service-binding-timeout.hadoop-hdfs-namenode | seconds |
Die Zeitspanne, die das Dataproc-Startskript wartet, bis das Hadoop-HDFS-namenode an Ports gebunden ist, bevor entschieden wird, dass der Start erfolgreich war. Der maximal erkannte Wert beträgt 1.800 Sekunden (30 Minuten). |
Dataproc | startup.component.service-binding-timeout.hive-metastore | seconds |
Die Zeitspanne, die das Dataproc-Startskript auf die Bindung des Hive-Metastore-Dienstes an Ports wartet, bevor entschieden wird, dass der Start erfolgreich war. Der maximal erkannte Wert beträgt 1.800 Sekunden (30 Minuten). |
Dataproc | startup.component.service-binding-timeout.hive-server2 | seconds |
Die Zeit, die das Dataproc-Startskript auf die Bindung des Hive-Servers2 an Ports wartet, bevor entschieden wird, dass der Start erfolgreich war. Der maximal erkannte Wert beträgt 1.800 Sekunden (30 Minuten). |
Dataproc | yarn.log-aggregation.enabled | true oder false |
Ermöglicht, dass (true ) die YARN-Log-Aggregation in einem temporären Dataproc-Bucket aktiviert. Der Bucket-Name hat das folgende Format: dataproc-temp-<REGION>-<PROJECT_NUMBER>-<RANDOM_STRING> . (Standard: true für Image-Versionen 1.5 und höher). Nutzer können auch den Speicherort aggregierter YARN-Protokolle festlegen, indem sie das YARN-Attribut yarn.nodemanager.remote-app-log-dir überschreiben. |
Knox | gateway.host | ip address |
Zur Reduzierung des Risikos der Remote-Code-Ausführung über ungesicherte Notebookserver-APIs ist die Standardeinstellung für Image-Versionen 1.3 und höher 127.0.0.1 , die Verbindungen zu localhost einschränkt, wenn Component Gateway aktiviert ist. Die Standardeinstellung kann überschrieben werden, indem Sie beispielsweise dieses Attribut auf 0.0.0.0 setzen, um alle Verbindungen zuzulassen. |
zeppelin | zeppelin.notebook.gcs.dir | gs://<dir-path> |
Speicherort in Cloud Storage zum Speichern von Zeppelin-Notebooks. |
zeppelin | zeppelin.server.addr | ip address |
Um das Risiko der Remote-Codeausführung über unsichere Notebookserver-APIs zu verringern, ist für Image-Versionen 1.3 oder höher 127.0.0.1 die Standardeinstellung. Dadurch werden Verbindungen zu localhost eingeschränkt, wenn Component Gateway aktiviert ist. Diese Standardeinstellung kann überschrieben werden, indem Sie beispielsweise dieses Attribut auf 0.0.0.0 setzen, um alle Verbindungen zuzulassen. |
1Keystore-Datei: Die Keystore-Datei enthält das SSL-Zertifikat. Es muss im JKS-Format (Java KeyStore) vorliegen. Beim Kopieren in VMs wird er in keystore.jks
umbenannt.
Das SSL-Zertifikat muss ein Platzhalterzertifikat sein, das für jeden Knoten im Cluster gilt.
2Truststore-Datei: Die Truststore-Datei muss im JKS-Format (Java KeyStore) vorliegen. Beim Kopieren in VMs wird er in truststore.jks
umbenannt.