Apache Spark 和 Apache Hadoop (HDFS) 配置属性

适用于:SQL Server 2019 (15.x)

重要

Microsoft SQL Server 2019 大数据群集附加产品将停用。 对 SQL Server 2019 大数据群集的支持将于 2025 年 2 月 28 日结束。 具有软件保障的 SQL Server 2019 的所有现有用户都将在平台上获得完全支持,在此之前,该软件将继续通过 SQL Server 累积更新进行维护。 有关详细信息,请参阅公告博客文章Microsoft SQL Server 平台上的大数据选项

大数据群集支持服务和资源范围内的 Apache Spark 和 Hadoop 组件的部署时间和部署后配置。 大数据群集对大多数设置使用与相应的开源项目相同的默认配置值。 下面列出了我们所做的更改以及说明及其默认值。 除了网关资源之外,在服务范围和资源范围内可配置的设置之间没有区别。

可以在关联的 Apache 文档站点中找到所有可能的配置和默认值:

下面还列出了我们不支持配置的设置。

注释

若要在存储池中包含 Spark,请在配置文件中includeSparkbdc.json设置布尔值spec.resources.storage-0.spec.settings.spark。 有关说明,请参阅 大数据群集中的配置 Apache Spark 和 Apache Hadoop

大数据群集特定的默认 Spark 设置

下面的 Spark 设置是具有 BDC 特定默认值但用户可配置的设置。 不包括系统管理的设置。

设置名称 DESCRIPTION 类型 默认值
capacity-scheduler.yarn.scheduler.capacity.maximum-applications 系统中可同时处于活动状态且可同时处于活动状态且处于挂起状态的应用程序数上限。 整数 (int) 1万
capacity-scheduler.yarn.scheduler.capacity.resource-calculator 要用于比较计划程序中的资源的 ResourceCalculator 实现。 字符串 org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
capacity-scheduler.yarn.scheduler.capacity.root.queues 具有名为 root 的预定义队列的容量计划程序。 字符串 默认
capacity-scheduler.yarn.scheduler.capacity.root.default.capacity 将队列容量百分比(%)作为根队列的绝对资源队列最小容量。 整数 (int) 100
spark-defaults-conf.spark.driver.cores 仅用于驱动程序进程的核心数,仅在群集模式下使用。 整数 (int) 1
spark-defaults-conf.spark.driver.memoryOverhead 在群集模式下,要为每个驱动程序分配的堆外内存量。 整数 (int) 384
spark-defaults-conf.spark.executor.instances 静态分配的执行程序数。 整数 (int) 1
spark-defaults-conf.spark.executor.cores 要在每个执行程序上使用的核心数。 整数 (int) 1
spark-defaults-conf.spark.driver.memory 要用于驱动程序进程的内存量。 字符串 1g
spark-defaults-conf.spark.executor.memory 每个执行程序进程要使用的内存量。 字符串 1g
spark-defaults-conf.spark.executor.memoryOverhead 要为每个执行程序分配的堆外内存量。 整数 (int) 384
yarn-site.yarn.nodemanager.resource.memory-mb 可以为容器分配的物理内存量(以 MB 为单位)。 整数 (int) 8192
yarn-site.yarn.scheduler.maximum-allocation-mb 资源管理器中每个容器请求的最大分配量。 整数 (int) 8192
yarn-site.yarn.nodemanager.resource.cpu-vcores 可为容器分配的 CPU 核心数。 整数 (int) 32
yarn-site.yarn.scheduler.maximum-allocation-vcores Resource Manager 中每个容器请求的最大分配量(以虚拟 CPU 核心为单位)。 整数 (int) 8
yarn-site.yarn.nodemanager.linux-container-executor.secure-mode.pool-user-count 安全模式下 Linux 容器执行程序的池用户数。 整数 (int) 6
yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent 群集中可用于运行应用程序主机的资源的最大百分比。 漂浮 0.1
yarn-site.yarn.nodemanager.container-executor.class 特定作系统的容器执行程序。 字符串 org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor
capacity-scheduler.yarn.scheduler.capacity.root.default.user-limit-factor 队列容量的多个,可以配置为允许单个用户获取更多资源。 整数 (int) 1
capacity-scheduler.yarn.scheduler.capacity.root.default.maximum-capacity 最大队列容量百分比(%)作为浮点或绝对资源队列最大容量。 将此值设置为 -1 将最大容量设置为 100%。 整数 (int) 100
capacity-scheduler.yarn.scheduler.capacity.root.default.state 队列状态可以是“正在运行”或“已停止”状态之一。 字符串 跑步
capacity-scheduler.yarn.scheduler.capacity.root.default.maximum-application-lifetime 提交到队列的应用程序的最大生存期(以秒为单位)。 任何小于或等于零的值都将被视为已禁用。 整数 (int) -1
capacity-scheduler.yarn.scheduler.capacity.root.default.default-application-lifetime 提交到队列的应用程序的默认生存期(以秒为单位)。 任何小于或等于零的值都将被视为已禁用。 整数 (int) -1
capacity-scheduler.yarn.scheduler.capacity.node-locality-delay 在计划机架本地容器之后,CapacityScheduler 尝试计划机架本地容器的错过计划机会数。 整数 (int) 40
capacity-scheduler.yarn.scheduler.capacity.rack-locality-additional-delay 在节点-区域延迟延迟时间上,CapacityScheduler 会尝试计划关闭容器的其他错过计划机会的数量。 整数 (int) -1
hadoop-env。HADOOP_HEAPSIZE_MAX 所有 Hadoop JVM 进程的默认最大堆大小。 整数 (int) 2048
yarn-env。YARN_RESOURCEMANAGER_HEAPSIZE Yarn ResourceManager 的堆大小。 整数 (int) 2048
yarn-env。YARN_NODEMANAGER_HEAPSIZE Yarn NodeManager 的堆大小。 整数 (int) 2048
mapred-env。HADOOP_JOB_HISTORYSERVER_HEAPSIZE Hadoop 作业 HistoryServer 的堆大小。 整数 (int) 2048
hive-env.HADOOP_HEAPSIZE Hive 的 Hadoop 堆大小。 整数 (int) 2048
livy-conf.livy.server.session.timeout-check 检查 Livy 服务器会话超时。 布尔
livy-conf.livy.server.session.timeout-check.skip-busy 跳过忙以检查 Livy 服务器会话超时。 布尔
livy-conf.livy.server.session.timeout livy 服务器会话超时(ms/s/m | min/h/d/y)。 字符串 2 小时
livy-conf.livy.server.yarn.poll-interval Livy 服务器中 yarn 的轮询间隔(ms/s/m | min/h/d/y)。 字符串 500 毫秒
livy-conf.livy.rsc.jars Livy RSC jars. 字符串 local:/opt/livy/rsc-jars/livy-api.jar,local:/opt/livy/rsc-jars/livy-rsc.jar,local:/opt/livy/rsc-jars/netty-all.jar
livy-conf.livy.repl.jars Livy repl jars. 字符串 local:/opt/livy/repl_2.11-jars/livy-core.jar,local:/opt/livy/repl_2.11-jars/livy-repl.jar,local:/opt/livy/repl_2.11-jars/commons-codec.jar
livy-conf.livy.rsc.sparkr.package Livy RSC SparkR 包。 字符串 hdfs:///system/livy/sparkr.zip
livy-env.LIVY_SERVER_JAVA_OPTS Livy Server Java 选项。 字符串 -Xmx2g
spark-defaults-conf.spark.r.backendConnectionTimeout R 进程在其连接到 RBackend 时设置的连接超时(以秒为单位)。 整数 (int) 86400
spark-defaults-conf.spark.pyspark.python Spark 的 Python 选项。 字符串 /opt/bin/python3
spark-defaults-conf.spark.yarn.jars Yarn jar。 字符串 local:/opt/spark/jars/*
spark-history-server-conf.spark.history.fs.cleaner.maxAge 文件系统历史记录清理器删除作业历史记录文件之前的最大期限(ms/s/m | min/h/d/y)。 字符串 7d
spark-history-server-conf.spark.history.fs.cleaner.interval spark 历史记录的间隔(ms/s/m | min/h/d/y)。 字符串 12 小时
hadoop-env。HADOOP_CLASSPATH 设置其他 Hadoop 类路径。 字符串
spark-env。SPARK_DAEMON_MEMORY Spark 守护程序内存。 字符串 2克
yarn-site.yarn.log-aggregation.retain-seconds 启用日志聚合后,此属性确定保留日志的秒数。 整数 (int) 604800
yarn-site.yarn.nodemanager.log-aggregation.compression-type Yarn NodeManager 日志聚合的压缩类型。 字符串 gz
yarn-site.yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds NodeManager 日志聚合中滚动监视的间隔秒。 整数 (int) 3600
yarn-site.yarn.scheduler.minimum-allocation-mb Resource Manager 中每个容器请求的最小分配量(以 MB 为单位)。 整数 (int) 512
yarn-site.yarn.scheduler.minimum-allocation-vcores Resource Manager 中每个容器请求在虚拟 CPU 核心方面的最小分配。 整数 (int) 1
yarn-site.yarn.nm.liveness-monitor.expiry-interval-ms 等待多长时间,直到节点管理器被视为已死。 整数 (int) 180000
yarn-site.yarn.resourcemanager.zk-timeout-ms “ZooKeeper”会话超时(以毫秒为单位)。 整数 (int) 40000
capacity-scheduler.yarn.scheduler.capacity.root.default.acl_application_max_priority 可以提交具有已配置优先级的应用程序的 ACL。 例如[user={name} group={name} max_priority={priority} default_priority={priority}]。 字符串 *
includeSpark 用于配置 Spark 作业是否可以在存储池中运行的布尔值。 布尔
enableSparkOnK8s 用于配置是否在 K8s 上启用 Spark 的布尔值,这将在 Spark 头中添加 K8s 的容器。 布尔
sparkVersion Spark 的版本 字符串 2.4
spark-env。PYSPARK_ARCHIVES_PATH spark 作业中使用的 pyspark 存档 jar 的路径。 字符串 local:/opt/spark/python/lib/pyspark.zip,local:/opt/spark/python/lib/py4j-0.10.7-src.zip

以下部分列出了不支持的配置。

大数据群集特定的默认 HDFS 设置

下面的 HDFS 设置是具有 BDC 特定默认值但用户可配置的设置。 不包括系统管理的设置。

设置名称 DESCRIPTION 类型 默认值
hdfs-site.dfs.replication 默认块复制。 整数 (int) 2
hdfs-site.dfs.namenode.provided.enabled 使名称节点能够处理提供的存储。 布尔
hdfs.site.dfs.namenode.mount.acls.enabled 设置为 true 以在装载期间从远程存储继承 ACL(访问控制列表)。 布尔
hdfs-site.dfs.datanode.provided.enabled 使数据节点能够处理提供的存储。 布尔
hdfs-site.dfs.datanode.provided.volume.lazy.load 为提供的存储启用数据节点中的延迟加载。 布尔
hdfs-site.dfs.provided.aliasmap.inmemory.enabled 为提供的存储启用内存中别名映射。 布尔
hdfs-site.dfs.provided.aliasmap.class 用于在提供的存储上指定块的输入格式的类。 字符串 org.apache.hadoop.hdfs.server.common.blockaliasmap.impl.InMemoryLevelDBAliasMapClient
hdfs-site.dfs.namenode.provided.aliasmap.class 用于在为 namenode 提供的存储上指定块的输入格式的类。 字符串 org.apache.hadoop.hdfs.server.common.blockaliasmap.impl.NamenodeInMemoryAliasMapClient
hdfs-site.dfs.provided.aliasmap.load.retries 数据节点上要加载提供的别名映射的重试次数。 整数 (int) 0
hdfs-site.dfs.provided.aliasmap.inmemory.batch-size 循环访问支持别名映射的数据库时的批大小。 整数 (int) 500
hdfs-site.dfs.datanode.provided.volume.readthrough 为数据节点中提供的存储启用读取。 布尔
hdfs-site.dfs.provided.cache.capacity.mount 为提供的存储启用缓存容量装载。 布尔
hdfs-site.dfs.provided.overreplication.factor 提供的存储的过度复制因子。 每个远程 HDFS 块创建的 BDC 上的缓存块数。 漂浮 1
hdfs-site.dfs.provided.cache.capacity.fraction 提供的存储的缓存容量分数。 群集中可用于缓存提供的存储中的数据的总容量的分数。 漂浮 0.01
hdfs-site.dfs.provided.cache.capacity.bytes 用作提供的块的缓存空间的群集容量(以字节为单位)。 整数 (int) -1
hdfs-site.dfs.ls.limit 限制 ls 打印的文件数。 整数 (int) 500
hdfs-env。HDFS_NAMENODE_OPTS HDFS Namenode 选项。 字符串 -Dhadoop.security.logger=INFO,RFAS -Xmx2g
hdfs-env。HDFS_DATANODE_OPTS HDFS Datanode 选项。 字符串 -Dhadoop.security.logger=ERROR,RFAS -Xmx2g
hdfs-env。HDFS_ZKFC_OPTS HDFS ZKFC 选项。 字符串 -Xmx1g
hdfs-env。HDFS_JOURNALNODE_OPTS HDFS JournalNode 选项。 字符串 -Xmx2g
hdfs-env。HDFS_AUDIT_LOGGER HDFS 审核记录器选项。 字符串 INFO,RFAAUDIT
core-site.hadoop.security.group.mapping.ldap.search.group.hierarchy.levels 核心站点 Hadoop LDAP 搜索组的层次结构级别。 整数 (int) 10
core-site.fs.permissions.umask-mode 权限 umask 模式。 字符串 077
core-site.hadoop.security.kms.client.failover.max.retries 客户端故障转移的最大重试次数。 整数 (int) 20
zoo-cfg.tickTime “ZooKeeper”配置的时钟周期时间。 整数 (int) 2000
zoo-cfg.initLimit Init Time for “ZooKeeper” 配置。 整数 (int) 10
zoo-cfg.syncLimit “ZooKeeper”配置的同步时间。 整数 (int) 5
zoo-cfg.maxClientCnxns “ZooKeeper”配置的最大客户端连接。 整数 (int) 六十
zoo-cfg.minSessionTimeout “ZooKeeper”配置的最小会话超时。 整数 (int) 4000
zoo-cfg.maxSessionTimeout “ZooKeeper”配置的最大会话超时。 整数 (int) 40000
zoo-cfg.autopurge.snapRetainCount 自动购买“ZooKeeper”配置的对齐保留计数。 整数 (int) 3
zoo-cfg.autopurge.purgeInterval 自动购买“ZooKeeper”配置的清除间隔。 整数 (int) 0
zookeeper-java-env。JVMFLAGS “ZooKeeper”中 Java 环境的 JVM 标志。 字符串 -Xmx1G -Xms1G
zookeeper-log4j-properties.zookeeper.console.threshold “ZooKeeper”中 log4j 控制台的阈值。 字符串 信息
zoo-cfg.zookeeper.request.timeout 控制“ZooKeeper”请求超时(以毫秒为单位)。 整数 (int) 40000
kms-site.hadoop.security.kms.encrypted.key.cache.size hadoop kms 中加密密钥的缓存大小。 整数 (int) 500

大数据群集特定的默认网关设置

以下网关设置是具有 BDC 特定默认值但用户可配置的设置。 不包括系统管理的设置。 只能在 资源 范围内配置网关设置。

设置名称 DESCRIPTION 类型 默认值
gateway-site.gateway.httpclient.socketTimeout 网关中 HTTP 客户端的套接字超时(ms/s/m)。 字符串 90 秒
gateway-site.sun.security.krb5.debug 针对 Kerberos 安全性进行调试。 布尔
knox-env。KNOX_GATEWAY_MEM_OPTS Knox 网关内存选项。 字符串 -Xmx2g

不支持的 Spark 配置

以下 spark 配置不受支持,无法在大数据群集的上下文中进行更改。

类别 子类别 文件 不支持的配置
yarn-site yarn-site.xml yarn.log-aggregation-enable
yarn.log.server.url
yarn.nodemanager.pmem-check-enabled
yarn.nodemanager.vmem-check-enabled
yarn.nodemanager.aux-services
yarn.resourcemanager.address
yarn.nodemanager.address
yarn.client.failover-no-ha-proxy-provider
yarn.client.failover-proxy-provider
yarn.http.policy
yarn.nodemanager.linux-container-executor.secure-mode.use-pool-user
yarn.nodemanager.linux-container-executor.secure-mode.pool-user-prefix
yarn.nodemanager.linux-container-executor.nonsecure-mode.local-user
yarn.acl.enable
yarn.admin.acl
yarn.resourcemanager.hostname
yarn.resourcemanager.principal
yarn.resourcemanager.keytab
yarn.resourcemanager.webapp.spnego-keytab-file
yarn.resourcemanager.webapp.spnego-principal
yarn.nodemanager.principal
yarn.nodemanager.keytab
yarn.nodemanager.webapp.spnego-keytab-file
yarn.nodemanager.webapp.spnego-principal
yarn.resourcemanager.ha.enabled
yarn.resourcemanager.cluster-id
yarn.resourcemanager.zk-address
yarn.resourcemanager.ha.rm ids
yarn.resourcemanager.hostname.*
capacity-scheduler capacity-scheduler.xml yarn.scheduler.capacity.root.acl_submit_applications
yarn.scheduler.capacity.root.acl_administer_queue
yarn.scheduler.capacity.root.default.acl_application_max_priority
yarn-env yarn-env.sh
spark-defaults-conf spark-defaults.conf spark.yarn.archive
spark.yarn.historyServer.address
spark.eventLog.enabled
spark.eventLog.dir
spark.sql.warehouse.dir
spark.sql.hive.metastore.version
spark.sql.hive.metastore.jars
spark.extraListeners
spark.metrics.conf
spark.ssl.enabled
spark.authenticate
spark.network.crypto.enabled
spark.ssl.keyStore
spark.ssl.keyStorePassword
spark.ui.enabled
spark-env spark-env.sh SPARK_NO_DAEMONIZE
SPARK_DIST_CLASSPATH
spark-history-server-conf spark-history-server.conf spark.history.fs.logDirectory
spark.ui.proxyBase
spark.history.fs.cleaner.enabled
spark.ssl.enabled
spark.authenticate
spark.network.crypto.enabled
spark.ssl.keyStore
spark.ssl.keyStorePassword
spark.history.kerberos.enabled
spark.history.kerberos.principal
spark.history.kerberos.keytab
spark.ui.filters
spark.acls.enable
spark.history.ui.acls.enable
spark.history.ui.admin.acls
spark.history.ui.admin.acls.groups
livy-conf livy.conf livy.keystore
livy.keystore.password
livy.spark.master
livy.spark.deploy-mode
livy.rsc.jars
livy.repl.jars
livy.rsc.pyspark.archives
livy.rsc.sparkr.package
livy.repl.enable-hive-context
livy.superusers
livy.server.auth.type
livy.server.launch.kerberos.keytab
livy.server.launch.kerberos.principal
livy.server.auth.kerberos.principal
livy.server.auth.kerberos.keytab
livy.impersonation.enabled
livy.server.access-control.enabled
livy.server.access-control.*
livy-env livy-env.sh
hive-site hive-site.xml javax.jdo.option.ConnectionURL
javax.jdo.option.ConnectionDriverName
javax.jdo.option.ConnectionUserName
javax.jdo.option.ConnectionPassword
hive.metastore.uris
hive.metastore.pre.event.listeners
hive.security.authorization.enabled
hive.security.metastore.authenticator.manager
hive.security.metastore.authorization.manager
hive.metastore.use.SSL
hive.metastore.keystore.path
hive.metastore.keystore.password
hive.metastore.truststore.path
hive.metastore.truststore.password
hive.metastore.kerberos.keytab.file
hive.metastore.kerberos.principal
hive.metastore.sasl.enabled
hive.metastore.execute.setugi
hive.cluster.delegation.token.store.class
hive-env hive-env.sh

不支持的 HDFS 配置

以下 hdfs 配置不受支持,无法在大数据群集的上下文中进行更改。

类别 子类别 文件 不支持的配置
core-site core-site.xml fs.defaultFS
ha.zookeeper.quorum
hadoop.tmp.dir
hadoop.rpc.protection
hadoop.security.auth_to_local
hadoop.security.authentication
hadoop.security.authorization
hadoop.http.authentication.simple.anonymous.allowed
hadoop.http.authentication.type
hadoop.http.authentication.kerberos.principal
hadoop.http.authentication.kerberos.keytab
hadoop.http.filter.initializers
hadoop.security.group.mapping.*
hadoop.security.key.provider.path
mapred-env mapred-env.sh
hdfs-site hdfs-site.xml dfs.namenode.name.dir
dfs.datanode.data.dir
dfs.namenode.acls.enabled
dfs.namenode.datanode.registration.ip-hostname-check
dfs.client.retry.policy.enabled
dfs.permissions.enabled
dfs.nameservices
dfs.ha.namenodes.nmnode-0
dfs.namenode.rpc-address.nmnode-0.*
dfs.namenode.shared.edits.dir
dfs.ha.automatic-failover.enabled
dfs.ha.fencing.methods
dfs.journalnode.edits.dir
dfs.client.failover.proxy.provider.nmnode-0
dfs.namenode.http-address
dfs.namenode.httpS-address
dfs.http.policy
dfs.encrypt.data.transfer
dfs.block.access.token.enable
dfs.data.transfer.protection
dfs.encrypt.data.transfer.cipher.suites
dfs.https.port
dfs.namenode.keytab.file
dfs.namenode.kerberos.principal
dfs.namenode.kerberos.internal.spnego.principal
dfs.datanode.data.dir.perm
dfs.datanode.address
dfs.datanode.http.address
dfs.datanode.ipc.address
dfs.datanode.https.address
dfs.datanode.keytab.file
dfs.datanode.kerberos.principal
dfs.journalnode.keytab.file
dfs.journalnode.kerberos.principal
dfs.journalnode.kerberos.internal.spnego.principal
dfs.web.authentication.kerberos.keytab
dfs.web.authentication.kerberos.principal
dfs.webhdfs.enabled
dfs.permissions.superusergroup
hdfs-env hdfs-env.sh HADOOP_HEAPSIZE_MAX
zoo-cfg zoo.cfg secureClientPort
clientPort
dataDir
dataLogDir
4lw.commands.whitelist
zookeeper-java-env java.env ZK_LOG_DIR
SERVER_JVMFLAGS
zookeeper-log4j-properties log4j.properties (zookeeper) log4j.rootLogger
log4j.appender.CONSOLE.*

注释

本文包含术语 允许列表,术语Microsoft在此上下文中认为不敏感。 本文使用该术语的原因是,当前软件中存在该术语。 在从软件中删除该术语后,我们会将其从本文中删除。

gateway不支持的配置

不支持以下 gateway 配置,无法在大数据群集的上下文中更改。

类别 子类别 文件 不支持的配置
gateway-site gateway-site.xml gateway.port
gateway.path
gateway.gateway.conf.dir
gateway.hadoop.kerberos.secured
java.security.krb5.conf
java.security.auth.login.config
gateway.websocket.feature.enabled
gateway.scope.cookies.feature.enabled
ssl.exclude.protocols
ssl.include.ciphers

后续步骤

配置 SQL Server 大数据群集