前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Azkaban进行定时任务调度

使用Azkaban进行定时任务调度

原创
作者头像
用户1135648
修改2019-02-21 21:33:23
6.2K0
修改2019-02-21 21:33:23
举报
文章被收录于专栏:LeozhiqinLeozhiqin

在做服务器开发时,我们经常会涉及到定时任务的处理。在linux环境,常用而简便的方式是使用crontab来定时启动执行我们的任务。但是这种方式也存在问题,如:不能方便的查看到任务的成功失败状态,任务的执行时长等信息。下面我介绍一种使用Azkaban来进行定时任务调度的方案。

1、Azkaban系统简介

azkaban是一个任务调度系统,当前我已经在用于emr计算任务的定时调度,emr集群的定时清理等任务处理中。整个azkaban系统包括web server和exec server两部分,web server提供了web页面访问,并能够前端页面上进行任务的创建,任务包的上传,任务执行调度,执行日志及状态查看,定时任务设置等操作。exec server是具体的执行服务器,接收web server下发的执行任务进行处理。

2、Azkaban用于调度定时任务的优点

由于azkaban系统能够支持包括hive任务,spark任务,命令行任务等多种任务。所以可以使用azkaban来进行日常定时任务的处理。其优势在于:

  • 可以简单直观的通过web页面管理定时任务
  • 方便的查看定时任务的状态和执行日志
  • 对定时任务的历史情况也可以快速查看
  • 通过azkaban回调系统对任务的执行情况进行监控告警
  • 通过azkaban的http接口进行事件触发式启动任务。

3、任务打包azkaban系统的任务包都以zip包的形式组织,我们的demo目录结构如下:

|-- azkaban_task_demo.project

|-- azkaban_task_demo.zip

|-- crontab_test.flow

|-- task

| -- test.sh

-- task_tools

 |-- bin

 |-- conf

 -- lib

  • 其中需要有azkaban_task_demo.project文件制定azkaban flow类型
  • 可以定义一个或多个.flow文件来制定工作流,如上面的:crontab_test.flow
  • 建议将待执行的脚本统一放置在一个文件夹下,如上面的:task
  • 如果是二进制可执行文件,建议按上面的task_tools目录进行文件,配置,依赖库等组织
  • 在azkaban_task_demo.project同级目录下将所有文件打包为zip文件,如上面的:azkaban_task_demo.zip
  • 将这个zip包通过web上传到azkban系统即可

4、包上传及启动执行在azkaban的web界面,首先需要创建一个新的project

image.png
image.png
  • 创建成功后,即可上传之前打包好的zip包
image.png
image.png
  • 上传完成后,即可看到项目中定义的工作流,多个工作流会并行展示
image.png
image.png
  • 工作流可以展开来查看有哪些任务
image.png
image.png
  • 点击Execute Flow后可以看到流中不同工作的关系,如并行、依赖等
image.png
image.png
  • 执行任务左边可以进行部分参数定义,其中Concurrent定义了项目能否并发执行,如果可能相同project同时执行多个,需要关注此项
  • 如果是手动执行,可以点击右下方Execute开始执行
  • 如果是定时执行,则点击左下角Schedule选项添加定时任务,定时的方式可参考提示,与Linux crontab对定时任务的定义基本一致。
image.png
image.png
  • 任务执行情况及日志在history选项卡中进行查看
image.png
image.png
  • 进入具体的执行ID可以查看执行的日志输出情况
image.png
image.png

5、工作流定义

  • 我们使用的是Azkaban对工作流定义的2.0版本
  • flow文件定义:config部分定义了通用的变量配置信息,其中也定义了任务处理回调的接口地址,。回调部分,每个任务都建议加入。node部分定义了计算节点,name为节点名称,type为任务类型,命令行任务都为command,config下的command定义需要执行的shell命令,dependsOn定义了节点的依赖关系。
image.png
image.png

6、总结

上面介绍了使用azkaban来进行定时任务调度的实现方法,可以使得我们能从web界面便捷的看到我们定时任务的执行成功失败情况,也可以便捷的查看任务输出的日志信息,是一种管理定时任务的便捷方法。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com