安裝在 Cloud Dataproc 叢集上的開放原始碼元件包含許多設定檔。例如,Apache Spark 和 Apache Hadoop 就有幾個 XML 和純文字設定檔。您可能需要時不時地更新或新增這些設定檔。您可以在建立叢集時,於 Cloud SDK 中使用 gcloud dataproc clusters create 指令的 ‑‑properties
標記,修改許多常用的設定檔。
properties
標記的用法
為了讓您能輕鬆更新檔案和屬性,gcloud dataproc clusters create --properties
標記使用特殊的格式來指定應更新的設定檔及檔案中的屬性和值。
格式
--properties
標記的文字字串格式如下:
file_prefix:property=value
--properties
標記只能修改一組特定的常用設定檔。file_prefix
會對應至預先定義的一組設定檔。
file_prefix | 檔案 | 檔案用途 |
---|---|---|
capacity-scheduler | capacity-scheduler.xml | Hadoop YARN Capacity Scheduler 設定 |
core | core-site.xml | Hadoop 一般設定 |
distcp | distcp-default.xml | Hadoop Distributed Copy 設定 |
hadoop-env | hadoop-env.sh | Hadoop 特定環境變數 |
hdfs | hdfs-site.xml | Hadoop HDFS 設定 |
hive | hive-site.xml | Hive 設定 |
mapred | mapred-site.xml | Hadoop MapReduce 設定 |
mapred-env | mapred-env.sh | Hadoop MapReduce 特定環境變數 |
pig | pig.properties | Pig 設定 |
presto | config.properties | Presto 設定 |
presto-jvm | jvm.config | Presto 特定 JVM 設定 |
spark | spark-defaults.conf | Spark 設定 |
spark-env | spark-env.sh | Spark 特定環境變數 |
yarn | yarn-site.xml | Hadoop YARN 設定 |
yarn-env | yarn-env.sh | Hadoop YARN 特定環境變數 |
zeppelin | zeppelin-site.xml | Zeppelin 設定 |
zeppelin-env | zeppelin-env.sh | Zeppelin 特定環境變數 (僅限選用元件) |
zookeeper | zoo.cfg | Zookeeper 設定 |
重要注意事項
- 有些屬性因為攸關 Cloud Dataproc 叢集的功能所以無法覆寫,並且會被保留下來。如果您嘗試變更保留屬性,將會在建立叢集時收到錯誤訊息。
- 如要指定多個變更,可以用逗號來分隔。
--properties
標記無法修改未顯示在上表中的設定檔。- 目前不支援在 Google Cloud Platform 主控台中建立叢集時變更屬性。
- 對屬性所做的變更將在叢集上的 Daemon 啟動之前套用。
- 如果指定的屬性存在,將會更新該屬性。如果指定的屬性不存在,則會將它新增至設定檔。
Cloud Dataproc 服務屬性
以下為未包含在上方檔案列表中的其他 Cloud Dataproc 屬性。這些屬性可用於進一步設定 Cloud Dataproc 叢集的功能。
屬性 | 值 | 功能 |
---|---|---|
dataproc:am.primary_only | true 或 false |
將此屬性設為 true 以防止應用程式主要執行個體在 Cloud Dataproc 叢集先佔工作站上執行。附註:此功能僅適用於 Cloud Dataproc 1.2 及更高版本。預設值為 false 。 |
dataproc:dataproc.allow.zero.workers | true 或 false |
在 Cloud Dataproc clusters.create API 要求中將此 SoftwareConfig 屬性設為 true 可建立單節點叢集,這會將預設的工作站數量從 2 變更為 0,並將工作站元件放在主要主機上。您也可以透過在 GCP 主控台上或使用 gcloud 指令列工具將工作站數量設為 0 來建立單節點叢集。 |
dataproc:dataproc.conscrypt.provider.enable | true 或 false |
啟用 (true ) 或停用 (false ) Conscrypt,決定是否將其設為主要 Java 安全性供應商。附註:Conscrypt 在 Dataproc 1.2 以上版本中預設為啟用,在 Dataproc 1.0/1.1 版本中則預設為停用。 |
dataproc:dataproc.localssd.mount.enable | true 或 false |
是否將本機 SSD 掛接為 Hadoop/Spark 臨時目錄和 HDFS 資料目錄 (預設值:true )。 |
dataproc:dataproc.logging.stackdriver.enable | true 或 false |
啟用 (true ) 或停用 (false ) Stackdriver 記錄功能。 |
dataproc:dataproc.monitoring.stackdriver.enable | true 或 false |
啟用 (true ) 或停用 (false ) Stackdriver Monitoring 代理程式。 |
dataproc:jupyter.notebook.gcs.dir | gs://<dir-path> |
Jupyter 筆記本在 Cloud Storage 中的儲存位置。 |
dataproc:kerberos.cross-realm-trust.admin-server | hostname/address |
遠端管理伺服器的主機名稱/位址 (通常與 KDC 伺服器相同)。 |
dataproc:kerberos.cross-realm-trust.kdc | hostname/address |
遠端 KDC 的主機名稱/位址。 |
dataproc:kerberos.cross-realm-trust.realm | realm name |
領域名稱可包含任何大寫 ASCII 字串,且通常與您的 DNS 網域名稱相同 (但須為大寫)。舉例來說,如果機器名稱為「<機器 ID>.example.west-coast.mycompany.com」,指定的關聯領域可能為「EXAMPLE.WEST-COAST.MYCOMPANY.COM」。 |
dataproc:kerberos.cross-realm-trust.shared-password.uri | gs://<dir-path> |
經 KMS 加密的共用密碼在 Cloud Storage 中的位置。 |
dataproc:kerberos.kdc.db.key.uri | gs://<dir-path> |
含有 KDC 資料庫主金鑰的 KMS 加密檔案在 Cloud Storage 中的位置。 |
dataproc:kerberos.key.password.uri | gs://<dir-path> |
含有 KeyStore 檔案中金鑰密碼的 KMS 加密檔案在 Cloud Storage 中的位置。 |
dataproc:kerberos.keystore.password.uri | gs://<dir-path> |
含有 KeyStore 密碼的 KMS 加密檔案在 Cloud Storage 中的位置。 |
dataproc:kerberos.keystore.uri1 | gs://<dir-path> |
含有叢集節點所使用萬用字元認證和私密金鑰的 KeyStore 檔案在 Cloud Storage 中的位置。 |
dataproc:kerberos.kms.key.uri | KMS key URI |
用於解密 projects/project-id/locations/region/keyRings/key-ring/cryptoKeys/key 等根密碼的 KMS 金鑰 URI (請參閱金鑰資源 ID 一節)。 |
dataproc:kerberos.root.principal.password.uri | gs://<dir-path> |
Kerberos 根主體的 KMS 加密密碼在 Cloud Storage 中的位置。 |
dataproc:kerberos.tgt.lifetime.hours | hours |
票證授予票證的生命週期上限。 |
dataproc:kerberos.truststore.password.uri | gs://<dir-path> |
含有信任儲存庫檔案密碼的 KMS 加密檔案在 Cloud Storage 中的位置。 |
dataproc:kerberos.truststore.uri2 | gs://<dir-path> |
含有信任憑證的 KMS 加密信任儲存庫檔案在 Cloud Storage 中的位置。 |
zeppelin:zeppelin.notebook.gcs.dir | gs://<dir-path> |
Zeppelin 筆記本在 Cloud Storage 中的儲存位置。 |
1KeyStore 檔案:KeyStore 檔案包含安全資料傳輸層 (SSL) 憑證,且應採用 Java KeyStore (JKS) 格式。複製到 VM 後,這個檔案會重新命名為 keystore.jks
。安全資料傳輸層 (SSL) 憑證應為適用於叢集中各個節點的萬用字元憑證。
2信任儲存庫檔案:信任儲存庫檔案應採用 Java KeyStore (JKS) 格式。複製到 VM 後,這個檔案會重新命名為 truststore.jks
。
範例
gcloud 指令
如要變更spark-defaults.conf
檔案中的 spark.master
設定,請在建立新叢集時於指令行上加入下列 properties
標記:--properties 'spark:spark.master=spark://example.com'您可以透過使用逗號分隔的方式,一次變更一或多個設定檔中的數個屬性。每個屬性都必須以完整的
file_prefix:property=value
格式指定。例如,要變更 spark-defaults.conf
檔案中的 spark.master
設定及 hdfs-site.xml
檔案中的 dfs.hosts
設定,可以在建立叢集時使用下列標記:--properties 'spark:spark.master=spark://example.com,hdfs:dfs.hosts=/foo/bar/baz'
REST API
如要將spark.executor.memory
設為 10g
,請在叢集建立 JSON 要求的本體中插入下列指令:"properties": { "spark:spark.executor.memory": "10g" }