Azkaban工作调度入门到项目中熟练使用

1. Azkaban是什么?

    Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的dependencies 来设置依赖关系,这个依赖关系必须是无环的,否则会被视为无效的工作流。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

   1.1、Azkaban优点:

  1. 提供功能清晰,简单易用的Web UI界面
  2. 提供job配置文件快速建立任务和任务之间的依赖关系
  3. 提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop
  4. 基于Java开发,代码结构清晰,易于二次开发

   1.2、Azkaban的适用场景

  1. 大量任务调度工作
  2. 每天有一个大任务,这个大任务可以分成A,B,C,D四个小任务
  3. linux计划任务无法实现的复杂工作任务调度工作

2. Azkaban使用入门......

     2.1web页面介绍

Azkaban工作调度入门到项目中熟练使用_第1张图片

登录页面:用户名和密码就不用说了

第二步:登陆后页面介绍

Azkaban工作调度入门到项目中熟练使用_第2张图片

①:是创建的的项目列表                       ②:任务调度执行计划

③:正在执行的计划任务                       ④:历史的执行J计划任务

⑤:官方说明文档                                  ⑥:创建Project项目

⑦:创建完成的Project项目

第三步:简单入门,非依赖任务

第一步 :书写Job命令

创建 audience_avg_duration.job 文本文件,内容如下

type=command
command=/mnt/disk1/azkaban_etl_work/TTFM_Rbc_Audience_Avg_Duration/start_avg_time_length_analysis.sh

解释说明:type 为当前执行的类型

type=command                      type=command 说明为 类型为 命令类型/支持SQL,Pig、Hadoop等

command=XXXXXX              command           说明为需要执行的命令为XXXXXX

将 audience_avg_duration.job 打包为 XXX.zip文件,文件名字随意,后缀必须为Zip

zip -d myfile.zip audience_avg_duration.job  将audience_avg_duration.job 文件压缩为myfile.zip 文件

将当前压缩好的 myfile.zip 上传到本地桌面

然后开始创建Azkaban 的Project项目,每一个项目

Azkaban工作调度入门到项目中熟练使用_第3张图片

第三步:上传XXX.zIp文件

Azkaban工作调度入门到项目中熟练使用_第4张图片

①:上传压缩后的XXX.zip文件夹

②:点击选择文件,点击桌面的文件

③:点击上传

④:上传zip文件,解析的zip 后显示的Job名字

下一步,点击,Execute Flow

Azkaban工作调度入门到项目中熟练使用_第5张图片

下一步:点击执行①之后,显示

Azkaban工作调度入门到项目中熟练使用_第6张图片

②:设置执行计划

Azkaban工作调度入门到项目中熟练使用_第7张图片

生成完毕之后,点击右下角的Schedule按钮,应用结果!

Azkaban工作调度入门到项目中熟练使用_第8张图片

按钮 ①:为执行按钮,点击立即执行

按钮②:为设置Cron计划时间按钮

Azkaban工作调度入门到项目中熟练使用_第9张图片

上图表格为绿色的时候即为运行成功,红色为运行失败!

至此简单的Azkaban  运行成功, command = echo "this is 成功"   日志会打印这句话,表示运行成功过

第四步:进阶Azkaban的依赖工作流的使用方法

有官方文档可查阅可知  Azkaban 工作流,有依赖的模式是无法使用Job结尾的来运行,必须使用Flow 为结尾的文件

Demo如下

Azkaban工作调度入门到项目中熟练使用_第10张图片

将文件一起压缩,上传到Project中,查看解析流程

Azkaban工作调度入门到项目中熟练使用_第11张图片

打开文件①

Azkaban工作调度入门到项目中熟练使用_第12张图片

打开文件②

nodes:
  - name: jobM
    type: command
    dependsOn:
      - jobE
      - jobF
      - jobG
      - jobI
      - jobJ
      - jobK
    config:
      command: /mnt/disk1/azkaban_etl_work/TingTing_FM_Label/start_tingting_label.sh

  - name: jobD
    type: command
    dependsOn:
      - jobC
    config:
      command: /mnt/disk1/azkaban_etl_work/TingTing_FM_Data_Etl/start_tingtingfm.sh

  - name: jobC
    type: noop
    # 数据拉取合并
    dependsOn:
      - jobA
      - jobB

  - name: jobA
  #数据拉取1
    type: command
    config:
      command: sudo -u hdfs /mnt/azkaban_work/date_ttfm01/date_ttfm.sh

  - name: jobB
  #数据拉取2
    type: command
    config:
      command: sudo -u hdfs  /mnt/azkaban_work/date_ttfm02/date_ttfm.sh
  
  - name: jobE
  #有过收藏行为
    type: command
    dependsOn:
      - jobD
    config:
      command: /mnt/disk1/azkaban_etl_work/TTFM_User_Heat/start_ttfm_user_heat.sh
  
  - name: jobF
  #有过评论行为
    type: command
    dependsOn:
      - jobD
    config:
      command: /mnt/disk1/azkaban_etl_work/TTFM_Distinct_User_Feedback_Comment/start_ttfm_distinct_user_feedback_comment.sh
 
  - name: jobG
  #有过使用/试听行为
    type: command
    dependsOn:
      - jobD
    config:
      command: /mnt/disk1/azkaban_etl_work/TTFM_Behaviors_Radio_Play/start_ttfm_behaviors_radio_play.sh

  - name: jobH
  #Sqoop数据同步
    type: command
    dependsOn:
      - jobC
    config:
      command: /mnt/disk1/azkaban_etl_work/TTFM_Sqoop_rbc_ttfm_client_behaviors_radio_play/start_ttfm_sqoop_rbc_ttfm_behaviors_radio_play.sh

  - name: jobI
  #使用频次偏好
    type: command
    dependsOn:
      - jobH
    config:
      command: /mnt/disk1/azkaban_etl_work/TTFM_Use_Frequency_Preference/start_ttfm_use_frequency_preference.sh

  - name: jobJ
  #收听时间段
    type: command
    dependsOn:
      - jobH
    config:
      command: /mnt/disk1/azkaban_etl_work/TTFM_Llistening_Time/start_ttfm_listening_time.sh

  - name: jobK
  #收听偏好
    type: command
    dependsOn:
      - jobH
    config:
      command: /mnt/disk1/azkaban_etl_work/TTFM_Listening_Preference/start_ttfm_listening_preference.sh

由上面流程图和配置文件可知

                    JobM

                  dependsOn

JobE,JobF,JobG,JobI,JobJ,JobK

______________________________________________________

JobE                            JobF                            JobG

                                dependsOn

JobD                            JobD                            JobD

______________________________________________________

JobI                              JobJ                             JobK

                                dependsOn

 JobH                           JobH                             JobH

——————————————————————————————

                      JobD                             JobH

                                    dependsOn

                                       JobC

______________________________________________________

                                       JobC

                                   dependsOn

                      JobA                                 JobB

 

 

 

 

你可能感兴趣的:(Azkaban)