一、概述

Apache DolphinScheduler(简称DolphinScheduler)是一种开源的、分布式的、易于运用的大数据工作流调度体系。它旨在为大数据处理供给一个牢靠、高效和可扩展的调度解决方案。

DolphinScheduler具有以下特色和功用:

  • 分布式架构:DolphinScheduler选用了分布式架构,能够在大规划集群上运转,完成高并发的使命调度和履行。

  • 多种使命类型:支撑多种类型的使命,包括Shell使命、Spark使命、Hadoop使命、SQL使命等,能够满意各种大数据处理需求。

  • 可视化工作流修正器:供给了直观易用的工作流修正器,能够经过图形界面进行工作流的创立、修正和调度办理,无需编写杂乱的代码。

  • 丰厚的调度战略:支撑灵敏的调度战略,能够依据使命依靠联系、优先级、资源需求等进行调度和办理。

  • 使命监控和告警:供给了实时的使命监控和告警功用,能够及时了解使命的履行情况和异常情况,并采取相应的措施进行处理。

  • 安全和权限办理:支撑用户认证和授权,能够对使命和资源进行细粒度的权限办理,确保体系的安全性和数据的隐私性。

  • 扩展性和集成性:DolphinScheduler供给了丰厚的扩展接口和插件机制,能够方便地集成到现有的大数据生态体系中,并支撑自界说插件开发。

总归,Apache DolphinScheduler是一个功用强大的大数据工作流调度体系,能够协助用户完成高效、牢靠的大数据处理使命调度和办理。它是开源社区的项目,用户能够依据自己的需求进行定制和扩展,并参与社区一起贡献和开展。

  • 官网:dolphinscheduler.apache.org/zh-cn
  • GitHub:github.com/apache/dolp…

二、Apache DolphinScheduler 与 Azkaban 比照

Apache DolphinSchedulerAzkaban 都是开源的大数据工作流调度体系,用于办理和调度大数据处理使命。它们具有一些类似的特色,但也有一些差异。

类似之处:

  • 工作流调度:两者都供给了工作流调度功用,能够界说使命之间的依靠联系,依照指定的调度战略和优先级来履行使命。

  • 可视化修正器:两者都供给了可视化的工作流修正器,能够经过图形界面创立、修正和办理工作流,减少了对杂乱的脚本编写的依靠。

  • 多使命类型支撑:两者都支撑多种类型的使命,如Shell使命、Hadoop使命、Spark使命等,能够满意各种大数据处理需求。

  • 调度监控和告警:两者都供给了使命的监控和告警功用,能够实时检查使命的履行状况,并及时通知用户履行成果或异常情况。

差异之处:

  • 架构规划DolphinScheduler 选用分布式架构,能够在大规划集群上运转,支撑高并发的使命调度和履行。而 Azkaban 选用集中式架构,适用于中小规划的集群。

  • 扩展性和集成性DolphinScheduler 供给了丰厚的扩展接口和插件机制,能够方便地与其他大数据生态体系进行集成,并支撑自界说插件开发。Azkaban 在扩展性和集成性方面相对较弱。

  • 权限办理DolphinScheduler 支撑用户认证和授权,能够对使命和资源进行细粒度的权限办理。Azkaban 也支撑权限办理,但在细粒度控制方面较弱。

  • 社区开展和支撑:DolphinScheduler是一个新兴的开源项目,社区活跃度逐步增加,但相对于Azkaban来说,社区支撑和文档资源相对较少。

挑选运用 Apache DolphinScheduler 仍是 Azkaban 取决于详细的需求和情况。假如您需要一个高可扩展性和灵敏性的调度体系,并且希望与其他大数据生态体系进行深度集成,DolphinScheduler 或许是一个不错的挑选。假如您的集群规划较小,并且对权限办理的要求不是很高,同时希望运用一个经过长时间开展和广泛运用的调度体系,Azkaban 或许更适合您的需求。

三、DolphinScheduler 架构规划

Apache DolphinScheduler(海豚调度系统)介绍与环境部署

启动流程活动图

Apache DolphinScheduler(海豚调度系统)介绍与环境部署
架构说明

  • MasterServerMasterServer 选用分布式无中心规划理念,MasterServer 首要担任 DAG 使命切分、使命提交监控,并同时监听其它 MasterServerWorkerServer 的健康状况。 MasterServer 服务启动时向 Zookeeper 注册临时节点,经过监听Zookeeper临时节点变化来进行容错处理。 MasterServer基于netty供给监听服务。

    该服务内首要包含:

    • DistributedQuartz分布式调度组件,首要担任守时使命的启停操作,当quartz调起使命后,Master内部会有线程池详细担任处理使命的后续操作;

    • MasterSchedulerService是一个扫描线程,守时扫描数据库中的t_ds_command表,依据不同的命令类型进行不同的业务操作;

    • WorkflowExecuteRunnable首要是担任DAG使命切分、使命提交监控、各种不同事情类型的逻辑处理;

    • TaskExecuteRunnable首要担任使命的处理和耐久化,并生成使命事情提交到工作流的事情行列;

    • EventExecuteService首要担任工作流实例的事情行列的轮询;

    • StateWheelExecuteThread首要担任工作流和使命超时、使命重试、使命依靠的轮询,并生成对应的工作流或使命事情提交到工作流的事情行列;

    • FailoverExecuteThread首要担任Master容错和Worker容错的相关逻辑;

  • WorkerServerWorkerServer也选用分布式无中心规划理念,WorkerServer首要担任使命的履行和供给日志服务。 WorkerServer服务启动时向Zookeeper注册临时节点,并维持心跳。 WorkerServer基于netty供给监听服务。

    该服务包含:

    • WorkerManagerThread首要担任使命行列的提交,不断从使命行列中领取使命,提交到线程池处理;

    • TaskExecuteThread首要担任使命履行的流程,依据不同的使命类型进行使命的实践处理;

    • RetryReportTaskStatusThread首要担任守时轮询向Master汇报使命的状况,直到Master回复状况的ack,避免使命状况丢失;

  • ZooKeeperZooKeeper服务,体系中的MasterServerWorkerServer节点都经过ZooKeeper来进行集群办理和容错。别的体系还基于ZooKeeper进行事情监听和分布式锁。 我们也曾经基于Redis完成过行列,不过我们希望DolphinScheduler依靠到的组件尽量地少,所以最后仍是去掉了Redis完成。

  • AlertServer:供给告警服务,经过告警插件的方法完成丰厚的告警手法。

  • ApiServer:API接口层,首要担任处理前端UI层的恳求。该服务一致供给RESTful api向外部供给恳求服务。

  • UI:体系的前端页面,供给体系的各种可视化操作界面。

这儿只是摘录了官方文档部分内容,更多内容能够参考官方文档:dolphinscheduler.apache.org/zh-cn/docs/…

四、环境布置

1)环境信息

IP 主机名 人物
192.168.182.110 local-168-182-110 master-server、api-server、alert-server、ZK、MySQL
192.168.182.111 local-168-182-111 master-server、worker-server
192.168.182.112 local-168-182-112 worker-server

2)装置 JDK

官网下载:www.oracle.com/java/techno…

百度云下载

链接:pan.baidu.com/s/1-rgW-Z-s… 提取码:8888

# 修正/etc/profile,文末刺进以下内容:
# set java
export JAVA_HOME=/opt/apache/jdk1.8.0_212
export PATH=$JAVA_HOME/bin:$PATH

3)装置 MySQL 数据库

这儿挑选docker快速布置的方法:经过 docker-compose 快速布置 MySQL保姆级教程

1、布置 docker

# 装置yum-config-manager装备东西
yum -y install yum-utils
# 建议运用阿里云yum源:(引荐)
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 装置docker-ce版别
yum install -y docker-ce
# 启动并开机启动
systemctl enable --now docker
docker --version

2、布置 docker-compose

curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

3、装置 git

yum -y install git

3、开始布置

git clone https://gitee.com/hadoop-bigdata/docker-compose-mysql.git
cd docker-compose-mysql
# create network
docker network create hadoop-network
# 布置
docker-compose -f docker-compose.yaml up -d
# 检查
docker-compose -f docker-compose.yaml ps
# 登录mysql
mysql -uroot -p
# 输入暗码:123456
# 创立数据库
create database dolphinscheduler character set utf8 ;  
CREATE USER 'dolphinscheduler'@'%'IDENTIFIED BY 'dolphinscheduler@123';
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%';
FLUSH PRIVILEGES;

4)装置注册中心 Zookeeper

这儿挑选docker快速布置的方法:【中间件】经过 docker-compose 快速布置 Zookeeper 保姆级教程

git clone https://gitee.com/hadoop-bigdata/docker-compose-zookeeper.git
cd docker-compose-zookeeper
# 布置
docker-compose -f docker-compose.yaml up -d
# 检查
docker-compose -f docker-compose.yaml ps

5)下载 dolphinscheduler 装置包

wget https://dlcdn.apache.org/dolphinscheduler/3.1.7/apache-dolphinscheduler-3.1.7-bin.tar.gz --no-check-certificate
# 解压
tar -xvzf apache-dolphinscheduler-*-bin.tar.gz

留意: DolphinScheduler 自身不依靠 Hadoop、Hive、Spark,但假如你运转的使命需要依靠他们,就需要有对应的环境支撑。

6)修正装备

1、修正 install_env.sh 文件

文件 install_env.sh 描绘了哪些机器将被装置 DolphinScheduler 以及每台机器对应装置哪些服务

bin/env/install_env.sh

装备

# ---------------------------------------------------------
# INSTALL MACHINE
# ---------------------------------------------------------
# 需要装备master、worker、API server,地点服务器的IP均为机器IP或许localhost
# 假如是装备hostname的话,需要确保机器间能够经过hostname相互链接
# 如下图所示,布置 DolphinScheduler 机器的 hostname 为 ds1,ds2,ds3,ds4,ds5,其间 ds1,ds2 装置 master 服务,ds3,ds4,ds5装置 worker 服务,alert server装置在ds4中,api server 装置在ds5中
# ips="ds1,ds2,ds3,ds4,ds5"
ips="192.168.182.110,192.168.182.111,192.168.182.112"
# masters="ds1,ds2"
masters="192.168.182.110,192.168.182.111"
# workers="ds3:default,ds4:default,ds5:default"
workers="192.168.182.111:default,192.168.182.112:default"
# alertServer="ds4"
alertServer="192.168.182.110"
# apiServers="ds5"
apiServers="192.168.182.110"

2、修正 dolphinscheduler_env.sh 文件

文件 ./bin/env/dolphinscheduler_env.sh 描绘了下列装备:

  • DolphinScheduler数据库装备,详细装备方法见初始化数据库
  • 一些使命类型外部依靠路径或库文件,如 JAVA_HOMESPARK_HOME都是在这儿界说的
  • 注册中心 zookeeper
  • 服务端相关装备,比方缓存,时区设置等。

假如您不运用某些使命类型,您能够忽略使命外部依靠项,但您有必要依据您的环境更改 JAVA_HOME、注册中心和数据库相关装备。

# JAVA_HOME, will use it to start DolphinScheduler server
# export JAVA_HOME=${JAVA_HOME:-/opt/soft/java}
export JAVA_HOME=/opt/apache/jdk1.8.0_212
# Database related configuration, set database type, username and password
# export DATABASE=${DATABASE:-postgresql}
export DATABASE=${DATABASE:-mysql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
# export SPRING_DATASOURCE_URL="jdbc:postgresql://127.0.0.1:5432/dolphinscheduler"
export SPRING_DATASOURCE_URL="jdbc:mysql://192.168.182.110:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
# export SPRING_DATASOURCE_USERNAME={user}
export SPRING_DATASOURCE_USERNAME=dolphinscheduler
# export SPRING_DATASOURCE_PASSWORD={password}
export SPRING_DATASOURCE_PASSWORD=dolphinscheduler@123
# DolphinScheduler server related configuration
export SPRING_CACHE_TYPE=${SPRING_CACHE_TYPE:-none}
export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-UTC}
export MASTER_FETCH_COMMAND_NUM=${MASTER_FETCH_COMMAND_NUM:-10}
# Registry center configuration, determines the type and link of the registry center
export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper}
# export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-localhost:2181}
export REGISTRY_ZOOKEEPER_CONNECT_STRING="192.168.182.110:31181,192.168.182.110:32181,192.168.182.110:33181"
# Tasks related configurations, need to change the configuration if you use the related tasks.
export HADOOP_HOME=${HADOOP_HOME:-/opt/soft/hadoop}
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/opt/soft/hadoop/etc/hadoop}
export SPARK_HOME1=${SPARK_HOME1:-/opt/soft/spark1}
export SPARK_HOME2=${SPARK_HOME2:-/opt/soft/spark2}
export PYTHON_HOME=${PYTHON_HOME:-/opt/soft/python}
export HIVE_HOME=${HIVE_HOME:-/opt/soft/hive}
export FLINK_HOME=${FLINK_HOME:-/opt/soft/flink}
export DATAX_HOME=${DATAX_HOME:-/opt/soft/datax}
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

3、下载MySQL驱动包

wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar
mv mysql-connector-java-8.0.16.jar tools/libs/
cp tools/libs/mysql-connector-java-8.0.16.jar master-server/libs/
cp tools/libs/mysql-connector-java-8.0.16.jar worker-server/libs/
cp tools/libs/mysql-connector-java-8.0.16.jar alert-server/libs/
cp tools/libs/mysql-connector-java-8.0.16.jar api-server/libs/

【留意】除了将 mysql-connector-java-8.0.16.jar 驱动放到以上的libs文件夹后,还需要将mysql-connector-java-8.0.16.jar 驱动放到tools目录下的libs目录一份。

7)将装备copy其它节点

scp -r /opt/apache/dolphinscheduler local-168-182-111:/opt/apache/
scp -r /opt/apache/dolphinscheduler local-168-182-112:/opt/apache/

8)初始化数据库

bash tools/bin/upgrade-schema.sh

9)启动服务

由于机器资源有限,这儿调整一下jvm内存

# master-server/bin/start.sh
# api-server/bin/start.sh
# alert-server/bin/start.sh
# ./worker-server/bin/start.sh

依据规划,分别在不同机器上启动对应的服务

IP 主机名 人物
192.168.182.110 local-168-182-110 master-server、api-server、alert-server、ZK、MySQL
192.168.182.111 local-168-182-111 master-server、worker-server
192.168.182.112 local-168-182-112 worker-server
# 启停 Master
bash ./bin/dolphinscheduler-daemon.sh start master-server
# 检查日志
tail -f master-server/logs/dolphinscheduler-master.log
# bash ./bin/dolphinscheduler-daemon.sh stop master-server
# 启停 Api
bash ./bin/dolphinscheduler-daemon.sh start api-server
# 检查日志
tail -f api-server/logs/dolphinscheduler-api.log
# bash ./bin/dolphinscheduler-daemon.sh stop api-server
# 启停 Alert
bash ./bin/dolphinscheduler-daemon.sh start alert-server
# 检查日志
tail -f alert-server/logs/dolphinscheduler-alert.log
# bash ./bin/dolphinscheduler-daemon.sh stop alert-server
# 启停 Worker
bash ./bin/dolphinscheduler-daemon.sh start worker-server
# 检查日志
tail -f worker-server/logs/dolphinscheduler-worker.log
# bash ./bin/dolphinscheduler-daemon.sh stop worker-server

10)web 地址拜访

# http://<your_ip>:12345/dolphinscheduler/ui/login
http://192.168.182.110:12345/dolphinscheduler/ui/login

默认账户暗码:admin/dolphinscheduler123

Apache DolphinScheduler(海豚调度系统)介绍与环境部署
Apache DolphinScheduler(海豚调度体系)介绍与环境布置 就到这儿了,有任何疑问环境给我留言或私信,可重视我大众号:大数据与云原生技能分享,加群交流或私信交流~

Apache DolphinScheduler(海豚调度系统)介绍与环境部署