BigData-Notes/notes/Azkaban Flow 1.0 的使用.md
2019-04-06 20:47:39 +08:00

5.5 KiB
Raw Blame History

Azkaban Flow 1.0 的使用

一、简介

Azkaban提供了人性化的WEB UI界面使得我们可以通过界面上传配置文件来完成任务的调度。Azkaban有两个重要的概念

  • Job 你需要执行的调度任务;
  • Flow一个获取多个Job及它们之间的依赖关系所组成的图表叫做Flow。

目前 Azkaban 3.x 同时支持 Flow 1.0 和 Flow 2.0,本文主要讲解 Flow 1.0的使用下一篇文章会讲解Flow 2.0的使用。

二、基本任务调度

2.1 新建项目

在Azkaban主界面可以创建对应的项目

azkaban-create-project

2.2 任务配置

新建任务配置文件Hello-Azkaban.job,注意后缀名为job,内容如下,这里我们的任务很简单,就是输出一句'Hello Azkaban!'

#command.job
type=command
command=echo 'Hello Azkaban!'

2.3 打包上传

Hello-Azkaban.job 打包为zip压缩文件

azkaban-zip

通过Web UI 界面上传

azkaban-upload

上传成功后可以看到对应的Flows

azkaban-flows

2.4 执行任务

点击页面上的Execute Flow执行任务

azkaban-execute

2.5 执行结果

点击detail可以查看到任务的执行日志

azkaban-successed

azkaban-log

三、多任务调度

3.1 依赖配置

这里假设我们有五个任务TaskA——TaskE,D任务需要在ABC任务执行完成后才能执行而E任务则需要在D任务执行完成后才能执行。则需要使用dependencies属性定义其依赖关系,各任务配置如下:

Task-A.job :

type=command
command=echo 'Task A'

Task-B.job :

type=command
command=echo 'Task B'

Task-C.job :

type=command
command=echo 'Task C'

Task-D.job :

type=command
command=echo 'Task D'
dependencies=Task-A,Task-B,Task-C

Task-E.job :

type=command
command=echo 'Task E'
dependencies=Task-D

3.2 压缩上传

压缩后进行上传这里需要注意的是一个Project只能接收一个压缩包这里我还沿用上面的Project默认后面的压缩包会覆盖前面的压缩包

azkaban-task-abcde-zip

3.3 依赖关系

多个任务存在依赖时默认采用最后一个任务的文件名作为Flow的名称其依赖关系可以在页面上得以直观的体现

azkaban-dependencies

3.4 执行结果

azkaban-task-abcde

这里说明一下在Flow1.0的情况下是无法通过一个job文件完成多个任务的配置的但是Flow 2.0 就很好的解决了这个问题。

四、调度HDFS作业

步骤与上面的步骤一致这里已查看HDFS文件列表为例建议涉及到路径的地方全部采用完整的路径名配置文件如下

type=command
command=/usr/app/hadoop-2.6.0-cdh5.15.2/bin/hadoop fs -ls /

执行结果:

azkaban-hdfs

五、调度MR作业

MR作业配置

type=command
command=/usr/app/hadoop-2.6.0-cdh5.15.2/bin/hadoop jar /usr/app/hadoop-2.6.0-cdh5.15.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.15.2.jar pi 3 3

执行结果:

azkaban-mr

六、调度Hive作业

作业配置:

type=command
command=/usr/app/hive-1.1.0-cdh5.15.2/bin/hive -f 'test.sql'

其中test.sql内容如下,创建一张雇员表,然后查看其结构:

CREATE DATABASE IF NOT EXISTS hive;
use hive;
drop table if exists emp;
CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
-- 查看emp表的信息
desc emp;

打包的时候将job文件与sql文件一并进行打包

azkaban-hive

执行结果如下:

azkaban-hive-result

七、在线修改作业配置

在测试的时候我们可能要频繁修改配置如果每次修改都要重新打包上传这是比较麻烦的所幸的是Azkaban是支持配置的在线修改的点击需要修改的Flow就可以进入详情页面

azkaban-project-edit

在详情页面点击Eidt按钮可以进入编辑页面

azkaban-edit

在编辑页面可以新增配置或者修改配置

azkaban-click-edit八、可能出现的问题

如果出现以下异常,多半是因为执行主机内存不足引起azkaban要求执行主机可用内存必须大于3G才能满足执行任务的条件

Cannot request memory (Xms 0 kb, Xmx 0 kb) from system for job

azkaban-memory

如果你的执行主机没办法增大内存,则可以通过配置commonprivate.properties 文件关闭内存检查,

commonprivate.properties 文件在安装目录的/plugins/jobtypes下。

关闭内存检查的配置如下:

memCheck.enabled=false