本文章经授权转载

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. Javabean使用实例

    1.login.jsp <%@ page language="java" contentType="text/html; charset=utf-8" p ...

  2. 网络编程之socket套接字

    目录 socket套接字简介 socket模块 通信循环 代码优化 连接循环 半连接池 黏包问题 解决黏包问题 黏包问题特殊情况(文件过大) socket套接字简介 由于操作OSI七层是所有C/S架构 ...

  3. Kubernetes Job Controller 原理和源码分析(二)

    概述程序入口Job controller 的创建Controller 对象NewController()podControlEventHandlerJob AddFunc DeleteFuncJob ...

  4. django框架6

    内容概要 神奇的双下划线查询 外键字段的创建 外键字段操作 多表查询 基于对象的跨表查询 基于双下划线的跨表查询 双下线查询扩展 如何查看SQL语句 内容详情 神奇的双下划线查询 1.查询年龄大于20 ...

  5. 使用Group By子句的时候,一定要记住下面的一些规则

    使用Group By子句的时候,一定要记住下面的一些规则:(1)不能Group By非标量基元类型的列,如不能Group By text,image或bit类型的列(2)Select指定的每一列都应该 ...

  6. .NET 处理[未能为 SSLTLS 安全通道建立信任关系]问题

    更新记录 2022年4月16日本文迁移自Panda666原博客,原发布时间:2021年7月16日. 在.NET的开发过程中,发现[基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系]问题 ...

  7. 【由浅入深_打牢基础】HOST头攻击

    [由浅入深_打牢基础]HOST头攻击 前几天一直准备别的事情,然后用了2/3天时间去挖了补天某厂的SRC,还是太菜了,最后提交了一个低危(还没出结果,还有点敏感信息泄露,感觉略鸡肋也没交),不过偶然发 ...

  8. 为什么新的5G标准将为技术栈带来更低的 TCO

    ​ 摘要 新5G标准和边缘计算对低延迟的要求,给那些试图将一堆不同组件组装成一个不会出现故障且仍具有低延迟的高成本效益应用程序公司带来了严峻的挑战.事实上,这个问题非常严重,以至于需要重新考虑架构. ...

  9. python小题目练习(十一)

    题目:大乐透号码生成器 需求:使用Random模块模拟大乐透号码生成器,选号规则为:前区在1 ~ 35的范围内随机产生不重复 的5个号码,后区在1~ 12的范围内随机产生不重复的2个号码.效果如图8. ...

  10. Lua5.4源码剖析:二. 详解String数据结构及操作算法

    概述 lua字符串通过操作算法和内存管理,有以下优点: 节省内存. 字符串比较效率高.(比较哈希值) 问题: 相同的字符串共享同一份内存么? 相同的长字符串一定不共享同一份内存么? lua字符串如何管 ...