Azkaban可能遇到虚拟机内存不⾜情况:

  1. 增⼤机器内存
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看内存大小
free -h

# 创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)
dd if=/dev/zero of=/tmp/big_swap bs=1M count=1024

# 目录空间大小
du -sh /tmp/big_swap

# 格式化为交换分区文件
mkswap /tmp/big_swap

# 启用交换分区文件
swapon /tmp/big_swap

# 查看下扩充后的内存
free –h
  1. 使⽤清除系统缓存命令,暂时释放⼀些内存
1
2
3
[root@linux123 mapreduce]# echo 1 >/proc/sys/vm/drop_caches
[root@linux123 mapreduce]# echo 2 >/proc/sys/vm/drop_caches
[root@linux123 mapreduce]# echo 3 >/proc/sys/vm/drop_caches
  1. 关闭web的最大最小内存过滤器
1
2
3
4
5
[root@Linux122 ~]# cd /opt/lagou/servers/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/conf/
[root@Linux122 conf]# vim azkaban.properties

#azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus

shell 调度

创建job描述⽂件,vi command.job

1
2
type=command
command=echo 'hello'

将job资源⽂件打包成zip⽂件, command.zip


通过azkaban的web管理平台创建project并上传job压缩包



启动执⾏该job


job依赖调度

创建有依赖关系的多个job描述

第⼀个job:foo.job

1
2
type=command
command=echo 'foo'

第⼆个job:bar.job依赖foo.job

1
2
3
type=command
dependencies=foo
command=echo 'bar'

将所有job资源⽂件打到⼀个zip包中


在azkaban的web管理界⾯创建⼯程并上传zip包,启动⼯作流flow


MAPREDUCE任务调度

mr任务依然可以使⽤command的job类型来执⾏

创建job描述⽂件mrwc.job,使用mr程序jar包(示例中直接使⽤hadoop⾃带的example jar)

1
2
type=command
command=/opt/lagou/servers/hadoop-2.9.2/bin/hadoop jar hadoop-mapreduce-examples-2.9.2.jar wordcount /wordcount/input /wordcount/azout

将所有job资源⽂件打到⼀个zip包中

在azkaban的web管理界⾯创建⼯程并上传zip包,启动job

注意: Hadoop和yarn集群要开启

HIVE脚本任务调度

创建hive脚本test.sql

1
2
3
4
5
6
7
8
9
use default;

drop table aztest;

create table aztest(
id int,
name string
)
row format delimited fields terminated by ',';

创建Job描述⽂件:hivef.job

1
2
type=command
command=/opt/lagou/servers/hive-2.3.7/bin/hive -f 'test.sql'

将所有job资源⽂件打到⼀个zip包中创建⼯程并上传zip包,启动job,即test.sql和hivef.job一起打包

定时任务调度

除了⼿动⽴即执⾏⼯作流任务外,azkaban也⽀持配置定时任务调度。开启⽅式如下:

⾸⻚选择待处理的project,选择左边schedule表示配置定时调度信息,选择右边execute表示⽴即执⾏⼯作流任务。