一、简介

Azkaban主要通过界面上传配置文件来进行任务的调度。它有两个重要的概念:

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

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

二、基本任务调度

2.1 新建项目

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

2.2 任务配置

新建任务配置文件Hello-Azkaban.job,内容如下。这里的任务很简单,就是输出一句'Hello Azkaban!'

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

2.3 打包上传

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

通过Web UI 界面上传:

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

2.4 执行任务

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

2.5 执行结果

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

三、多任务调度

3.1 依赖配置

这里假设我们有五个任务(TaskA——TaskE),D 任务需要在A,B,C任务执行完成后才能执行,而 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,默认后面的压缩包会覆盖前面的压缩包:

3.3 依赖关系

多个任务存在依赖时,默认采用最后一个任务的文件名作为Flow的名称,其依赖关系如图:

3.4 执行结果

从这个案例可以看出,Flow1.0无法通过一个job文件来完成多个任务的配置,但是Flow 2.0 就很好的解决了这个问题。

四、调度HDFS作业

步骤与上面的步骤一致,这里以查看HDFS上的文件列表为例。命令建议采用完整路径,配置文件如下:

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

执行结果:

五、调度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

执行结果:

六、调度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支持配置的在线修改,点击需要修改的Flow,就可以进入详情页面:

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

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

附:可能出现的问题

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

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

如果你的执行主机没办法增大内存,那么可以通过修改plugins/jobtypes/目录下的commonprivate.properties 文件来关闭内存检查,配置如下:

memCheck.enabled=false

更多大数据系列文章可以参见个人 GitHub 开源项目: 程序员大数据入门指南

Azkaban学习之路(三)—— Azkaban Flow 1.0 的使用的更多相关文章

  1. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

  2. Azkaban学习之路(四)—— Azkaban Flow 2.0的使用

    一.Flow 2.0 简介 1.1 Flow 2.0 的产生 Azkaban 目前同时支持 Flow 1.0 和 Flow2.0 ,但是官方文档上更推荐使用Flow 2.0,因为Flow 1.0会在将 ...

  3. Azkaban学习之路(一)—— Azkaban 简介

    一.Azkaban 介绍 1.1 背景 一个完整的大数据分析系统,必然由很多任务单元(如数据收集.数据清洗.数据存储.数据分析等)组成,所有的任务单元及其之间的依赖关系组成了复杂的工作流.复杂的工作流 ...

  4. Azkaban学习之路 (二)Azkaban的安装

    安装过程 1.软件介绍 Azkaban Web 服务器:azkaban-web-server-2.5.0.tar.gz Azkaban Excutor 执行服务器:azkaban-executor-s ...

  5. Redis——学习之路三(初识redis config配置)

    我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息.     ...

  6. Azkaban学习之路 (三)Azkaban的使用

    界面介绍 首页有四个菜单 projects:最重要的部分,创建一个工程,所有flows将在工程中运行. scheduling:显示定时任务 executing:显示当前运行的任务 history:显示 ...

  7. Azkaban学习之路 (一)Azkaban的基础介绍

    一.为什么需要工作流调度器 1.一个完整的数据分析系统通常都是由大量任务单元组成: shell 脚本程序,java 程序,mapreduce 程序.hive 脚本等 2.各任务单元之间存在时间先后及前 ...

  8. Azkaban学习之路(二)—— Azkaban 3.x 编译及部署

    一.Azkaban 源码编译 1.1 下载并解压 Azkaban 在3.0版本之后就不提供对应的安装包,需要自己下载源码进行编译. 下载所需版本的源码,Azkaban的源码托管在GitHub上,地址为 ...

  9. zigbee学习之路(三):按键的控制

    一.前言 通过前一次的实验,相信大家都已经对cc2530程序的编写有了一定的认识,这次我们来操作和实验的是cc2530上的按键模块. 二.原理分析 我们先来看一下按键的原理图: 根据原理图我们可以得出 ...

随机推荐

  1. 将 WPF、UWP 以及其他各种类型的旧 csproj 迁移成基于 Microsoft.NET.Sdk 的新 csproj

    原文 将 WPF.UWP 以及其他各种类型的旧 csproj 迁移成基于 Microsoft.NET.Sdk 的新 csproj 写过 .NET Standard 类库或者 .NET Core 程序的 ...

  2. cocos2d-x 打开控制面板

    于cocos2dx反过来,我们所熟悉的控制台输出,可以查看日志,例如C介面printf();性能. int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTA ...

  3. 希尔伯特空间(Hilbert Space)

    欧氏空间 → 线性空间 + 内积 ⇒ 内积空间(元素的长度,元素的夹角和正交) 内积空间 + 完备性 ⇒ 希尔伯特空间 0. 欧几里得空间 欧氏空间是一个特别的度量空间,它使得我们能够对其的拓扑性质, ...

  4. ASP.NET Core 路由 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 路由 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 路由 前两章节中,我们提到 ASP.NET Core 支持 MVC 开发 ...

  5. OpenGL(九) 三维混色和深度缓存设置

    颜色的混合在现实世界中非常常见,例如隔着有色玻璃观看物体,此时在观察者严重呈现出来物体的颜色就是玻璃的颜色和物体的颜色的混合. OpenGL在RGBA颜色模式下使用函数glenable(GL_BLEN ...

  6. matlab 求解 Ax=B 时所用算法

    x = A\B; x = mldivide(A, B); matlab 在这里的求解与严格的数学意义是不同的, 如果 A 接近奇异,matlab 仍会给出合理的结果,但也会提示警告信息: 如果 A 为 ...

  7. FFmpeg来源简单分析:结构会员管理系统-AVClass

    ===================================================== FFmpeg章列表: [架构图] FFmpeg源码结构图 - 解码 FFmpeg源码结构图 ...

  8. Mybatis 一对多 配置文件

    当一个Entity中包含的属性有对象和对象集合时,用mybatis映射时要在Entity中添加一个字段来唯一标识当前的Entity对象.否则查询的Entity集合中的对象会被覆盖掉. 如下一个POJO ...

  9. window下nodejs爬取gb2312网页出现乱码的解决方案

     发布于 2012-8-22 18:15  5230 次浏览  最后一次编辑是 2013-2-18 22:31 linux环境下,我们可以通过 iconv 这个C++模块来处理Node.JS不支持的字 ...

  10. 图像滤镜艺术---Oilpaint油画滤镜

    原文:图像滤镜艺术---Oilpaint油画滤镜  Oilpaint油画滤镜     图像油画效果实际上是将图像边缘产生一种朦胧,雾化的效果,同时,将一定的边缘模糊化,这样图像整体上看去像素与像素之间 ...