前言

本文档为dolphinscheduler配置文件说明文档,针对版本为 dolphinscheduler-1.3.x 版本.

目录结构

目前dolphinscheduler 所有的配置文件都在 [conf ] 目录中. 为了更直观的了解[conf]目录所在的位置以及包含的配置文件,请查看下面dolphinscheduler安装目录的简化说明. 本文主要讲述dolphinscheduler的配置文件.其他部分先不做赘述.

[注:以下 dolphinscheduler 简称为DS.]

  1. ├─bin DS命令存放目录
  2. ├─dolphinscheduler-daemon.sh 启动/关闭DS服务脚本
  3. ├─start-all.sh 根据配置文件启动所有DS服务
  4. ├─stop-all.sh 根据配置文件关闭所有DS服务
  5. ├─conf 配置文件目录
  6. ├─application-api.properties api服务配置文件
  7. ├─datasource.properties 数据库配置文件
  8. ├─zookeeper.properties zookeeper配置文件
  9. ├─master.properties master服务配置文件
  10. ├─worker.properties worker服务配置文件
  11. ├─quartz.properties quartz服务配置文件
  12. ├─common.properties 公共服务[存储]配置文件
  13. ├─alert.properties alert服务配置文件
  14. ├─config 环境变量配置文件夹
  15. ├─install_config.conf DS环境变量配置脚本[用于DS安装/启动]
  16. ├─env 运行脚本环境变量配置目录
  17. ├─dolphinscheduler_env.sh 运行脚本加载环境变量配置文件[如: JAVA_HOME,HADOOP_HOME, HIVE_HOME ...]
  18. ├─org mybatis mapper文件目录
  19. ├─i18n i18n配置文件目录
  20. ├─logback-api.xml api服务日志配置文件
  21. ├─logback-master.xml master服务日志配置文件
  22. ├─logback-worker.xml worker服务日志配置文件
  23. ├─logback-alert.xml alert服务日志配置文件
  24. ├─sql DS的元数据创建升级sql文件
  25. ├─create 创建SQL脚本目录
  26. ├─upgrade 升级SQL脚本目录
  27. ├─dolphinscheduler-postgre.sql postgre数据库初始化脚本
  28. ├─dolphinscheduler_mysql.sql mysql数据库初始化脚本
  29. ├─soft_version 当前DS版本标识文件
  30. ├─script DS服务部署,数据库创建/升级脚本目录
  31. ├─create-dolphinscheduler.sh DS数据库初始化脚本
  32. ├─upgrade-dolphinscheduler.sh DS数据库升级脚本
  33. ├─monitor-server.sh DS服务监控启动脚本
  34. ├─scp-hosts.sh 安装文件传输脚本
  35. ├─remove-zk-node.sh 清理zookeeper缓存文件脚本
  36. ├─ui 前端WEB资源目录
  37. ├─lib DS依赖的jar存放目录
  38. ├─install.sh 自动安装DS服务脚本

配置文件详解

序号服务分类配置文件
1启动/关闭DS服务脚本dolphinscheduler-daemon.sh
2数据库连接配置datasource.properties
3zookeeper连接配置zookeeper.properties
4公共[存储]配置common.properties
5API服务配置application-api.properties
6Master服务配置master.properties
7Worker服务配置worker.properties
8Alert 服务配置alert.properties
9Quartz配置quartz.properties
10DS环境变量配置脚本[用于DS安装/启动]install_config.conf
11运行脚本加载环境变量配置文件
[如: JAVA_HOME,HADOOP_HOME, HIVE_HOME …]
dolphinscheduler_env.sh
12各服务日志配置文件api服务日志配置文件 : logback-api.xml
master服务日志配置文件 : logback-master.xml
worker服务日志配置文件 : logback-worker.xml
alert服务日志配置文件 : logback-alert.xml

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

dolphinscheduler-daemon.sh脚本负责DS的启动&关闭. start-all.sh/stop-all.sh最终也是通过dolphinscheduler-daemon.sh对集群进行启动/关闭操作. 目前DS只是做了一个基本的设置,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” , DS使用Netty进行通讯,设置该参数,可能会导致内存泄漏.

2.datasource.properties [数据库连接]

在DS中使用Druid对数据库连接进行管理,默认简化配置如下.

参数默认值描述
spring.datasource.driver-class-name数据库驱动
spring.datasource.url数据库连接地址
spring.datasource.username数据库用户名
spring.datasource.password数据库密码
spring.datasource.initialSize5初始连接池数量
spring.datasource.minIdle5最小连接池数量
spring.datasource.maxActive5最大连接池数量
spring.datasource.maxWait60000最大等待时长
spring.datasource.timeBetweenEvictionRunsMillis60000连接检测周期
spring.datasource.timeBetweenConnectErrorMillis60000重试间隔
spring.datasource.minEvictableIdleTimeMillis300000连接保持空闲而不被驱逐的最小时间
spring.datasource.validationQuerySELECT 1检测连接是否有效的sql
spring.datasource.validationQueryTimeout3检测连接是否有效的超时时间[seconds]
spring.datasource.testWhileIdletrue申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
spring.datasource.testOnBorrowtrue申请连接时执行validationQuery检测连接是否有效
spring.datasource.testOnReturnfalse归还连接时执行validationQuery检测连接是否有效
spring.datasource.defaultAutoCommittrue是否开启自动提交
spring.datasource.keepAlivetrue连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。
spring.datasource.poolPreparedStatementstrue开启PSCache
spring.datasource.maxPoolPreparedStatementPerConnectionSize20要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。

3.zookeeper.properties [zookeeper连接配置]

参数默认值描述
zookeeper.quorumlocalhost:2181zk集群连接信息
zookeeper.dolphinscheduler.root/dolphinschedulerDS在zookeeper存储根目录
zookeeper.session.timeout60000session 超时
zookeeper.connection.timeout30000连接超时
zookeeper.retry.base.sleep100基本重试时间差
zookeeper.retry.max.sleep30000最大重试时间
zookeeper.retry.maxtime10最大重试次数

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

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

参数默认值描述
resource.storage.typeNONE资源文件存储类型: HDFS,S3,NONE
resource.upload.path/dolphinscheduler资源文件存储路径
data.basedir.path/tmp/dolphinscheduler本地工作目录,用于存放临时文件
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
resource.view.suffixstxt,log,sh,conf,cfg,py,java,sql,hql,xml,properties资源中心支持的文件格式
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目录
fs.s3a.endpoints3 endpoint地址
fs.s3a.access.keys3 access key
fs.s3a.secret.keys3 secret key
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是否处于开发模式
kerberos.expire.time7kerberos过期时间 [小时]

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

参数默认值描述
server.port12345api服务通讯端口
server.servlet.session.timeout7200session超时时间
server.servlet.context-path/dolphinscheduler请求路径
spring.servlet.multipart.max-file-size1024MB最大上传文件大小
spring.servlet.multipart.max-request-size1024MB最大请求大小
server.jetty.max-http-post-size5000000jetty服务最大发送请求大小
spring.messages.encodingUTF-8请求编码
spring.jackson.time-zoneGMT+8设置时区
spring.messages.basenamei18n/messagesi18n配置
security.authentication.typePASSWORD权限校验类型

6.master.properties [Master服务配置]

参数默认值描述
master.listen.port5678master通讯端口
master.exec.threads100工作线程数量
master.exec.task.num20并行任务数量
master.dispatch.task.num3分发任务数量
master.heartbeat.interval10心跳间隔
master.task.commit.retryTimes5任务重试次数
master.task.commit.interval1000任务提交间隔
master.max.cpuload.avg-1cpu小于该配置时,master 服务才能工作.默认值为-1 : cpu cores * 2
master.reserved.memory0.3内存阈值限制,可用内存大于该值,master 服务才能工作.

7.worker.properties [Worker服务配置]

参数默认值描述
worker.listen.port1234worker通讯端口
worker.exec.threads100工作线程数量
worker.heartbeat.interval10心跳间隔
worker.max.cpuload.avg-1cpu小于该配置时,worker 服务才能工作. 默认值为-1 : cpu cores * 2
worker.reserved.memory0.3内存阈值限制,可用内存大于该值,worker 服务才能工作.
worker.groupdefaultworkgroup分组配置.
worker启动时会根据该配置自动加入对应的分组.

8.alert.properties [Alert 告警服务配置]

参数默认值描述
alert.typeEMAIL告警类型
mail.protocolSMTP邮件服务器协议
mail.server.hostxxx.xxx.com邮件服务器地址
mail.server.port25邮件服务器端口
mail.senderxxx@xxx.com发送人邮箱
mail.userxxx@xxx.com发送人邮箱名称
mail.passwd111111发送人邮箱密码
mail.smtp.starttls.enabletrue邮箱是否开启tls
mail.smtp.ssl.enablefalse邮箱是否开启ssl
mail.smtp.ssl.trustxxx.xxx.com邮箱ssl白名单
xls.file.path/tmp/xls邮箱附件临时工作目录
以下为企业微信配置[选填]
enterprise.wechat.enablefalse企业微信是否启用
enterprise.wechat.corp.idxxxxxxx
enterprise.wechat.secretxxxxxxx
enterprise.wechat.agent.idxxxxxxx
enterprise.wechat.usersxxxxxxx
enterprise.wechat.token.urlhttps://qyapi.weixin.qq.com/cgi-bin/gettoken?
corpid=corpId&corpsecret=secret
enterprise.wechat.push.urlhttps://qyapi.weixin.qq.com/cgi-bin/message/send?
access_token=$token
enterprise.wechat.user.send.msg发送消息格式
enterprise.wechat.team.send.msg群发消息格式
plugin.dir/Users/xx/your/path/to/plugin/dir插件目录

9.quartz.properties [Quartz配置]

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

参数默认值描述
org.quartz.jobStore.driverDelegateClassorg.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.driverDelegateClassorg.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.scheduler.instanceNameDolphinScheduler
org.quartz.scheduler.instanceIdAUTO
org.quartz.scheduler.makeSchedulerThreadDaemontrue
org.quartz.jobStore.usePropertiesfalse
org.quartz.threadPool.classorg.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.makeThreadsDaemonstrue
org.quartz.threadPool.threadCount25
org.quartz.threadPool.threadPriority5
org.quartz.jobStore.classorg.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.tablePrefixQRTZ_
org.quartz.jobStore.isClusteredtrue
org.quartz.jobStore.misfireThreshold60000
org.quartz.jobStore.clusterCheckinInterval5000
org.quartz.jobStore.acquireTriggersWithinLocktrue
org.quartz.jobStore.dataSourcemyDs
org.quartz.dataSource.myDs.connectionProvider.classorg.apache.dolphinscheduler.service.quartz.DruidConnectionProvider

10.install_config.conf [DS环境变量配置脚本[用于DS安装/启动]]

install_config.conf这个配置文件比较繁琐,这个文件主要有两个地方会用到.

  • 1.DS集群的自动安装.

调用install.sh脚本会自动加载该文件中的配置.并根据该文件中的内容自动配置上述的配置文件中的内容. 比如:dolphinscheduler-daemon.sh、datasource.properties、zookeeper.properties、common.properties、application-api.properties、master.properties、worker.properties、alert.properties、quartz.properties 等文件.

  • 2.DS集群的启动&关闭.

DS集群在启动&关闭的时候,会加载该配置文件中的masters,workers,alertServer,apiServers等参数,启动/关闭DS集群.

文件内容如下:

  1. # 注意: 该配置文件中如果包含特殊字符,如: `.*[]^${}\+?|()@#&`, 请转义,
  2. # 示例: `[` 转义为 `\[`
  3. # 数据库类型, 目前仅支持 postgresql 或者 mysql
  4. dbtype="mysql"
  5. # 数据库 地址 & 端口
  6. dbhost="192.168.xx.xx:3306"
  7. # 数据库 名称
  8. dbname="dolphinscheduler"
  9. # 数据库 用户名
  10. username="xx"
  11. # 数据库 密码
  12. password="xx"
  13. # Zookeeper地址
  14. zkQuorum="192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181"
  15. # 将DS安装到哪个目录,如: /data1_1T/dolphinscheduler,
  16. installPath="/data1_1T/dolphinscheduler"
  17. # 使用哪个用户部署
  18. # 注意: 部署用户需要sudo 权限, 并且可以操作 hdfs .
  19. # 如果使用hdfs的话,根目录必须使用该用户进行创建.否则会有权限相关的问题.
  20. deployUser="dolphinscheduler"
  21. # 以下为告警服务配置
  22. # 邮件服务器地址
  23. mailServerHost="smtp.exmail.qq.com"
  24. # 邮件服务器 端口
  25. mailServerPort="25"
  26. # 发送者
  27. mailSender="xxxxxxxxxx"
  28. # 发送用户
  29. mailUser="xxxxxxxxxx"
  30. # 邮箱密码
  31. mailPassword="xxxxxxxxxx"
  32. # TLS协议的邮箱设置为true,否则设置为false
  33. starttlsEnable="true"
  34. # 开启SSL协议的邮箱配置为true,否则为false。注意: starttlsEnable和sslEnable不能同时为true
  35. sslEnable="false"
  36. # 邮件服务地址值,同 mailServerHost
  37. sslTrust="smtp.exmail.qq.com"
  38. #业务用到的比如sql等资源文件上传到哪里,可以设置:HDFS,S3,NONE。如果想上传到HDFS,请配置为HDFS;如果不需要资源上传功能请选择NONE。
  39. resourceStorageType="NONE"
  40. # if S3,write S3 address,HA,for example :s3a://dolphinscheduler,
  41. # Note,s3 be sure to create the root directory /dolphinscheduler
  42. defaultFS="hdfs://mycluster:8020"
  43. # 如果resourceStorageType 为S3 需要配置的参数如下:
  44. s3Endpoint="http://192.168.xx.xx:9010"
  45. s3AccessKey="xxxxxxxxxx"
  46. s3SecretKey="xxxxxxxxxx"
  47. # 如果ResourceManager是HA,则配置为ResourceManager节点的主备ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx",否则如果是单ResourceManager或者根本没用到yarn,请配置yarnHaIps=""即可,如果没用到yarn,配置为""
  48. yarnHaIps="192.168.xx.xx,192.168.xx.xx"
  49. # 如果是单ResourceManager,则配置为ResourceManager节点ip或主机名,否则保持默认值即可。
  50. singleYarnIp="yarnIp1"
  51. # 资源文件在 HDFS/S3 存储路径
  52. resourceUploadPath="/dolphinscheduler"
  53. # HDFS/S3 操作用户
  54. hdfsRootUser="hdfs"
  55. # 以下为 kerberos 配置
  56. # kerberos是否开启
  57. kerberosStartUp="false"
  58. # kdc krb5 config file path
  59. krb5ConfPath="$installPath/conf/krb5.conf"
  60. # keytab username
  61. keytabUserName="hdfs-mycluster@ESZ.COM"
  62. # username keytab path
  63. keytabPath="$installPath/conf/hdfs.headless.keytab"
  64. # api 服务端口
  65. apiServerPort="12345"
  66. # 部署DS的所有主机hostname
  67. ips="ds1,ds2,ds3,ds4,ds5"
  68. # ssh 端口 , 默认 22
  69. sshPort="22"
  70. # 部署master服务主机
  71. masters="ds1,ds2"
  72. # 部署 worker服务的主机
  73. # 注意: 每一个worker都需要设置一个worker 分组的名称,默认值为 "default"
  74. workers="ds1:default,ds2:default,ds3:default,ds4:default,ds5:default"
  75. # 部署alert服务主机
  76. alertServer="ds3"
  77. # 部署api服务主机
  78. apiServers="ds1"

11.dolphinscheduler_env.sh [环境变量配置]

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

  1. export HADOOP_HOME=/opt/soft/hadoop
  2. export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop
  3. export SPARK_HOME1=/opt/soft/spark1
  4. export SPARK_HOME2=/opt/soft/spark2
  5. export PYTHON_HOME=/opt/soft/python
  6. export JAVA_HOME=/opt/soft/java
  7. export HIVE_HOME=/opt/soft/hive
  8. export FLINK_HOME=/opt/soft/flink
  9. export DATAX_HOME=/opt/soft/datax/bin/datax.py
  10. export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$DATAX_HOME:$PATH

12.各服务日志配置文件

对应服务服务名称日志文件名
api服务日志配置文件logback-api.xml
master服务日志配置文件logback-master.xml
worker服务日志配置文件logback-worker.xml
alert服务日志配置文件logback-alert.xml