3.2.3 dolphinscheduler前端服务启停
# 1 启动 systemctl start nginx # 2 状态 systemctl status nginx # 3 停止 #nginx -s stop systemctl stop nginx
4. 快速开始
4.1 登录
浏览器访问http://192.168.33.6:8888,如下图所示。
在上述登陆页面默认的账户的用户名为 admin
密码为escheduler123
,这个账户也是系统默认的管理员账户,登陆成功后可以修改密码。成功登陆有主页面如下所示
4.2 创建的队列、租户
创建一个队列:队列管理 -> 创建队列 -> 输入名称和队列值 -> 提交。
创建租户:租户管理 -> 创建租户 -> 输入租户编码、租户名称和队列值 -> 提交。
创建普通用户:用户管理 -> 创建用户 -> 输入用户名称、密码、租户名和邮箱,手机号选填 -> 提交。
创建警告组:警告组管理 -> 创建警告组 -> 输入组名称、组类型(邮件、短信)-> 提交。
使用普通用户登录(用户名和密码都是demo
)。点击右上角用户名“退出”,重新使用普通用户登录。登陆成功的首页如下。
4.3 创建项目
点击页面头部的项目管理,进入项目页面,再点击创建项目,创建一个DolphinScheduler
任务调度项目,在弹出的框中输入项目名称和描述,例如这里创建一个hello_dolphinScheduler
名称的项目,最后点击提交。
项目创建完毕后,在项目管理页面点击我们创建的项目,进入该项目的管理页面。
- 点击工作流定义 -> 创建工作流 -> 在左侧工具栏可以选择(
SHELL
、USB_PROCESS
、PROCEDURE
、SQL
、SPARK
、MapReduce
、PYTHON
、DEPENDENT
)。 - 拖拽SHELL节点到画布,新增一个Shell任务,填写 节点名称、描述、脚本 字段;选择 任务优先级 ,级别高的任务在执行队列中会优先执行,相同优先级的任务按照先进先出的顺序执行;
- 超时告警, 填写超时时长,当任务执行时间超过超时时长可以告警并且超时失败。(注意:这里的节点不是机器的节点,而应该是工作流的节点)
确认修改完毕后,点击保存,此时设置DAG
图名称,选择组租户,最后添加。
未上线状态的工作流定义可以编辑,但是不可以运行,所以要执行工作流,需要先上线工作流
点击”运行“,执行工作流。
4.4 运行参数说明
运行参数说明:
- 失败策略:当某一个任务节点执行失败时,其他并行的任务节点需要执行的策略。”继续“表示:其他任务节点正常执行,”结束“表示:终止所有正在执行的任务,并终止整个流程。
- 通知策略:当流程结束,根据流程状态发送流程执行信息通知邮件。
- 流程优先级:流程运行的优先级,分五个等级:最高(HIGHEST),高(HIGH),中(MEDIUM),低(LOW),最低(LOWEST)。级别高的流程在执行队列中会优先执行,相同优先级的流程按照先进先出的顺序执行。
- worker分组: 这个流程只能在指定的机器组里执行。默认是Default,可以在任一worker上执行。
- 通知组: 当流程结束,或者发生容错时,会发送流程信息邮件到通知组里所有成员。
- 收件人:输入邮箱后按回车键保存。当流程结束、发生容错时,会发送告警邮件到收件人列表。
- 抄送人:输入邮箱后按回车键保存。当流程结束、发生容错时,会抄送告警邮件到抄送人列表。
点击任务实例可以查看每个任务的列表信息,点击操作栏,可以看到任务执行的日志信息。
5. Worker分组
worker分组,提供了一种让任务在指定的worker上运行的机制。管理员创建worker分组,在任务节点和运行参数中设置中可以指定该任务运行的worker分组,如果指定的分组被删除或者没有指定分组,则该任务会在任一worker上运行。worker分组内多个ip地址(不能写别名),以英文逗号分隔。
用管理员用户(admin)登陆Web页面,点击 安全中心 -> Worker分组管理,如下图所示。
创建Worker分组。填写组名称和IP,IP可以是多个,用英文逗号分割即可。
例如下图,我们将Worker的IP分为了两组。
6. 添加数据源
脚本(一般是SQL脚本)执行时可能会用到一些数据源,例如MySQL、PostgreSQL、Hive、Impala、Spark、ClickHouse、Oracle、SQL Server,通过添加数据源在DolphinScheduler页面编写Job时直接选择,不用再指定驱动、连接、用户名和密码等信息,可以快速创建一个SQL脚本的工作流Job,同时这个数据源时用户隔离的,每个用户添加的数据源相互独立(admin用户除外,管理员用户可以看到所有用户添加的数据源)。
下面我们以Impala
为例,选择页面头部的 数据源中心 -> 添加数据源,会弹出下图 编辑数据源 弹窗,主要填写如下几项。因为Impala没有设置密码,用户为必填可以任意添加一个,在jdbc连接参数中必须添加 {"auth":"noSasl"}
参数,否则会一直等待确认认证。
7. 实例
在项目管理下,点击工作流定义,在工具栏处选择最后一行的DEPENDENT定义一个带依赖的工作流Job,拖动到编辑面板,设置task的节点名为cdh2-task1,在 Worker分组 中选择执行的Worker节点为cdh2,编辑完这个Task后选择 确认添加。选择执行的Worker分组名,这里选择前面设置的cdh2组,确认添加,如下图所示。同样的方式设置第二个依赖Task,将其Worker分组设置到cdh3节点,并添加依赖为 且。
接下来设置两个Shell执行脚本,cdh2-task11上执行task11,主要是在cdh2上执行一个hostname命令,打印执行节点的HostName。同样的方式,在依赖节点cdh3-task21上设置在cdh3执行,也是执行hostname命令。最后再在依赖节点cdh3-task21上添加一个SQL脚本,查询我们的豆瓣电影数据,具体操作如下
- 在工具栏拖拽添加一个SQL脚本Task节点;
- 节点名称可以叫:ck-task01,并添加描述信息;
- Worker分组:cdh3;
- 数据源:CLICKHOUSE clickhouse-cdh3;
- sql类型选择查询。√表格;
- 邮件信息:填写主题。收件人邮箱、抄送人邮箱;
- sql语句:
SELECT m.id,m.movie_name,m.rating_num,m.rating_people,q.rank,q.quote FROM movie m LEFT JOIN quote q ON q.id=m.id ORDER BY m.rating_num DESC,m.rating_people DESC LIMIT 10;
各个task编写完毕后,选择右上角的 选择线条连接,工作流编写完毕后如下图,最后点击保存,输入DAG
图名称,并选择租户,选择添加保存。
回到工作流定义,可以看到新添加的当前用户的所有工作流列表,点击右侧的操作栏的 上线,然后点击 运行 执行我们的工作流。当然这里也可以添加 定时 调度。
点击运行后,可以在 工作流实例 页面看到当前运行的Job的状态信息。每个工作可能会有多个Task构成,查看Task的执行信息可以在 任务实例 页面查看,操作栏可以查看这个task的执行日志信息。如果执行成功后,可以选择工作流的甘特图,在时间轴上查看执行状况。
也可以查看工作流的执行的树形图信息,如下图。
运行成功后填写的收件箱会接收到执行结果的一封邮件,这封邮件中包含了脚本执行的结果。
8. 与 Azkaban 的对比
9. 小结
Apache DolphinScheduler
是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,从上面的安装可以看到这个调度系统集成了ZooKeeper,很好的实现了去中心化,每个角色的服务可以起多个,从znode上可以看到masters和workers的一些元信息都注册在了上面,交由ZK去选举,当然它也是一个分布式的。如果某个服务挂了,ZooKeeper会在剩下的其它节点进行选举,例如当某些节点的Worker服务挂了,我们不用做任何处理,DolphinScheduler上依然可以正常提交和执行工作,在它的监控中心的页面可以看到,系统自动选举出了一个新的Work节点。
# znode上的信息 [zk: localhost:2181(CONNECTED) 1] ls /escheduler [tasks_queue, dead-servers, masters, lock, workers, tasks_kill]
尤其可以多Worker
进行分组以及添加数据源的功能,可以指定Wroker
节点,直接指定改用户下的数据,执行SQL
脚本,同时页面增加的监控中心、任务状态统计、流程状态统计、流程定义统计等也能很好的帮助我们管理和查看任务执行的信息和集群的状态。