集群属性

安装在 Dataproc 集群上的开源组件包含许多配置文件。例如,Apache Spark 和 Apache Hadoop 具有一些 XML 和纯文本配置文件。您可以在创建集群时使用 gcloud dataproc clusters create 命令的 ‑‑properties 标志来修改许多常用配置文件。

格式设置

gcloud dataproc clusters create --properties 标志接受以下字符串格式:

file_prefix1:property1=value1,file_prefix2:property2=value2,...
  • file_prefix 映射到预定义的配置文件(如下表所示),property 映射到该文件中的属性。

  • 用于分隔多个集群属性的默认分隔符是逗号 (,)。但是,如果属性值中包含逗号,则必须通过在属性列表的开头指定“^delimiter^”来更改分隔符(请参阅 gcloud topic escaping 了解详情)。

    • 使用“#”分隔符的示例:
      --properties ^#^file_prefix1:property1=part1,part2#file_prefix2:property2=value2
      

示例

gcloud 命令

如需更改 spark-defaults.conf 文件中的 spark.master 设置,请添加以下 gcloud dataproc clusters create --properties 标志:

--properties 'spark:spark.master=spark://example.com'

利用逗号分隔符,您可以一次性更改一个或多个配置文件中的多个属性。每个属性都必须以完整的 file_prefix:property=value 格式指定。例如,如需更改 spark-defaults.conf 文件中的 spark.master 设置和 hdfs-site.xml 文件中的 dfs.hosts 设置,请在创建集群时使用以下 --properties 标志:

--properties 'spark:spark.master=spark://example.com,hdfs:dfs.hosts=/foo/bar/baz'

REST API

要将 spark.executor.memory 设置为 10g,请在 clusters.create 请求的 SoftwareConfig 部分插入以下 properties 设置:

"properties": {
  "spark:spark.executor.memory": "10g"
}

如需查看如何构建 Dataproc API 集群 REST 请求的 JSON 正文,一个简单的方法是使用 --log-http 标记启动等效的 gcloud 命令。以下是一个示例 gcloud dataproc clusters create 命令,该命令使用 --properties spark:spark.executor.memory=10g 标志设置集群属性。stdout 日志显示了生成的 REST 请求正文(properties 代码段如下所示):

gcloud dataproc clusters create my-cluster \
    --region=region \
    --properties=spark:spark.executor.memory=10g \
    --log-http \
    other args ...

输出:

...
== body start ==
{"clusterName": "my-cluster", "config": {"gceClusterConfig": ...
"masterConfig": {... "softwareConfig": {"properties": {"spark:spark.executor.memory": "10g"}},

... == body end == ...

如果您不希望命令生效,请在 JSON 正文出现在输出中后确保取消该命令

控制台

要更改 spark-defaults.conf 文件中的 spark.master 设置,请按以下步骤操作:

  1. 在 Cloud Console 中,打开 Dataproc 创建集群页面。点击“自定义集群”面板,然后滚动到“集群属性”部分。

  2. 点击 + 添加属性。在“前缀”列表中选择 spark,然后在“键”字段添加“spark.master”并在“值”字段中添加设置。

集群与作业属性

在您创建集群时,系统会在集群级层应用 Apache Hadoop YARN、HDFS、Spark 和其他文件前缀属性。其中许多属性也适用于特定作业。将属性应用于作业时不使用文件前缀

示例:

将 Spark 作业的 Spark 执行程序内存设置为 4g(省略 spark: 前缀)。

gcloud dataproc jobs submit spark \
    --region=region \
    --properties=spark.executor.memory=4g \
    ... other args ...

文件前缀属性表

文件前缀 文件 文件用途
capacity-scheduler capacity-scheduler.xml Hadoop YARN 容量调度程序配置
core core-site.xml Hadoop 常规配置
distcp distcp-default.xml Hadoop 分布式复制配置
hadoop-env hadoop-env.sh Hadoop 特定环境变量
hbase hbase-site.xml HBase 配置
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 配置

备注

  • 有些属性是预留属性,不能被替换,因为它们会影响 Dataproc 集群的功能。如果您尝试更改预留属性,则在创建集群时,您将收到错误消息。
  • 您可以指定多项更改,只需用逗号分隔每项更改即可。
  • --properties 标记不能修改上面未显示的配置文件。
  • 系统会先应用对属性做出的更改,然后再启动集群上的守护进程。
  • 如果指定的属性存在,它将被更新。如果指定的属性不存在,它将被添加到配置文件中。

Dataproc 服务属性

下面列出的属性是 Dataproc 特有的。这些属性可用于进一步配置 Dataproc 集群的功能。这些集群属性是在创建集群时指定的。无法在创建集群后指定或更新它们。

格式设置

gcloud dataproc clusters create --properties 标志接受以下字符串格式:

property_prefix1:property1=value1,property_prefix2:property2=value2,...
  • 用于分隔多个集群属性的默认分隔符是逗号 (,)。但是,如果属性值中包含逗号,则必须通过在属性列表的开头指定“^delimiter^”来更改分隔符(请参阅 gcloud topic escaping 了解详情)。

    • 使用“#”分隔符的示例:
      --properties ^#^property_prefix1:property1=part1,part2#property_prefix2:property2=value2
      

示例:

创建集群并将增强的灵活性模式设置为 Spark 主工作器重排。

gcloud dataproc jobs submit spark \
    --region=region \
    --properties=dataproc:efm.spark.shuffle=primary-worker \
    ... other args ...

Dataproc 服务属性表

属性前缀 属性 说明
dataproc am.primary_only truefalse 将此属性设置为 true 可防止应用主实例在 Dataproc 集群抢占式工作器上运行。注意:此功能仅适用于 Dataproc 1.2 及更高版本。默认值为 false
dataproc dataproc.allow.zero.workers truefalse 在 Dataproc clusters.create API 请求中将 SoftwareConfig 属性设置为 true,以创建单节点集群,将默认的工作器数量从 2 更改为 0,并将工作器组件放置在主实例主机上。您还可以通过 Cloud Console 或通过将工作器的数量设置为 0 的方式使用 gcloud 命令行工具创建单节点集群。
dataproc dataproc.alpha.master.nvdimm.size.gb 1500-6500 设置值会创建具有 Intel Optane DC 持久存储器的 Dataproc 主实例。注意:Optane 虚拟机只能在 us-central1-f 区域中创建,只有 n1-highmem-96-aep 机器类型,且只能在白名单项目中创建。
dataproc: dataproc.alpha.worker.nvdimm.size.gb 1500-6500 设置值会创建具有 Intel Optane DC 持久存储器的 Dataproc 工作器。注意:Optane 虚拟机只能在 us-central1-f 区域中创建,只有 n1-highmem-96-aep 机器类型,且只能在白名单项目中创建。
dataproc: dataproc.beta.secure.multi-tenancy.user.mapping user-to-service account mappings 此属性采用用户到服务帐号的映射列表。映射的用户可以通过具有独立用户身份的集群将交互式工作负载提交到集群(请参阅 Dataproc 服务帐号安全安全多租户)。
dataproc dataproc.conscrypt.provider.enable truefalse 启用(true)或停用(falseConscrypt作为主要 Java 安全提供程序。注意:默认情况下,Dataproc 1.2 和更高版本中启用了 Conscrypt,但在 1.0/1.1 版本中停用了此组件。
dataproc dataproc.cooperative.multi-tenancy.user.mapping user-to-service account mappings 此属性采用以逗号分隔的用户到服务帐号映射列表。如果使用此属性集创建集群,当用户提交作业时,集群将在通过 Cloud Storage 连接器访问 Cloud Storage 时尝试模拟相应的服务帐号。此功能需要 Cloud Storage 连接器版本 2.1.4 或更高版本。如需了解详情,请参阅 Dataproc 合作多租户。(默认:empty)。
dataproc dataproc.localssd.mount.enable truefalse 是否将本地 SSD 挂载为 Hadoop/Spark 临时目录和 HDFS 数据目录(默认值:true)。
dataproc dataproc.logging.stackdriver.enable truefalse 启用(true)或停用(falseLogging(默认值:true)。
dataproc dataproc.logging.stackdriver.job.driver.enable truefalse Logging 中启用 (true)或停用(false)Dataproc 作业驱动程序日志(默认值:false)。
dataproc dataproc.logging.stackdriver.job.yarn.container.enable truefalse Logging 中启用(true)或停用(false)YARN 容器日志。(默认:false
dataproc dataproc.monitoring.stackdriver.enable truefalse 启用(true)或停用(false监控代理
dataproc dataproc.scheduler.driver-size-mb number 平均驱动程序内存占用量,用于确定集群将运行的并发作业数上限。默认值为 1GB。较小的值(如 256)可能适用于 Spark 作业。
dataproc dataproc.worker.custom.init.actions.mode RUN_BEFORE_SERVICES 对于 2.0 版之前的映像集群,设置 RUN_before_SERVICES,但用户可以在创建集群时设置。对于 2.0+ 映像集群,设置为 RUN_before_SERVICES,并且属性无法传递给集群(用户不能更改该属性)。 如需了解此设置的影响,请参阅重要注意事项和指南 - 初始化处理
dataproc efm.mapreduce.shuffle hcfs 如果设置为 hcfs,则 Spark Shuffle 数据会保留在 HDFS 中。如需了解详情,请参阅 Dataproc 增强的灵活性模式注意:此功能目前仅适用于 Dataproc 1.4 和 1.5。
dataproc efm.spark.shuffle primary-workerhcfs 如果设为 primary-worker,则映射器会将数据写入主要工作器(对 Spark 作业可用,建议执行此操作)。如果设置为 hcfs,则 Spark Shuffle 数据会保留在 HDFS 中。如需了解详情,请参阅 Dataproc 增强的灵活性模式注意:此功能目前仅适用于 Dataproc 1.4 和 1.5。
dataproc job.history.to-gcs.enabled truefalse 允许将 MapReduce 和 Spark 历史记录文件持久存储到 Dataproc 临时存储区中(对于图片版本 1.5+,默认值为 true)。用户可以通过以下属性覆盖作业历史记录文件持久性的位置:mapreduce.jobhistory.done-dirmapreduce.jobhistory.intermediate-done-dirspark.eventLog.dirspark.history.fs.logDirectory
dataproc jobs.file-backed-output.enable truefalse 配置 Dataproc 作业,使其输出传送到 /var/log/google-dataproc-job 目录中的临时文件。必须设置为 true 才能在 Logging 中启用作业驱动程序日志记录(默认值:true)。
dataproc jupyter.listen.all.interfaces truefalse 为了降低通过不安全的笔记本服务器 API 执行远程代码的风险,映像版本 1.3+ 的集群属性设置现为 false,当启用组件网关时,该设置将连接限制为 localhost (127.0.0.1)。通过将此属性设置为 true 以允许所有连接,可以替换此默认设置。
dataproc jupyter.notebook.gcs.dir gs://<dir-path> Cloud Storage 中用于保存 Jupyter 笔记本的位置。
dataproc kerberos.beta.automatic-config.enable truefalse 设置为 true 时,用户无需使用 --kerberos-root-principal-password--kerberos-kms-key-uri 标志(默认值:false)指定 Kerberos Root 主帐号密码。如需了解详情,请参阅通过 Kerberos 启用 Hadoop 安全模式
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 域名(大写)相同。示例:如果机器命名为“machine-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> 包含密钥(密钥库文件中)密码的 KMS 加密文件在 Cloud Storage 中的位置。
dataproc kerberos.keystore.password.uri gs://<dir-path> 包含密钥库密码的 KMS 加密文件在 Cloud Storage 中的位置。
dataproc kerberos.keystore.uri1 gs://<dir-path> 包含集群节点所使用的通配符证书和私钥的密钥库文件在 Cloud Storage 中的位置。
dataproc kerberos.kms.key.uri KMS key URI 用于解密根密码的 KMS 密钥的 URI,例如 projects/project-id/locations/region/keyRings/key-ring/cryptoKeys/key(请参阅密钥资源 ID)。
dataproc kerberos.root.principal.password.uri gs://<dir-path> Kerberos root 主体的 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 中的位置。
dataproc ranger.kms.key.uri KMS key URI 用于解密 Ranger 管理员用户密码的 KMS 密钥的 URI,例如 projects/project-id/locations/region/keyRings/key-ring/cryptoKeys/key(请参阅密钥资源 ID)。
dataproc ranger.admin.password.uri gs://<dir-path> Ranger 管理员用户的 KMS 加密密码在 Cloud Storage 中的位置。
dataproc ranger.db.admin.password.uri gs://<dir-path> Ranger 数据库管理员用户的 KMS 加密密码在 Cloud Storage 中的位置。
dataproc ranger.cloud-sql.instance.connection.name cloud sql instance connection name Cloud SQL 实例的连接名称,例如 project-id:region:name.
dataproc ranger.cloud-sql.root.password.uri gs://<dir-path> Cloud SQL 实例的根用户的 KMS 加密密码在 Cloud Storage 中的位置。
dataproc ranger.cloud-sql.use-private-ip truefalse 集群实例和 Cloud SQL 实例之间的通信是否应通过专用 IP进行(默认值为 false
dataproc solr.gcs.path gs://<dir-path> 用作 Solr 主目录的 Cloud Storage 路径。
dataproc startup.component.service-binding-timeout.hadoop-hdfs-namenode seconds 在确定成功启动之前,Dataproc 启动脚本将等待 hadoop-hdfs-namenode 绑定到端口的时间。最大可识别值为 1800 秒 (30 分钟)。
dataproc startup.component.service-binding-timeout.hive-metastore seconds 在确定其启动成功之前,Dataproc 启动脚本等待 Hive-Metastore 服务绑定到端口的时间。最大可识别值为 1800 秒 (30 分钟)。
dataproc startup.component.service-binding-timeout.hive-server2 seconds 在确定其启动成功之前,Dataproc 启动脚本等待 hive-server2 绑定到端口的时间。最大可识别值为 1800 秒 (30 分钟)。
dataproc yarn.log-aggregation.enabled truefalse 允许(true)在 Dataproc 临时存储分区打开 YARN 日志集合。存储分区名称的格式如下:dataproc-temp-<REGION>-<PROJECT_NUMBER>-<RANDOM_STRING>。(对于图片版本 1.5+,默认值为 true)。用户还可以通过覆盖 yarn.nodemanager.remote-app-log-dir YARN 属性来设置汇总的 YARN 日志位置。
Knox gateway.host ip address 为了降低通过不安全的笔记本服务器 API 执行远程代码的风险,映像版本 1.3+ 的默认设置为 127.0.0.1,当启用组件网关时,该设置将连接限制为 localhost。默认设置可以替换,例如,将此属性设置为 0.0.0.0 以允许所有连接。
zeppelin zeppelin.notebook.gcs.dir gs://<dir-path> Cloud Storage 中用于保存 Zeppelin 笔记本的位置。
zeppelin zeppelin.server.addr ip address 为了降低通过不安全的笔记本服务器 API 执行远程代码的风险,映像版本 1.3+ 的默认设置为 127.0.0.1,当启用组件网关时,该设置将连接限制为 localhost。此默认设置可以替换,例如,将此属性设置为 0.0.0.0 以允许所有连接。

1 密钥库文件:密钥库文件包含 SSL 证书。文件应为 Java KeyStore (JKS) 格式。在复制到虚拟机时,其将重命名为 keystore.jks。 SSL 证书应为适用于集群中每个节点的通配符证书。

2信任库文件:信任库文件应为 Java KeyStore (JKS) 格式。在复制到虚拟机时,其将重命名为 truststore.jks