本文章经授权转载

1

组件介绍

Apache Dolphin Scheduler是一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。

官网

https://dolphinscheduler.apache.org/en-us/

github

https://github.com/apache/incubator-dolphinscheduler

2

ds-1.2.0 目录解读

(讲解配置文件的作用,具体配置在install.sh部署文件中完成)

  • bin 启动脚本

  • conf 配置文件

  • lib ds依赖的jar包

  • script 数据库创建升级脚本,部署分发脚本

  • sql ds的元数据创建升级sql文件

  • install.sh 部署ds主要的配置文件修改处

bin

bin目录下比较重要的是dolphinscheduler-daemon文件,之前版本中极容易出现的找不到jdk问题来源,当前版本的jdk已经export了本机的$JAVA_HOME,再也不用担心找不到jdk了。

conf

非常重要的配置文件目录!

非常重要的配置文件目录!

非常重要的配置文件目录!

  • env目录下的.dolphinscheduller_env.sh文件中记录了所有跟ds-task相关的环境变量,1.2.0版本的Spark不具备指定Spark版本的功能,可以注释掉SPARK_HOME1或者将SPARK_HOME1和SPARK_HOME2均配置为集群中的Spark2。下面给出CDH中的配置,测试环境中没有部署Flink,请忽略Flink的配置。

(特别注意这个隐藏文件,需要ls -al)

export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop
export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop
#可以注释掉,也可以配置为SPARK_HOME2
#export SPARK_HOME1=/opt/cloudera/parcels/SPARK2/lib/spark2
export SPARK_HOME2=/opt/cloudera/parcels/SPARK2/lib/spark2
export PYTHON_HOME=/usr/local/anaconda3/bin/python
export JAVA_HOME=/usr/java/jdk1.8.0_131
export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive
export FLINK_HOME=/opt/soft/flink
export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$PATH

common目录

  • common.properies

    • ds的task队列实现方式,默认是zookeeper

    • ds的task和资源的worker执行路径

    • 资源中心

      • 资源中心可选择HDFS,S3和服务器本地存储

    • 资源文件类型

    • kerberos

    • 开发状态

      • 开发测试可以开启,生产环境建议设置为false

    • ds的环境变量配置,本地调试的时候,需要保证dolphinscheduler.env.path存在

  • hadoop.properties

    • hdfs namenode配置

      • 单点可以直接写namenode的ip

      • hdfsHA需要将集群的core-site.xml和hdfs-site.xml文件拷贝到ds的conf目录下

    • s3配置

    • yarn resourcemanager配置

      • yarn.application.status.address - yarn单点

      • yarn.resourcemanager.ha.rm.ids - yarn HA

config目录

  • install_config.conf

    • ds的安装路径

    • 部署用户

    • 部署ds的机器组ip

  • run_config.conf

    • 指定masters,workers,alertServer,apiServer部署在哪些机器上

alert.properties

  • 邮件告警配置

  • excel下载目录

  • 企业微信配置

application-api.properties

  • apiserver端口,上下文,日志等

application-dao.properties

敲黑板,重点!!!ds的元数据库配置,在ds-1.2.0中默认的数据库是pg,如果要使用mysql,需要将mysql的jdbc包放到lib目录下。

  • ds元数据库配置

master.properties

  • master执行线程数

  • master并行任务上限

  • master资源CPU和内存阈值,超出阈值不会进行dag切分

worker.properties

  • worker执行线程数

  • worker一次提交任务数

  • worker资源CPU和内存阈值,超出不会去task队列拉取task

zookeeper.properties

  • zk集群

  • ds所需zk的znode,包含dag和task的分布式锁和master和worker的容错

quartz.properties

ds的定时由quartz框架完成,特别注意里边有quartz的数据库配置!!!

  • quartz的基本属性,线程池和job配置

  • quartz元数据库配置

3

install.sh详解

install.sh部署脚本是ds部署中的重头戏,下面将参数分组进行分析。

数据库配置

# for example postgresql or mysql ...
dbtype="postgresql" # db config
# db address and port
dbhost="192.168.xx.xx:5432" # db name
dbname="dolphinscheduler" # db username
username="xx" # db passwprd
# Note: if there are special characters, please use the \ transfer character to transfer
passowrd="xx"
  • dbtype参数可以设置postgresql和mysql,这里指定了ds连接元数据库的jdbc相关信息

部署用户&目录

# conf/config/install_config.conf config
# Note: the installation path is not the same as the current path (pwd)
installPath="/data1_1T/dolphinscheduler" # deployment user
# Note: the deployment user needs to have sudo privileges and permissions to operate hdfs. If hdfs is enabled, the root directory needs to be created by itself
deployUser="dolphinscheduler"
  • installPath是安装路径,在执行install.sh之后,会把ds安装到指定目录,如/opt/ds-agent。installPath不要和当前要一键安装的install.sh是同一目录。

  • deployUser是指ds的部署用户,该用户需要在部署ds的机器上打通sudo免密,并且需要具有操作hdfs的权限,建议挂到hadoop的supergroup组下。

zk集群&角色指定

  • 配置zk集群的时候,特别注意:要用ip:2181的方式配置上去,一定要把端口带上。

  • ds一共包括master worker alert api四种角色,其中alert api只需指定一台机器即可,master和worker可以部署多态机器。下面的例子就是在4台机器中,部署2台master,2台worker,1台alert,1台api

  • ips参数,配置所有需要部署机器的hostname

  • masters,配置部署master机器的hostname

  • workers,配置部署worker机器的hostname

  • alertServer,配置部署alert机器的hostname

  • apiServers,配置部署api机器的hostname

    (前提在部署机器上已经设置好hostname)

  • zkroot参数可以通过调整,在一套zk集群中,配置开发测试和生产环境ds集群,如配置zkRoot="/dspro",zkRoot="/dstest"

# zk cluster
zkQuorum="192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181" # install hosts
# Note: install the scheduled hostname list. If it is pseudo-distributed, just write a pseudo-distributed hostname
ips="ark0,ark1,ark2,ark3" # conf/config/run_config.conf config
# run master machine
# Note: list of hosts hostname for deploying master
masters="ark0,ark1" # run worker machine
# note: list of machine hostnames for deploying workers
workers="ark2,ark3" # run alert machine
# note: list of machine hostnames for deploying alert server
alertServer="ark3" # run api machine
# note: list of machine hostnames for deploying api server
apiServers="ark1" # zk config
# zk root directory
zkRoot="/dolphinscheduler" # used to record the zk directory of the hanging machine
zkDeadServers="$zkRoot/dead-servers" # masters directory
zkMasters="$zkRoot/masters" # workers directory
zkWorkers="$zkRoot/workers" # zk master distributed lock
mastersLock="$zkRoot/lock/masters" # zk worker distributed lock
workersLock="$zkRoot/lock/workers" # zk master fault-tolerant distributed lock
mastersFailover="$zkRoot/lock/failover/masters" # zk worker fault-tolerant distributed lock
workersFailover="$zkRoot/lock/failover/workers" # zk master start fault tolerant distributed lock
mastersStartupFailover="$zkRoot/lock/failover/startup-masters" # zk session timeout
zkSessionTimeout="300" # zk connection timeout
zkConnectionTimeout="300" # zk retry interval
zkRetrySleep="100" # zk retry maximum number of times
zkRetryMaxtime="5"

邮件配置&excel文件路径

  • 邮件配置建议clone ds的代码,跑一下alert.MailUtilisTest这个测试类,下面给出QQ邮箱配置方式。如果是内网邮箱,需要注意的是ssl是否需要关闭,以及mail.user登陆用户是否需要去掉邮箱后缀。

  • excel路径则需要保证该路径的写入权限

#QQ邮箱配置
# alert config
# mail protocol
mailProtocol="SMTP" # mail server host
mailServerHost="smtp.qq.com" # mail server port
mailServerPort="465" # sender
mailSender="783xx8369@qq.com" # user
mailUser="783xx8369@qq.com" # sender password
mailPassword="邮箱授权码" # TLS mail protocol support
starttlsEnable="false" sslTrust="smtp.qq.com" # SSL mail protocol support
# note: The SSL protocol is enabled by default.
# only one of TLS and SSL can be in the true state.
sslEnable="true" # download excel path
xlsFilePath="/tmp/xls" # alert port
alertPort=7789

apiServer配置

  • 需要注意端口和上下文即apiServerPort和apiServerContextPath参数

# api config
# api server port
apiServerPort="12345" # api session timeout
apiServerSessionTimeout="7200" # api server context path
apiServerContextPath="/dolphinscheduler/" # spring max file size
springMaxFileSize="1024MB" # spring max request size
springMaxRequestSize="1024MB" # api max http post size
apiMaxHttpPostSize="5000000"

资源中心&YARN

  • ds的资源中心支持HDFS和S3.

  • resUploadStartupType="HDFS"则开启hdfs作为资源中心。

  • defaultFS,如果hdfs没有配置HA则需要在这里写上单点namenode的ip,如果HDFS是HA则需要将集群的core-site.xml文件和hdfs-site.xml文件拷贝到conf目录下

  • yarnHaIps,如果yarn启用了HA,配置两个resourcemanager的ip,如果是单点,配置空字符串

  • singleYarnIp,配置resourcemanager的ip,在yarn单点情况下

  • hdfsPath,HDFS上ds存储资源的根路径,可采用默认值,如果是从1.1.0版本进行升级,需要注意这个地方,改为/escheduler

# resource Center upload and select storage method:HDFS,S3,NONE
resUploadStartupType="NONE" # if resUploadStartupType is HDFS,defaultFS write namenode address,HA you need to put core-site.xml and hdfs-site.xml in the conf directory.
# if S3,write S3 address,HA,for example :s3a://dolphinscheduler,
# Note,s3 be sure to create the root directory /dolphinscheduler
defaultFS="hdfs://mycluster:8020" # if S3 is configured, the following configuration is required.
s3Endpoint="http://192.168.xx.xx:9010"
s3AccessKey="xxxxxxxxxx"
s3SecretKey="xxxxxxxxxx" # resourcemanager HA configuration, if it is a single resourcemanager, here is yarnHaIps=""
yarnHaIps="192.168.xx.xx,192.168.xx.xx" # if it is a single resourcemanager, you only need to configure one host name. If it is resourcemanager HA, the default configuration is fine.
singleYarnIp="ark1" # hdfs root path, the owner of the root path must be the deployment user.
# versions prior to 1.1.0 do not automatically create the hdfs root directory, you need to create it yourself.
hdfsPath="/dolphinscheduler" # have users who create directory permissions under hdfs root path /
# Note: if kerberos is enabled, hdfsRootUser="" can be used directly.
hdfsRootUser="hdfs"

开发状态

  • devState在测试环境部署的时候可以调为true,生产环境部署建议调为false

# development status, if true, for the SHELL script, you can view the encapsulated SHELL script in the execPath directory.
# If it is false, execute the direct delete
devState="true"

角色参数

  • 角色参数主要调整application.properties配置文件,涉及master,worker和apiserver

  • apiServerPort可以自定义修改apiserver的端口,注意需要跟前端保持一致。

  • master和worker的参数,初次部署建议保持默认值,如果在运行当中出现性能问题在作调整,有条件可以压一下自身环境中的master和worker的最佳线程数。

  • worker.reserved.memory是worker的内存阈值,masterReservedMemory是master的内存阈值,建议调整为0.1

  • masterMaxCpuLoadAvg建议注释掉,ds-1.2.0master和worker的CPU负载给出了默认cpu线程数 * 2的默认值

# master config
# master execution thread maximum number, maximum parallelism of process instance
masterExecThreads="100" # the maximum number of master task execution threads, the maximum degree of parallelism for each process instance
masterExecTaskNum="20" # master heartbeat interval
masterHeartbeatInterval="10" # master task submission retries
masterTaskCommitRetryTimes="5" # master task submission retry interval
masterTaskCommitInterval="100" # master maximum cpu average load, used to determine whether the master has execution capability
#masterMaxCpuLoadAvg="10" # master reserve memory to determine if the master has execution capability
masterReservedMemory="1" # master port
masterPort=5566 # worker config
# worker execution thread
workerExecThreads="100" # worker heartbeat interval
workerHeartbeatInterval="10" # worker number of fetch tasks
workerFetchTaskNum="3" # worker reserve memory to determine if the master has execution capability
workerReservedMemory="1" # master port
workerPort=7788

特别注意

  • ds需要启用资源中心之后,才可以创建租户,因此资源中心的配置一定要正确

  • ds老版本部署需要配置JDK的问题已经解决

  • installPath不要和当前要一键安装的install.sh是同一目录,installPath不要部署在home目录下!!!

  • ds的task运行都依赖env目录下的环境变量文件,需要正确配置

  • HDFS高可用,需要把core-site.xml和hdfs-site.xml文件拷贝到conf目录下

  • 邮件配置中mailUser和mailSender的区别

欢迎试用Dolphin Scheduler!!!

Dolphin Scheduler 1.2.0 部署参数分析的更多相关文章

  1. Dolphin Scheduler 1.1.0升级1.2.0避坑指南

    本文章经授权转载 组件介绍 Apache Dolphin Scheduler是一个分布式易扩展的可视化DAG工作流任务调度系统.致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开 ...

  2. 如何在CDH5上部署Dolphin Scheduler 1.3.1

    点击蓝色字关注! 本篇文章大概8440字,阅读时间大约20分钟 本文记录了在CDH5.16.2集群上集成Dolphin Scheduler 1.3.1的详细流程,特别注意一下MySQL数据库的连接串! ...

  3. Solr4.8.0源码分析(24)之SolrCloud的Recovery策略(五)

    Solr4.8.0源码分析(24)之SolrCloud的Recovery策略(五) 题记:关于SolrCloud的Recovery策略已经写了四篇了,这篇应该是系统介绍Recovery策略的最后一篇了 ...

  4. 开源分布式工作流任务调度系统Easy Scheduler Release 1.0.2发布

    Easy Scheduler Release 1.0.2===Easy Scheduler 1.0.2是1.x系列中的第三个版本.此版本增加了调度开放接口.worker分组(指定任务运行的机器组).任 ...

  5. 使用Docker快速部署ELK分析Nginx日志实践

    原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...

  6. external-provisioner源码分析(3)-组件启动参数分析

    更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 external-provisioner源码分析(3)-组件启动参数分析 本文将对extern ...

  7. ceph-csi组件源码分析(1)-组件介绍与部署yaml分析

    更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi组件源码分析(1)-组件介绍与部署yaml分析 基于tag v3.0.0 ht ...

  8. ceph-csi源码分析(2)-组件启动参数分析

    更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi源码分析(2)-组件启动参数分析 ceph-csi组件的源码分析分为五部分: ...

  9. Apache Dolphin Scheduler - Dockerfile 详解

    Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统.简称 DS,包括 Web 及若干服务,它依赖 PostgreSQL 和 Zookeep ...

随机推荐

  1. 一个恢复CSI挂载信息的解决方法

    一个恢复CSI挂载信息的解决方法 问题描述 之前有做过一个华为OBS 的CSI插件,其基本运作原理如下图所示.CSI插件Pod挂载了主机的/var/lib/kubelet/pods目录,当创建挂载Pv ...

  2. .Net分表分库动态化处理

    介绍 本期主角:ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本.零业务代码入侵 背景 最近有个小伙伴来问我,分表下他有一批数据,这个 ...

  3. Linux 中递归删除文件

    递归删除当前目录下以 .json 结尾的文件 find . -name "*.json" | xargs rm -f find . -name "*.json" ...

  4. 『忘了再学』Shell基础 — 25、扩展正则表达式

    目录 1.扩展正则表达式说明 2.练习 (1)+和?练习 (2)|和()练习 3.注意(重点) 1.扩展正则表达式说明 熟悉正则表达式的童鞋应该很疑惑,在其他的语言中是没有扩展正则表达式说法的,在Sh ...

  5. Eureka高可用集群搭建

    就是搭建Eureka的集群. 每个Eureka Server需要相互注册,确保数据一致. 我这里准备两个Eureka Server  他两的POM文件配置是一样的 <dependencies&g ...

  6. CVPR2022 | A ConvNet for the 2020s & 如何设计神经网络总结

    前言 本文深入探讨了如何设计神经网络.如何使得训练神经网络具有更加优异的效果,以及思考网络设计的物理意义. 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结.最新技术跟踪.经典论文解读.CV招聘 ...

  7. 聊聊C#中的composite模式

    写在前面 Composite组合模式属于设计模式中比较热门的一个,相信大家对它一定不像对访问者模式那么陌生,毕竟谁又没有遇到过树形结构呢.不过所谓温故而知新,我们还是从一个例子出发,起底一下这个模式吧 ...

  8. Mybatis架构原理(二)-二级缓存源码剖析

    Mybatis架构原理(二)-二级缓存源码剖析 二级缓存构建在一级缓存之上,在收到查询请求时,Mybatis首先会查询二级缓存,若二级缓存没有命中,再去查询一级缓存,一级缓存没有,在查询数据库; 二级 ...

  9. JS中通过id或者class获取文本内容

    一.JS通过id获取文本内容 二.JS通过class获取文本内容

  10. shell 同时执行多任务下载视频

    本文为博主原创,转载请注明出处: shell 脚本不支持多线程,但我们需要用shell 脚本同时跑多个任务时怎么让这些任务并发同时进行,可以采用在每个任务 后面 添加一个  & ,让其在后台运 ...