收藏!Apache DolphinScheduler 3.3.2 超全配置指南来了,一张表搞定调优

本文档为dolphinscheduler配置文件说明文档。
176778023398077e66b23c7f6f455



点击蓝字 关注我们



本文系统梳理 Apache DolphinScheduler 3.3.2 各服务(master/worker/api/alert/standalone)目录、JVM、数据源、注册中心、存储、Quartz、环境变量及日志等关键配置项、默认值与作用,为部署调优提供一站式参考。

目录

结构


17677813923696632dff4a923f67fdb17aa3ebf1284b5

启动脚

本配置

dolphinscheduler-daemon.sh

dolphinscheduler-daemon.sh 脚本负责 DolphinScheduler 的启动&关闭。start-all.sh/stop-all.sh 最终也是通过 dolphinscheduler-daemon.sh 对集群进行启动/关闭操作。目前 DolphinScheduler 只是做了一个基本的设置,JVM 参数请根据各自资源的实际情况自行设置。

默认简化参数如下:

1767780953688692b65816b3c857927647a360a625fb9

注意事项:

  • 不建议设置 "-XX:DisableExplicitGC",DolphinScheduler 使用 Netty 进行通讯,设置该参数可能会导致内存泄漏。
  • 如果设置 "-Djava.net.preferIPv6Addresses=true" 将会使用 ipv6 的 IP 地址
  • 如果设置 "-Djava.net.preferIPv4Addresses=true" 将会使用 ipv4 的 IP 地址
  • 如果都不设置,将会随机使用 ipv4 或者 ipv6

数据库

连接配置


在 DolphinScheduler 中使用 Spring Hikari 对数据库连接进行管理,配置文件位置:

服务名称
配置文件
Master Server
master-server/conf/application.yaml
Api Server
api-server/conf/application.yaml
Worker Server
worker-server/conf/application.yaml
Alert Server
alert-server/conf/application.yaml

默认配置

参数
默认值
描述
spring.datasource.driver-class-name
org.postgresql.Driver
数据库驱动
spring.datasource.url
jdbc:postgresql://127.0.0.1:5432/dolphinscheduler
数据库连接地址
spring.datasource.username
root
数据库用户名
spring.datasource.password
root
数据库密码
spring.datasource.hikari.connection-test-query
select 1
检测连接是否有效的sql
spring.datasource.hikari.minimum-idle
5
最小空闲连接池数量
spring.datasource.hikari.auto-commit
true
是否自动提交
spring.datasource.hikari.pool-name
DolphinScheduler
连接池名称
spring.datasource.hikari.maximum-pool-size
50
连接池最大连接数
spring.datasource.hikari.connection-timeout
30000
连接超时时长
spring.datasource.hikari.idle-timeout
600000
空闲连接存活最大时间
spring.datasource.hikari.leak-detection-threshold
0
连接泄露检测阈值
spring.datasource.hikari.initialization-fail-timeout
1
连接池初始化失败timeout

注意: DolphinScheduler 同样可以通过设置环境变量进行数据库连接相关的配置,将以上小写字母转成大写并把.换成_作为环境变量名,设置值即可。

注册中

心配置


DolphinScheduler 默认使用 Zookeeper 进行集群管理、容错、事件监听等功能,配置文件位置:

服务名称
配置文件
Master Server
master-server/conf/application.yaml
Api Server
api-server/conf/application.yaml
Worker Server
worker-server/conf/application.yaml

默认配置

参数
默认值
描述
registry.zookeeper.namespace
dolphinscheduler
Zookeeper集群使用的namespace
registry.zookeeper.connect-string
localhost:2181
Zookeeper集群连接信息
registry.zookeeper.retry-policy.base-sleep-time
60ms
基本重试时间差
registry.zookeeper.retry-policy.max-sleep
300ms
最大重试时间
registry.zookeeper.retry-policy.max-retries
5
最大重试次数
registry.zookeeper.session-timeout
30s
session超时时间
registry.zookeeper.connection-timeout
30s
连接超时时间
registry.zookeeper.block-until-connected
600ms
阻塞直到连接成功的等待时间
registry.zookeeper.digest
{用户名:密码}
如果zookeeper打开了acl,则需要填写认证信息访问znode,认证信息格式为{用户名}:{密码}

注意:

  • DolphinScheduler 同样可以通过 bin/env/dolphinscheduler_env.sh 进行 Zookeeper 相关的配置
  • 如果使用 etcd 作为注册中心,详细请参考链接
  • 如果使用 jdbc 作为注册中心,详细请参考链接

common.properties

配置


common.properties 配置文件目前主要是配置 hadoop/s3/yarn/applicationId 收集相关的配置,配置文件位置:

服务名称
配置文件
Master Server
master-server/conf/common.properties
Api Server
api-server/conf/common.properties
Worker Server
worker-server/conf/common.properties
Alert Server
alert-server/conf/common.properties

默认配置

参数
默认值
描述
data.basedir.path
/tmp/dolphinscheduler
本地工作目录,用于存放临时文件
resource.storage.type
NONE
资源文件存储类型: HDFS,S3,OSS,GCS,ABS,NONE
resource.upload.path
/dolphinscheduler
资源文件存储路径
aws.access.key.id
minioadmin
S3 access key
aws.secret.access.key
minioadmin
S3 secret access key
aws.region
us-east-1
S3 区域
aws.s3.endpoint
http://minio:9000
S3 endpoint地址
hdfs.root.user
hdfs
如果存储类型为HDFS,需要配置拥有对应操作权限的用户
fs.defaultFS
hdfs://mycluster:8020
请求地址如果resource.storage.type=S3,该值类似为: s3a://dolphinscheduler。如果resource.storage.type=HDFS,如果hadoop配置了HA,需要复制core-site.xml和hdfs-site.xml文件到conf目录
hadoop.security.authentication.startup.state
false
hadoop是否开启kerberos权限
java.security.krb5.conf.path
/opt/krb5.conf
kerberos配置目录
login.user.keytab.username
hdfs-mycluster@ESZ.COM
kerberos登录用户
login.user.keytab.path
/opt/hdfs.headless.keytab
kerberos登录用户keytab
kerberos.expire.time
2
kerberos过期时间,整数,单位为小时
yarn.resourcemanager.ha.rm.ids
192.168.xx.xx,192.168.xx.xx
yarn resourcemanager地址,如果resourcemanager开启了HA,输入HA的IP地址(以逗号分隔),如果resourcemanager为单节点,该值为空即可
yarn.application.status.address
http://ds1:8088/ws/v1/cluster/apps/%s
如果resourcemanager开启了HA或者没有使用resourcemanager,保持默认值即可。如果resourcemanager为单节点,你需要将ds1配置为resourcemanager对应的hostname
development.state
false
是否处于开发模式
dolphin.scheduler.network.interface.preferred
NONE
将会被使用的网卡名称
dolphin.scheduler.network.interface.restrict
NONE
禁止使用的网卡名称
dolphin.scheduler.network.priority.strategy
default
ip获取策略 default优先获取内网
resource.manager.httpaddress.port
8088
resource manager的端口
yarn.job.history.status.address
http://ds1:19888/ws/v1/history/mapreduce/jobs/%s
yarn的作业历史状态URL
datasource.encryption.enable
false
是否启用datasource加密
datasource.encryption.salt
!@#$%^&*
datasource加密使用的salt
support.hive.oneSession
false
设置hive SQL是否在同一个session中执行
sudo.enable
true
是否开启sudo
zeppelin.rest.url
http://localhost:8080
zeppelin RESTful API 接口地址
appId.collect
log
收集applicationId方式,如果用aop方法,将配置log替换为aop,并将bin/env/dolphinscheduler_env.sh自动收集applicationId相关环境变量配置的注释取消掉


Api-server

相关配置


位置: api-server/conf/application.yaml

参数
默认值
描述
server.port
12345
api服务通讯端口
server.servlet.session.timeout
120m
session超时时间
server.servlet.context-path
/dolphinscheduler/
请求路径
spring.servlet.multipart.max-file-size
1024MB
最大上传文件大小
spring.servlet.multipart.max-request-size
1024MB
最大请求大小
server.jetty.max-http-post-size
5000000
jetty服务最大发送请求大小
spring.banner.charset
UTF-8
请求编码
spring.jackson.time-zone
UTC
设置时区
spring.jackson.date-format
"yyyy-MM-dd HH:mm:ss"
设置时间格式
spring.messages.basename
i18n/messages
i18n配置
security.authentication.type
PASSWORD
权限校验类型
security.authentication.ldap.user.admin
read-only-admin
LDAP登陆时,系统管理员账号
security.authentication.ldap.urls
ldap://ldap.forumsys.com:389/
LDAP urls
security.authentication.ldap.base.dn
dc=example,dc=com
LDAP base dn
security.authentication.ldap.username
cn=read-only-admin,dc=example,dc=com
LDAP账号
security.authentication.ldap.password
password
LDAP密码
security.authentication.ldap.user.identity-attribute
uid
LDAP用户身份标识字段名
security.authentication.ldap.user.email-attribute
mail
LDAP邮箱字段名
security.authentication.ldap.user.not-exist-action
CREATE
当通过LDAP登陆时用户不存在的操作,默认值是: CREATE,可选值:CREATE、DENY
security.authentication.ldap.ssl.enable
false
LDAP ssl开关
security.authentication.ldap.ssl.trust-store
ldapkeystore.jks
LDAP jks文件绝对路径
security.authentication.ldap.ssl.trust-store-password
password
LDAP jks密码
security.authentication.casdoor.user.admin

Casdoor登陆时,系统管理员账号
casdoor.endpoint

Casdoor服务器URL
casdoor.client-id

Casdoor中的ID
casdoor.client-secret

Casdoor中的密钥
casdoor.certificate

Casdoor中的证书
casdoor.organization-name

Casdoor中的组织名称
casdoor.application-name

Casdoor中的应用名称
casdoor.redirect-url

dolphinscheduler登录URL
api.traffic.control.global.switch
false
流量控制全局开关
api.traffic.control.max-global-qps-rate
300
全局最大请求数/秒
api.traffic.control.tenant-switch
false
流量控制租户开关
api.traffic.control.default-tenant-qps-rate
10
默认租户最大请求数/秒限制
api.traffic.control.customize-tenant-qps-rate

自定义租户最大请求数/秒限制


Master Server

相关配置


位置: master-server/conf/application.yaml

参数
默认值
描述
master.listen-port
5678
master监听端口
master.pre-exec-threads
10
master准备执行任务的数量,用于限制并行的command
master.exec-threads
100
master工作线程数量,用于限制并行的流程实例数量
master.dispatch-task-number
3
master每个批次的派发任务数量
master.worker-load-balancer-configuration-properties.type
DYNAMIC_WEIGHTED_ROUND_ROBIN
Master将会使用Worker的动态CPU/Memory/线程池使用率来计算Worker的负载,负载越低的worker将会有更高的机会被分发任务
master.max-heartbeat-interval
10s
master最大心跳间隔
master.task-commit-retry-times
5
任务重试次数
master.task-commit-interval
1000
任务提交间隔,单位为毫秒
master.state-wheel-interval
5
轮询检查状态时间
master.server-load-protection.enabled
true
是否开启系统保护策略
master.server-load-protection.max-system-cpu-usage-percentage-thresholds
0.7
master最大系统cpu使用值,只有当前系统cpu使用值低于最大系统cpu使用值,master服务才能调度任务。默认值为0.7: 会使用70%的操作系统CPU
master.server-load-protection.max-jvm-cpu-usage-percentage-thresholds
0.7
master最大JVM cpu使用值,只有当前JVM cpu使用值低于最大JVM cpu使用值,master服务才能调度任务。默认值为0.7: 会使用70%的JVM CPU
master.server-load-protection.max-system-memory-usage-percentage-thresholds
0.7
master最大系统内存使用值,只有当前系统内存使用值低于最大系统内存使用值,master服务才能调度任务。默认值为0.7: 会使用70%的操作系统内存
master.server-load-protection.max-disk-usage-percentage-thresholds
0.7
master最大系统磁盘使用值,只有当前系统磁盘使用值低于最大系统磁盘使用值,master服务才能调度任务。默认值为0.7: 会使用70%的操作系统磁盘空间
master.server-load-protection.max-concurrent-workflow-instances
2147483647
Master最大并发工作流实例数。当Master的工作流实例数达到或超过此值时,Master服务将被标记为繁忙
master.failover-interval
10
failover间隔,单位为分钟
master.kill-application-when-task-failover
true
当任务实例failover时,是否kill掉yarn或k8s application
master.master.worker-group-refresh-interval
10s
定期将workerGroup从数据库中同步到内存的时间间隔
master.command-fetch-strategy.type
ID_SLOT_BASED
Command拉取策略,目前仅支持 ID_SLOT_BASED
master.command-fetch-strategy.config.id-step
1
数据库中t_ds_command的id自增步长
master.command-fetch-strategy.config.fetch-size
10
master拉取command数量


Worker Server

相关配置


位置: worker-server/conf/application.yaml

参数
默认值
描述
worker.listen-port
1234
worker监听端口
worker.max-heartbeat-interval
10s
worker最大心跳间隔
worker.host-weight
100
派发任务时,worker主机的权重
worker.tenant-auto-create
true
租户对应于系统的用户,由worker提交作业。如果系统没有该用户,则在参数worker.tenant.auto.create为true后自动创建。
worker.server-load-protection.enabled
true
是否开启系统保护策略
worker.server-load-protection.max-system-cpu-usage-percentage-thresholds
0.8
worker最大系统cpu使用值,只有当前系统cpu使用值低于最大系统cpu使用值,worker服务才能接收任务。默认值为0.8: 会使用80%的操作系统CPU
worker.server-load-protection.max-jvm-cpu-usage-percentage-thresholds
0.8
worker最大JVM cpu使用值,只有当前JVM cpu使用值低于最大JVM cpu使用值,worker服务才能接收任务。默认值为0.8: 会使用80%的JVM CPU
worker.server-load-protection.max-system-memory-usage-percentage-thresholds
0.8
worker最大系统内存使用值,只有当前系统内存使用值低于最大系统内存使用值,worker服务才能接收任务。默认值为0.8: 会使用80%的操作系统内存
worker.server-load-protection.max-disk-usage-percentage-thresholds
0.8
worker最大系统磁盘使用值,只有当前系统磁盘使用值低于最大系统磁盘使用值,worker服务才能接收任务。默认值为0.8: 会使用80%的操作系统磁盘空间
worker.alert-listen-host
localhost
alert监听host
worker.alert-listen-port
50052
alert监听端口
worker.physical-task-config.task-executor-thread-size
100
Worker中任务最大并发度
worker.tenant-config.auto-create-tenant-enabled
true
租户对应于系统的用户,由worker提交作业。如果系统没有该用户,则在参数worker.tenant.auto.create为true后自动创建。
worker.tenant-config.default-tenant-enabled
false
如果设置为true,将会使用worker服务启动用户作为 default 租户。


Alert Server

相关配置


位置: alert-server/conf/application.yaml

参数
默认值
描述
server.port
50053
Alert Server监听端口
alert.port
50052
alert监听端口


Quartz相

关配置


这里面主要是 quartz 配置,请结合实际业务场景&资源进行配置,本文暂时不做展开,配置文件位置:

服务名称
配置文件
Master Server
master-server/conf/application.yaml
Api Server
api-server/conf/application.yaml

默认配置

参数
默认值
spring.quartz.properties.org.quartz.jobStore.isClustered
true
spring.quartz.properties.org.quartz.jobStore.class
org.quartz.impl.jdbcjobstore.JobStoreTX
spring.quartz.properties.org.quartz.scheduler.instanceId
AUTO
spring.quartz.properties.org.quartz.jobStore.tablePrefix
QRTZ_
spring.quartz.properties.org.quartz.jobStore.acquireTriggersWithinLock
true
spring.quartz.properties.org.quartz.scheduler.instanceName
DolphinScheduler
spring.quartz.properties.org.quartz.jobStore.useProperties
false
spring.quartz.properties.org.quartz.jobStore.misfireThreshold
60000
spring.quartz.properties.org.quartz.scheduler.makeSchedulerThreadDaemon
true
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass
org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval
5000

Quartz 线程池配置差异

Master Server 的 Quartz 线程池默认配置:

参数
默认值
spring.quartz.properties.org.quartz.threadPool.makeThreadsDaemons
true
spring.quartz.properties.org.quartz.threadPool.threadCount
25
spring.quartz.properties.org.quartz.threadPool.threadPriority
5
spring.quartz.properties.org.quartz.threadPool.class
org.quartz.simpl.SimpleThreadPool

Api Server 的 Quartz 线程池配置:

因为 Api Server 不会启动 Quartz Scheduler 实例,只会作为 Scheduler 客户端使用,因此它的 Quartz 线程池将会使用 QuartzZeroSizeThreadPool。QuartzZeroSizeThreadPool 不会启动任何线程。

参数
默认值
spring.quartz.properties.org.quartz.threadPool.class
org.apache.dolphinscheduler.scheduler.quartz.QuartzZeroSizeThreadPool


环境变

量配置


通过类似 shell 方式提交任务的的时候,会加载该配置文件中的环境变量到主机中。涉及到的 JAVA_HOME 任务类型的环境配置,其中任务类型主要有:Shell 任务、Python 任务、Spark 任务、Flink 任务、Datax 任务等等。

17677810987976c87499d9c8401af2be732fb60493661

日志相

关配置


服务名称
配置文件
Master Server
master-server/conf/logback-spring.xml
Api Server
api-server/conf/logback-spring.xml
Worker Server
worker-server/conf/logback-spring.xml
Alert Server


1767780235005b8f9061239481d8e
1767780235436930f8814bdeb3f43
1767780235005b8f9061239481d8e

1767780236190793b0af496dea826



用户案例



深圳某智能制造企业天翼云
Zoom网易邮箱 每日互动
惠生工程 作业帮 博世智驾
蔚来汽车 长城汽车集度
长安汽车思科网讯食行生鲜
联通医疗联想新网银行
唯品富邦消费金融 自如
有赞伊利当贝大数据
珍岛集团传智教育Bigo
YY直播 拈花云科太美医疗
Cisco Webex兴业证券


1767780236190793b0af496dea826



迁移实战



Azkaban Ooize(当贝迁移案例)
airflow (有赞迁移案例)
Air2phin(迁移工具)
Airflow迁移实践

1767780236190793b0af496dea826



发版消息




Apache DolphinScheduler 3.2.2版本正式发布!
Apache DolphinScheduler 3.2.1 版本发布:增强功能与安全性的全面升级
Apache DolphinScheduler 3.3.0 Alpha发布,功能增强与性能优化大升级!


1767780236190793b0af496dea826



加入社区



关注社区的方式有很多:

  • GitHub: https://github.com/apache/dolphinscheduler
  • 官网:https://dolphinscheduler.apache.org/en-us
  • 订阅开发者邮件:dev@dolphinscheduler@apache.org(向邮箱发送任意内容,收到邮件后回复同意订阅即可)
  • X.com:@DolphinSchedule
  • YouTube:https://www.youtube.com/@apachedolphinscheduler
  • Slack:https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-1cmrxsio1-nJHxRJa44jfkrNL_Nsy9Qg

同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。

非代码方式包括:

完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。

‍代码方式包括:

查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3A%22first+time+contributor%22

优先级问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3Apriority%3Ahigh

如何参与贡献链接https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2/%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97_menu/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E_menu

如果你❤️小海豚,就来为我点亮Star吧!

https://github.com/apache/dolphinscheduler

1767780237753f33ce91bb9eaa4af


1767780238220b6464bafe7d1de40

你的好友秀秀子拍了拍你

并请你帮她点一下“分享”