dolphinscheduler海豚调度(一)简介&快速体验

1、简介

        Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。

        Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。 解决数据研发ETL依赖错综复杂,无法监控任务健康状态的问题。 DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。

2、系统架构

dolphinscheduler海豚调度(一)简介&快速体验_第1张图片

MasterServer

        MasterServer采用分布式无中心设计理念,MasterServer主要负责 DAG 任务切分、任务提交监控,并同时监听其它MasterServer和WorkerServer的健康状态。 MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeeper临时节点变化来进行容错处理。 MasterServer基于netty提供监听服务。

该服务内主要包含:

    • DistributedQuartz分布式调度组件,主要负责定时任务的启停操作,当quartz调起任务后,Master内部会有线程池具体负责处理任务的后续操作;
    • MasterSchedulerService是一个扫描线程,定时扫描数据库中的t_ds_command表,根据不同的命令类型进行不同的业务操作;
    • WorkflowExecuteRunnable主要是负责DAG任务切分、任务提交监控、各种不同事件类型的逻辑处理;
    • TaskExecuteRunnable主要负责任务的处理和持久化,并生成任务事件提交到工作流的事件队列;
    • EventExecuteService主要负责工作流实例的事件队列的轮询;
    • StateWheelExecuteThread主要负责工作流和任务超时、任务重试、任务依赖的轮询,并生成对应的工作流或任务事件提交到工作流的事件队列;
    • FailoverExecuteThread主要负责Master容错和Worker容错的相关逻辑;

WorkerServer

        WorkerServer也采用分布式无中心设计理念,WorkerServer主要负责任务的执行和提供日志服务。 WorkerServer服务启动时向Zookeeper注册临时节点,并维持心跳。 WorkerServer基于netty提供监听服务。

该服务包含:

    • WorkerManagerThread主要负责任务队列的提交,不断从任务队列中领取任务,提交到线程池处理;
    • TaskExecuteThread主要负责任务执行的流程,根据不同的任务类型进行任务的实际处理;
    • RetryReportTaskStatusThread主要负责定时轮询向Master汇报任务的状态,直到Master回复状态的ack,避免任务状态丢失;

ZooKeeper

  • ZooKeeper服务,系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进行集群管理和容错。另外系统还基于ZooKeeper进行事件监听和分布式锁。 我们也曾经基于Redis实现过队列,不过我们希望DolphinScheduler依赖到的组件尽量地少,所以最后还是去掉了Redis实现。

AlertServer

  • 提供告警服务,通过告警插件的方式实现丰富的告警手段。

ApiServer

  • API接口层,主要负责处理前端UI层的请求。该服务统一提供RESTful api向外部提供请求服务。

UI

  • 系统的前端页面,提供系统的各种可视化操作界面。

3、快速体验

本次以单机为例:

前置准备

        需要安装JDK(1.8+),并配置JAVA_HOME环境变量

二进制包下载

        下载地址:DolphinScheduler | 下载 (apache.org)

解压

tar -zxvf apache-dolphinscheduler-3.2.0-bin.tar.gz

启动

#启动服务
./bin/dolphinscheduler-daemon.sh start standalone-server

#停止服务
./bin/dolphinscheduler-daemon.sh stop standalone-server

登陆系统UI

        登陆地址

        端口:12345

dolphinscheduler海豚调度(一)简介&快速体验_第2张图片

4、切换元数据库

单机版dolphinscheduler是采用H2存储元数据,每次重启服务都会清空数据,所以我们需要切换到MySQL数据库解决这个问题。

首先在MySQL数据库建一个dolphinscheduler数据库

然后编辑dolphinscheduler_env.sh文件

vim ./bin/env/dolphinscheduler_env.sh

export DATABASE=mysql
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/ds3?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
export SPRING_DATASOURCE_USERNAME=用户
export SPRING_DATASOURCE_PASSWORD=密码

初始化数据库

sh tools/bin/upgrade-schema.sh

你可能感兴趣的:(大数据)