14
14
15
15
## 一、简介
16
16
17
- Azkaban主要通过界面上传配置文件来进行任务的调度 。它有两个重要的概念:
17
+ Azkaban 主要通过界面上传配置文件来进行任务的调度 。它有两个重要的概念:
18
18
19
19
- ** Job** : 你需要执行的调度任务;
20
- - ** Flow** :一个获取多个Job及它们之间的依赖关系所组成的图表叫做Flow 。
20
+ - ** Flow** :一个获取多个 Job 及它们之间的依赖关系所组成的图表叫做 Flow 。
21
21
22
- 目前 Azkaban 3.x 同时支持 Flow 1.0 和 Flow 2.0,本文主要讲解 Flow 1.0的使用,下一篇文章会讲解Flow 2.0的使用 。
22
+ 目前 Azkaban 3.x 同时支持 Flow 1.0 和 Flow 2.0,本文主要讲解 Flow 1.0 的使用,下一篇文章会讲解 Flow 2.0 的使用 。
23
23
24
24
## 二、基本任务调度
25
25
26
26
### 2.1 新建项目
27
27
28
- 在Azkaban主界面可以创建对应的项目 :
28
+ 在 Azkaban 主界面可以创建对应的项目 :
29
29
30
30
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-create-project.png " /> </div >
31
31
32
32
### 2.2 任务配置
33
33
34
- 新建任务配置文件` Hello-Azkaban.job ` ,内容如下。这里的任务很简单,就是输出一句` 'Hello Azkaban!' ` :
34
+ 新建任务配置文件 ` Hello-Azkaban.job ` ,内容如下。这里的任务很简单,就是输出一句 ` 'Hello Azkaban!' ` :
35
35
36
36
``` shell
37
37
# command.job
@@ -41,27 +41,27 @@ command=echo 'Hello Azkaban!'
41
41
42
42
### 2.3 打包上传
43
43
44
- 将` Hello-Azkaban.job ` 打包为` zip ` 压缩文件:
44
+ 将 ` Hello-Azkaban.job ` 打包为 ` zip ` 压缩文件:
45
45
46
46
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-zip.png " /> </div >
47
47
48
- 通过Web UI 界面上传:
48
+ 通过 Web UI 界面上传:
49
49
50
50
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-upload.png " /> </div >
51
51
52
- 上传成功后可以看到对应的Flows :
52
+ 上传成功后可以看到对应的 Flows :
53
53
54
54
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-flows.png " /> </div >
55
55
56
56
### 2.4 执行任务
57
57
58
- 点击页面上的` Execute Flow ` 执行任务:
58
+ 点击页面上的 ` Execute Flow ` 执行任务:
59
59
60
60
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-execute.png " /> </div >
61
61
62
62
### 2.5 执行结果
63
63
64
- 点击` detail ` 可以查看到任务的执行日志:
64
+ 点击 ` detail ` 可以查看到任务的执行日志:
65
65
66
66
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-successed.png " /> </div >
67
67
@@ -71,7 +71,7 @@ command=echo 'Hello Azkaban!'
71
71
72
72
### 3.1 依赖配置
73
73
74
- 这里假设我们有五个任务(TaskA——TaskE),D 任务需要在A ,B,C任务执行完成后才能执行 ,而 E 任务则需要在 D 任务执行完成后才能执行,这种情况下需要使用` dependencies ` 属性定义其依赖关系。各任务配置如下:
74
+ 这里假设我们有五个任务(TaskA——TaskE),D 任务需要在 A ,B,C 任务执行完成后才能执行 ,而 E 任务则需要在 D 任务执行完成后才能执行,这种情况下需要使用 ` dependencies ` 属性定义其依赖关系。各任务配置如下:
75
75
76
76
** Task-A.job** :
77
77
@@ -112,25 +112,25 @@ dependencies=Task-D
112
112
113
113
### 3.2 压缩上传
114
114
115
- 压缩后进行上传,这里需要注意的是一个Project只能接收一个压缩包,这里我还沿用上面的Project ,默认后面的压缩包会覆盖前面的压缩包:
115
+ 压缩后进行上传,这里需要注意的是一个 Project 只能接收一个压缩包,这里我还沿用上面的 Project ,默认后面的压缩包会覆盖前面的压缩包:
116
116
117
117
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-task-abcde-zip.png " /> </div >
118
118
119
119
### 3.3 依赖关系
120
120
121
- 多个任务存在依赖时,默认采用最后一个任务的文件名作为Flow的名称 ,其依赖关系如图:
121
+ 多个任务存在依赖时,默认采用最后一个任务的文件名作为 Flow 的名称 ,其依赖关系如图:
122
122
123
123
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-dependencies.png " /> </div >
124
124
125
125
### 3.4 执行结果
126
126
127
127
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-task-abcde.png " /> </div >
128
128
129
- 从这个案例可以看出,Flow1.0无法通过一个job文件来完成多个任务的配置,但是Flow 2.0 就很好的解决了这个问题。
129
+ 从这个案例可以看出,Flow1.0 无法通过一个 job 文件来完成多个任务的配置,但是 Flow 2.0 就很好的解决了这个问题。
130
130
131
131
## 四、调度HDFS作业
132
132
133
- 步骤与上面的步骤一致,这里以查看HDFS上的文件列表为例 。命令建议采用完整路径,配置文件如下:
133
+ 步骤与上面的步骤一致,这里以查看 HDFS 上的文件列表为例 。命令建议采用完整路径,配置文件如下:
134
134
135
135
``` shell
136
136
type=command
@@ -143,7 +143,7 @@ command=/usr/app/hadoop-2.6.0-cdh5.15.2/bin/hadoop fs -ls /
143
143
144
144
## 五、调度MR作业
145
145
146
- MR作业配置 :
146
+ MR 作业配置 :
147
147
148
148
``` shell
149
149
type=command
@@ -163,7 +163,7 @@ type=command
163
163
command=/usr/app/hive-1.1.0-cdh5.15.2/bin/hive -f ' test.sql'
164
164
```
165
165
166
- 其中` test.sql ` 内容如下,创建一张雇员表,然后查看其结构:
166
+ 其中 ` test.sql ` 内容如下,创建一张雇员表,然后查看其结构:
167
167
168
168
``` sql
169
169
CREATE DATABASE IF NOT EXISTS hive;
@@ -179,11 +179,11 @@ sal double,
179
179
comm double,
180
180
deptno int
181
181
) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' \t ' ;
182
- -- 查看emp表的信息
182
+ -- 查看 emp 表的信息
183
183
desc emp;
184
184
```
185
185
186
- 打包的时候将` job ` 文件与` sql ` 文件一并进行打包:
186
+ 打包的时候将 ` job ` 文件与 ` sql ` 文件一并进行打包:
187
187
188
188
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-hive.png " /> </div >
189
189
@@ -193,11 +193,11 @@ desc emp;
193
193
194
194
## 七、在线修改作业配置
195
195
196
- 在测试时,我们可能需要频繁修改配置,如果每次修改都要重新打包上传,这会比较麻烦。所以Azkaban支持配置的在线修改,点击需要修改的Flow ,就可以进入详情页面:
196
+ 在测试时,我们可能需要频繁修改配置,如果每次修改都要重新打包上传,这会比较麻烦。所以 Azkaban 支持配置的在线修改,点击需要修改的 Flow ,就可以进入详情页面:
197
197
198
198
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-project-edit.png " /> </div >
199
199
200
- 在详情页面点击` Eidt ` 按钮可以进入编辑页面:
200
+ 在详情页面点击 ` Eidt ` 按钮可以进入编辑页面:
201
201
202
202
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-edit.png " /> </div >
203
203
@@ -207,15 +207,15 @@ desc emp;
207
207
208
208
## 附:可能出现的问题
209
209
210
- 如果出现以下异常,多半是因为执行主机内存不足,Azkaban要求执行主机的可用内存必须大于3G才能执行任务 :
210
+ 如果出现以下异常,多半是因为执行主机内存不足,Azkaban 要求执行主机的可用内存必须大于 3G 才能执行任务 :
211
211
212
212
``` shell
213
213
Cannot request memory (Xms 0 kb, Xmx 0 kb) from system for job
214
214
```
215
215
216
216
<div align =" center " > <img src =" https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-memory.png " /> </div >
217
217
218
- 如果你的执行主机没办法增大内存,那么可以通过修改` plugins/jobtypes/ ` 目录下的` commonprivate.properties ` 文件来关闭内存检查,配置如下:
218
+ 如果你的执行主机没办法增大内存,那么可以通过修改 ` plugins/jobtypes/ ` 目录下的 ` commonprivate.properties ` 文件来关闭内存检查,配置如下:
219
219
220
220
``` shell
221
221
memCheck.enabled=false
0 commit comments