前言

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

目录结构

DolphinScheduler的目录结构如下:

  1. ├── LICENSE
  2. ├── NOTICE
  3. ├── licenses licenses存放目录
  4. ├── bin DolphinScheduler命令和环境变量配置存放目录
  5. ├── dolphinscheduler-daemon.sh 启动/关闭DolphinScheduler服务脚本
  6. ├── env 环境变量配置存放目录
  7. ├── dolphinscheduler_env.sh 当使用`dolphinscheduler-daemon.sh`脚本起停服务时,运行此脚本加载环境变量配置文件 [如:JAVA_HOME,HADOOP_HOME, HIVE_HOME ...]
  8. └── install_env.sh 当使用`install.sh` `start-all.sh` `stop-all.sh` `status-all.sh`脚本时,运行此脚本为DolphinScheduler安装加载环境变量配置
  9. ├── install.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本自动安装服务
  10. ├── remove-zk-node.sh 清理zookeeper缓存文件脚本
  11. ├── scp-hosts.sh 安装文件传输脚本
  12. ├── start-all.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本启动所有服务
  13. ├── status-all.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本获取所有服务状态
  14. └── stop-all.sh 当使用`集群`模式或`伪集群`模式部署DolphinScheduler时,运行此脚本终止所有服务
  15. ├── alert-server DolphinScheduler alert-server命令、配置和依赖存放目录
  16. ├── bin
  17. └── start.sh DolphinScheduler alert-server启动脚本
  18. ├── conf
  19. ├── application.yaml alert-server配置文件
  20. ├── common.properties 公共服务(存储等信息)配置文件
  21. ├── dolphinscheduler_env.sh alert-server环境变量配置加载脚本
  22. └── logback-spring.xml alert-service日志配置文件
  23. └── libs alert-server依赖jar包存放目录
  24. ├── api-server DolphinScheduler api-server命令、配置和依赖存放目录
  25. ├── bin
  26. └── start.sh DolphinScheduler api-server启动脚本
  27. ├── conf
  28. ├── application.yaml api-server配置文件
  29. ├── common.properties 公共服务(存储等信息)配置文件
  30. ├── dolphinscheduler_env.sh api-server环境变量配置加载脚本
  31. └── logback-spring.xml api-service日志配置文件
  32. ├── libs api-server依赖jar包存放目录
  33. └── ui api-server相关前端WEB资源存放目录
  34. ├── master-server DolphinScheduler master-server命令、配置和依赖存放目录
  35. ├── bin
  36. └── start.sh DolphinScheduler master-server启动脚本
  37. ├── conf
  38. ├── application.yaml master-server配置文件
  39. ├── common.properties 公共服务(存储等信息)配置文件
  40. ├── dolphinscheduler_env.sh master-server环境变量配置加载脚本
  41. └── logback-spring.xml master-service日志配置文件
  42. └── libs master-server依赖jar包存放目录
  43. ├── standalone-server DolphinScheduler standalone-server命令、配置和依赖存放目录
  44. ├── bin
  45. └── start.sh DolphinScheduler standalone-server启动脚本
  46. ├── conf
  47. ├── application.yaml standalone-server配置文件
  48. ├── common.properties 公共服务(存储等信息)配置文件
  49. ├── dolphinscheduler_env.sh standalone-server环境变量配置加载脚本
  50. ├── logback-spring.xml standalone-service日志配置文件
  51. └── sql DolphinScheduler元数据创建/升级sql文件
  52. ├── libs standalone-server依赖jar包存放目录
  53. └── ui standalone-server相关前端WEB资源存放目录
  54. ├── tools DolphinScheduler元数据工具命令、配置和依赖存放目录
  55. ├── bin
  56. └── upgrade-schema.sh DolphinScheduler元数据创建/升级脚本
  57. ├── conf
  58. ├── application.yaml 元数据工具配置文件
  59. └── common.properties 公共服务(存储等信息)配置文件
  60. ├── libs 元数据工具依赖jar包存放目录
  61. └── sql DolphinScheduler元数据创建/升级sql文件
  62. ├── worker-server DolphinScheduler worker-server命令、配置和依赖存放目录
  63. ├── bin
  64. └── start.sh DolphinScheduler worker-server启动脚本
  65. ├── conf
  66. ├── application.yaml worker-server配置文件
  67. ├── common.properties 公共服务(存储等信息)配置文件
  68. ├── dolphinscheduler_env.sh worker-server环境变量配置加载脚本
  69. └── logback-spring.xml worker-service日志配置文件
  70. └── libs worker-server依赖jar包存放目录
  71. └── ui 前端WEB资源目录

配置文件详解

dolphinscheduler-daemon.sh [启动/关闭DolphinScheduler服务脚本]

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

默认简化参数如下:

  1. export DOLPHINSCHEDULER_OPTS="
  2. -server
  3. -Xmx16g
  4. -Xms1g
  5. -Xss512k
  6. -XX:+UseConcMarkSweepGC
  7. -XX:+CMSParallelRemarkEnabled
  8. -XX:+UseFastAccessorMethods
  9. -XX:+UseCMSInitiatingOccupancyOnly
  10. -XX:CMSInitiatingOccupancyFraction=70
  11. "

不建议设置”-XX:DisableExplicitGC” , DolphinScheduler使用Netty进行通讯,设置该参数,可能会导致内存泄漏.

数据库连接相关配置

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

服务名称配置文件
Master Servermaster-server/conf/application.yaml
Api Serverapi-server/conf/application.yaml
Worker Serverworker-server/conf/application.yaml
Alert Serveralert-server/conf/application.yaml

默认配置如下:

参数默认值描述
spring.datasource.driver-class-nameorg.postgresql.Driver数据库驱动
spring.datasource.urljdbc:postgresql://127.0.0.1:5432/dolphinscheduler数据库连接地址
spring.datasource.usernameroot数据库用户名
spring.datasource.passwordroot数据库密码
spring.datasource.hikari.connection-test-queryselect 1检测连接是否有效的sql
spring.datasource.hikari.minimum-idle5最小空闲连接池数量
spring.datasource.hikari.auto-committrue是否自动提交
spring.datasource.hikari.pool-nameDolphinScheduler连接池名称
spring.datasource.hikari.maximum-pool-size50连接池最大连接数
spring.datasource.hikari.connection-timeout30000连接超时时长
spring.datasource.hikari.idle-timeout600000空闲连接存活最大时间
spring.datasource.hikari.leak-detection-threshold0连接泄露检测阈值
spring.datasource.hikari.initialization-fail-timeout1连接池初始化失败timeout

DolphinScheduler同样可以通过bin/env/dolphinscheduler_env.sh进行数据库连接相关的配置。

Zookeeper相关配置

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

服务名称配置文件
Master Servermaster-server/conf/application.yaml
Api Serverapi-server/conf/application.yaml
Worker Serverworker-server/conf/application.yaml

默认配置如下:

参数默认值描述
registry.zookeeper.namespacedolphinschedulerZookeeper集群使用的namespace
registry.zookeeper.connect-stringlocalhost:2181Zookeeper集群连接信息
registry.zookeeper.retry-policy.base-sleep-time60ms基本重试时间差
registry.zookeeper.retry-policy.max-sleep300ms最大重试时间
registry.zookeeper.retry-policy.max-retries5最大重试次数
registry.zookeeper.session-timeout30ssession超时时间
registry.zookeeper.connection-timeout30s连接超时时间
registry.zookeeper.block-until-connected600ms阻塞直到连接成功的等待时间
registry.zookeeper.digest{用户名:密码}如果zookeeper打开了acl,则需要填写认证信息访问znode,认证信息格式为{用户名}:{密码}。关于Zookeeper ACL详见https://zookeeper.apache.org/doc/r3.4.14/zookeeperAdmin.html

DolphinScheduler同样可以通过bin/env/dolphinscheduler_env.sh进行Zookeeper相关的配置。

4.common.properties [hadoop、s3、yarn配置]

common.properties配置文件目前主要是配置hadoop/s3a相关的配置.

参数默认值描述
data.basedir.path/tmp/dolphinscheduler本地工作目录,用于存放临时文件
resource.storage.typeNONE资源文件存储类型: HDFS,S3,NONE
resource.storage.upload.base.path/dolphinscheduler资源文件存储路径
resource.aws.access.key.idminioadminS3 access key
resource.aws.secret.access.keyminioadminS3 secret access key
resource.aws.regionus-east-1S3 区域
resource.aws.s3.bucket.namedolphinschedulerS3 存储桶名称
resource.aws.s3.endpointhttp://minio:9000s3 endpoint地址
resource.hdfs.root.userhdfs如果存储类型为HDFS,需要配置拥有对应操作权限的用户
resource.hdfs.fs.defaultFShdfs://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.statefalsehadoop是否开启kerberos权限
java.security.krb5.conf.path/opt/krb5.confkerberos配置目录
login.user.keytab.usernamehdfs-mycluster@ESZ.COMkerberos登录用户
login.user.keytab.path/opt/hdfs.headless.keytabkerberos登录用户keytab
kerberos.expire.time2kerberos过期时间,整数,单位为小时
yarn.resourcemanager.ha.rm.idsyarn resourcemanager 地址, 如果resourcemanager开启了HA, 输入HA的IP地址(以逗号分隔),如果resourcemanager为单节点, 该值为空即可
yarn.application.status.addresshttp://ds1:8088/ws/v1/cluster/apps/%s如果resourcemanager开启了HA或者没有使用resourcemanager,保持默认值即可. 如果resourcemanager为单节点,你需要将ds1 配置为resourcemanager对应的hostname
dolphinscheduler.env.pathenv/dolphinscheduler_env.sh运行脚本加载环境变量配置文件[如: JAVA_HOME,HADOOP_HOME, HIVE_HOME …]
development.statefalse是否处于开发模式
task.resource.limit.statefalse是否启用资源限制模式

5.application-api.properties [API服务配置]

参数默认值描述
data.basedir.path/tmp/dolphinscheduler本地工作目录,用于存放临时文件
resource.storage.typeNONE资源文件存储类型: HDFS,S3,NONE
resource.upload.path/dolphinscheduler资源文件存储路径
aws.access.key.idminioadminS3 access key
aws.secret.access.keyminioadminS3 secret access key
aws.regionus-east-1S3 区域
aws.s3.endpointhttp://minio:9000S3 endpoint地址
hdfs.root.userhdfs如果存储类型为HDFS,需要配置拥有对应操作权限的用户
fs.defaultFShdfs://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.statefalsehadoop是否开启kerberos权限
java.security.krb5.conf.path/opt/krb5.confkerberos配置目录
login.user.keytab.usernamehdfs-mycluster@ESZ.COMkerberos登录用户
login.user.keytab.path/opt/hdfs.headless.keytabkerberos登录用户keytab
kerberos.expire.time2kerberos过期时间,整数,单位为小时
yarn.resourcemanager.ha.rm.ids192.168.xx.xx,192.168.xx.xxyarn resourcemanager 地址, 如果resourcemanager开启了HA, 输入HA的IP地址(以逗号分隔),如果resourcemanager为单节点, 该值为空即可
yarn.application.status.addresshttp://ds1:8088/ws/v1/cluster/apps/%s如果resourcemanager开启了HA或者没有使用resourcemanager,保持默认值即可. 如果resourcemanager为单节点,你需要将ds1 配置为resourcemanager对应的hostname
development.statefalse是否处于开发模式
dolphin.scheduler.network.interface.preferredNONE网卡名称
dolphin.scheduler.network.priority.strategydefaultip获取策略 default优先获取内网
resource.manager.httpaddress.port8088resource manager的端口
yarn.job.history.status.addresshttp://ds1:19888/ws/v1/history/mapreduce/jobs/%syarn的作业历史状态URL
datasource.encryption.enablefalse是否启用datasource 加密
datasource.encryption.salt!@#$%^&*datasource加密使用的salt
data-quality.jar.namedolphinscheduler-data-quality-dev-SNAPSHOT.jar配置数据质量使用的jar包
support.hive.oneSessionfalse设置hive SQL是否在同一个session中执行
sudo.enabletrue是否开启sudo
alert.rpc.port50052Alert Server的RPC端口
zeppelin.rest.urlhttp://localhost:8080zeppelin RESTful API 接口地址

Api-server相关配置

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

参数默认值描述
server.port12345api服务通讯端口
server.servlet.session.timeout120msession超时时间
server.servlet.context-path/dolphinscheduler/请求路径
spring.servlet.multipart.max-file-size1024MB最大上传文件大小
spring.servlet.multipart.max-request-size1024MB最大请求大小
server.jetty.max-http-post-size5000000jetty服务最大发送请求大小
spring.banner.charsetUTF-8请求编码
spring.jackson.time-zoneUTC设置时区
spring.jackson.date-format“yyyy-MM-dd HH:mm:ss”设置时间格式
spring.messages.basenamei18n/messagesi18n配置
security.authentication.typePASSWORD权限校验类型
security.authentication.ldap.user.adminread-only-adminLDAP登陆时,系统管理员账号
security.authentication.ldap.urlsldap://ldap.forumsys.com:389/LDAP urls
security.authentication.ldap.base.dndc=example,dc=comLDAP base dn
security.authentication.ldap.usernamecn=read-only-admin,dc=example,dc=comLDAP账号
security.authentication.ldap.passwordpasswordLDAP密码
security.authentication.ldap.user.identity.attributeuidLDAP用户身份标识字段名
security.authentication.ldap.user.email.attributemailLDAP邮箱字段名
traffic.control.global.switchfalse流量控制全局开关
traffic.control.max-global-qps-rate300全局最大请求数/秒
traffic.control.tenant-switchfalse流量控制租户开关
traffic.control.default-tenant-qps-rate10默认租户最大请求数/秒限制
traffic.control.customize-tenant-qps-rate自定义租户最大请求数/秒限制

Master Server相关配置

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

参数默认值描述
master.listen-port5678master监听端口
master.fetch-command-num10master拉取command数量
master.pre-exec-threads10master准备执行任务的数量,用于限制并行的command
master.exec-threads100master工作线程数量,用于限制并行的流程实例数量
master.dispatch-task-number3master每个批次的派发任务数量
master.host-selectorlower_weightmaster host选择器,用于选择合适的worker执行任务,可选值: random, round_robin, lower_weight
master.heartbeat-interval10master心跳间隔,单位为秒
master.task-commit-retry-times5任务重试次数
master.task-commit-interval1000任务提交间隔,单位为毫秒
master.state-wheel-interval5轮询检查状态时间
master.max-cpu-load-avg-1master最大cpuload均值,只有高于系统cpuload均值时,master服务才能调度任务. 默认值为-1: cpu cores * 2
master.reserved-memory0.3master预留内存,只有低于系统可用内存时,master服务才能调度任务,单位为G
master.failover-interval10failover间隔,单位为分钟
master.kill-yarn-job-when-task-failovertrue当任务实例failover时,是否kill掉yarn job

Worker Server相关配置

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

参数默认值描述
worker.listen-port1234worker监听端口
worker.exec-threads100worker工作线程数量,用于限制并行的任务实例数量
worker.heartbeat-interval10worker心跳间隔,单位为秒
worker.host-weight100派发任务时,worker主机的权重
worker.tenant-auto-createtrue租户对应于系统的用户,由worker提交作业.如果系统没有该用户,则在参数worker.tenant.auto.create为true后自动创建。
worker.max-cpu-load-avg-1worker最大cpuload均值,只有高于系统cpuload均值时,worker服务才能被派发任务. 默认值为-1: cpu cores * 2
worker.reserved-memory0.3worker预留内存,只有低于系统可用内存时,worker服务才能被派发任务,单位为G
worker.groupsdefaultworker分组配置,逗号分隔,例如’worker.groups=default,test’
worker启动时会根据该配置自动加入对应的分组
worker.alert-listen-hostlocalhostalert监听host
worker.alert-listen-port50052alert监听端口

Alert Server相关配置

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

参数默认值描述
server.port50053Alert Server监听端口
alert.port50052alert监听端口

Quartz相关配置

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

服务名称配置文件
Master Servermaster-server/conf/application.yaml
Api Serverapi-server/conf/application.yaml

默认配置如下:

参数默认值
spring.quartz.properties.org.quartz.threadPool.threadPriority5
spring.quartz.properties.org.quartz.jobStore.isClusteredtrue
spring.quartz.properties.org.quartz.jobStore.classorg.quartz.impl.jdbcjobstore.JobStoreTX
spring.quartz.properties.org.quartz.scheduler.instanceIdAUTO
spring.quartz.properties.org.quartz.jobStore.tablePrefixQRTZ_
spring.quartz.properties.org.quartz.jobStore.acquireTriggersWithinLocktrue
spring.quartz.properties.org.quartz.scheduler.instanceNameDolphinScheduler
spring.quartz.properties.org.quartz.threadPool.classorg.quartz.simpl.SimpleThreadPool
spring.quartz.properties.org.quartz.jobStore.usePropertiesfalse
spring.quartz.properties.org.quartz.threadPool.makeThreadsDaemonstrue
spring.quartz.properties.org.quartz.threadPool.threadCount25
spring.quartz.properties.org.quartz.jobStore.misfireThreshold60000
spring.quartz.properties.org.quartz.scheduler.makeSchedulerThreadDaemontrue
spring.quartz.properties.org.quartz.jobStore.driverDelegateClassorg.quartz.impl.jdbcjobstore.PostgreSQLDelegate
spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval5000

dolphinscheduler_env.sh [环境变量配置]

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

  1. # JAVA_HOME, will use it to start DolphinScheduler server
  2. export JAVA_HOME=${JAVA_HOME:-/opt/soft/java}
  3. # Database related configuration, set database type, username and password
  4. export DATABASE=${DATABASE:-postgresql}
  5. export SPRING_PROFILES_ACTIVE=${DATABASE}
  6. export SPRING_DATASOURCE_URL
  7. export SPRING_DATASOURCE_USERNAME
  8. export SPRING_DATASOURCE_PASSWORD
  9. # DolphinScheduler server related configuration
  10. export SPRING_CACHE_TYPE=${SPRING_CACHE_TYPE:-none}
  11. export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-UTC}
  12. export MASTER_FETCH_COMMAND_NUM=${MASTER_FETCH_COMMAND_NUM:-10}
  13. # Registry center configuration, determines the type and link of the registry center
  14. export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper}
  15. export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-localhost:2181}
  16. # Tasks related configurations, need to change the configuration if you use the related tasks.
  17. export HADOOP_HOME=${HADOOP_HOME:-/opt/soft/hadoop}
  18. export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/opt/soft/hadoop/etc/hadoop}
  19. export SPARK_HOME1=${SPARK_HOME1:-/opt/soft/spark1}
  20. export SPARK_HOME2=${SPARK_HOME2:-/opt/soft/spark2}
  21. export PYTHON_HOME=${PYTHON_HOME:-/opt/soft/python}
  22. export HIVE_HOME=${HIVE_HOME:-/opt/soft/hive}
  23. export FLINK_HOME=${FLINK_HOME:-/opt/soft/flink}
  24. export DATAX_HOME=${DATAX_HOME:-/opt/soft/datax}
  25. export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$PATH

日志相关配置

服务名称配置文件
Master Servermaster-server/conf/logback-spring.xml
Api Serverapi-server/conf/logback-spring.xml
Worker Serverworker-server/conf/logback-spring.xml
Alert Serveralert-server/conf/logback-spring.xml