Apache DolphinScheduler(简称DolphinScheduler)是海豚环境一种开源的、分布式的调度、易于使用的系统大数据工作流调度系统。它旨在为大数据处理提供一个可靠、介绍高效和可扩展的部署调度解决方案。
DolphinScheduler具有以下特点和功能:
总之,Apache DolphinScheduler是一个功能强大的大数据工作流调度系统,可以帮助用户实现高效、可靠的大数据处理任务调度和管理。它是开源社区的项目,用户可以根据自己的需求进行定制和扩展,并参与社区共同贡献和发展。
Apache DolphinScheduler 和 Azkaban 都是开源的大数据工作流调度系统,用于管理和调度大数据处理任务。它们具有一些相似的特点,但也有一些区别。
相似之处:
区别之处:
选择使用 Apache DolphinScheduler 还是 Azkaban 取决于具体的需求和情况。如果您需要一个高可扩展性和灵活性的调度系统,并且希望与其他大数据生态系统进行深度集成,DolphinScheduler 可能是一个不错的选择。如果您的集群规模较小,并且对权限管理的要求不是很高,同时希望使用一个经过长期发展和广泛使用的调度系统,Azkaban 可能更适合您的需求。
启动流程活动图
架构说明
DistributedQuartz分布式调度组件,主要负责定时任务的启停操作,当quartz调起任务后,Master内部会有线程池具体负责处理任务的后续操作;
MasterSchedulerService是一个扫描线程,定时扫描数据库中的t_ds_command表,根据不同的命令类型进行不同的业务操作;
WorkflowExecuteRunnable主要是负责DAG任务切分、任务提交监控、各种不同事件类型的逻辑处理;
TaskExecuteRunnable主要负责任务的处理和持久化,并生成任务事件提交到工作流的事件队列;
EventExecuteService主要负责工作流实例的事件队列的轮询;
StateWheelExecuteThread主要负责工作流和任务超时、任务重试、任务依赖的轮询,并生成对应的工作流或任务事件提交到工作流的事件队列;
FailoverExecuteThread主要负责Master容错和Worker容错的相关逻辑;
WorkerManagerThread主要负责任务队列的提交,不断从任务队列中领取任务,提交到线程池处理;
TaskExecuteThread主要负责任务执行的流程,根据不同的任务类型进行任务的实际处理;
RetryReportTaskStatusThread主要负责定时轮询向Master汇报任务的状态,直到Master回复状态的ack,避免任务状态丢失;
ZooKeeper:ZooKeeper服务,系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进行集群管理和容错。另外系统还基于ZooKeeper进行事件监听和分布式锁。 我们也曾经基于Redis实现过队列,不过我们希望DolphinScheduler依赖到的组件尽量地少,所以最后还是去掉了Redis实现。
AlertServer:提供告警服务,通过告警插件的方式实现丰富的告警手段。
ApiServer:API接口层,主要负责处理前端UI层的请求。该服务统一提供RESTful api向外部提供请求服务。
UI:系统的前端页面,提供系统的各种可视化操作界面。
这里只是摘录了官方文档部分内容,更多内容可以参考官方文档:https://dolphinscheduler.apache.org/zh-cn/docs/3.1.7/architecture/design
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 |
官网下载:https://www.oracle.com/java/technologies/downloads/
百度云下载
链接:https://pan.baidu.com/s/1-rgW-Z-syv24vU15bmMg1w提取码:8888
# 编辑/etc/profile,文末插入以下内容:# set javaexport JAVA_HOME=/opt/apache/jdk1.8.0_212export PATH=$JAVA_HOME/bin:$PATH
这里选择docker快速部署的方式:通过 docker-compose 快速部署 MySQL保姆级教程
# 安装yum-config-manager配置工具yum -y install yum-utils# 建议使用阿里云yum源:(推荐)#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum-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 dockerdocker --version
curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composedocker-compose --version
yum -y install git
git clone https://gitee.com/hadoop-bigdata/docker-compose-mysql.gitcd docker-compose-mysql# create networkdocker network create hadoop-network# 部署docker-compose -f docker-compose.yaml up -d# 查看docker-compose -f docker-compose.yaml ps# 登录mysqlmysql -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;
这里选择docker快速部署的方式:【中间件】通过 docker-compose 快速部署 Zookeeper 保姆级教程
git clone https://gitee.com/hadoop-bigdata/docker-compose-zookeeper.gitcd docker-compose-zookeeper# 部署docker-compose -f docker-compose.yaml up -d# 查看docker-compose -f docker-compose.yaml ps
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,但如果你运行的任务需要依赖他们,就需要有对应的环境支持。
文件 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"
文件 ./bin/env/dolphinscheduler_env.sh 描述了下列配置:
如果您不使用某些任务类型,您可以忽略任务外部依赖项,但您必须根据您的环境更改 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 configurationexport 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 centerexport 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
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jarmv 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目录一份。
scp -r /opt/apache/dolphinscheduler local-168-182-111:/opt/apache/scp -r /opt/apache/dolphinscheduler local-168-182-112:/opt/apache/
bash tools/bin/upgrade-schema.sh
因为机器资源有限,这里调整一下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 |
# 启停 Masterbash ./bin/dolphinscheduler-daemon.sh start master-server# 查看日志tail -f master-server/logs/dolphinscheduler-master.log# bash ./bin/dolphinscheduler-daemon.sh stop master-server# 启停 Apibash ./bin/dolphinscheduler-daemon.sh start api-server# 查看日志tail -f api-server/logs/dolphinscheduler-api.log# bash ./bin/dolphinscheduler-daemon.sh stop api-server# 启停 Alertbash ./bin/dolphinscheduler-daemon.sh start alert-server# 查看日志tail -f alert-server/logs/dolphinscheduler-alert.log# bash ./bin/dolphinscheduler-daemon.sh stop alert-server# 启停 Workerbash ./bin/dolphinscheduler-daemon.sh start worker-server# 查看日志tail -f worker-server/logs/dolphinscheduler-worker.log# bash ./bin/dolphinscheduler-daemon.sh stop worker-server
# http://<your_ip>:12345/dolphinscheduler/ui/loginhttp://192.168.182.110:12345/dolphinscheduler/ui/login
默认账户密码:admin/dolphinscheduler123
责任编辑:武晓燕 来源: 大数据与云原生技术分享 海豚调度系统(责任编辑:热点)
阳普医疗(300030.SZ)公布消息:赵吉庆已于3月17日