文章目录
概述
-
需求:在某个特定的时间运行Python(Anaconda)任务
方案1:crontab来定时调度
方案2:crontab没有便于操作的Web界面及报警等功能,于是引入DolphinScheduler -
Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台
致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用
中文官网:https://dolphinscheduler.apache.org/zh-cn/
DolphinScheduler架构图
主要角色 | 主要职责 |
---|---|
MasterServer | DAG任务切分、任务提交监控;监听其它MasterServer和WorkerServer的健康状态 |
WorkerServer | 任务的执行和提供日志服务 |
ZK Cluster | MasterServer和WorkerServer启动时,会向Zookeeper注册临时节点 |
Alter | 提供告警相关服务 |
API | 处理前端UI层的请求 |
UI | 提供Web操作界面 |
DolphinScheduler集群部署
部署规划 | hadoop105 | hadoop106 | hadoop107 | 备注 |
---|---|---|---|---|
MasterServer | 1 | 1 | 端口(非通信的)默认5678 |
|
WorkerServer | 1 | 1 | 1 | 端口(非通信的)默认1234 |
LoggerServer | 1 | 1 | 1 | 日志服务,隶属WorkerServer 功能:日志分片查看、刷新、下载… |
AlertServer | 1 | 告警服务,暂时仅支持单机 | ||
ApiApplicationServer | 1 | 提供后端通信,端口默认12345 |
DS依赖Java,集群部署依赖ZooKeeper
另外,本文还配置DS元数据存储到MySQL,资源存储到HDFS
1、准备工作
安装进程管理相关的命令,用于支持DolphinScheduler(每个节点都执行)
yum install -y psmisc
创建具有sudo权限的用户
https://yellow520.blog.youkuaiyun.com/article/details/115495027
集群用户免密登录(root和新创建的用户都要配)
https://blog.youkuaiyun.com/Yellow_python/article/details/110143502
2、下载DolphinScheduler
wget https://archive.apache.org/dist/dolphinscheduler/2.0.3/apache-dolphinscheduler-2.0.3-bin.tar.gz
解压
tar -zxvf apache-dolphinscheduler-2.0.3-bin.tar.gz
3、配置DolphinScheduler元数据存储在MySQL
MySQL建库ds
和用户dolphinscheduler
,自设密码
mysql -uroot -p
-- 创建数据库
CREATE DATABASE ds DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
-- 创建用户和网络允许,并设置密码
CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY