Skip to content

Commit ca7c998

Browse files
committed
优化阅读格式
1 parent ceb868f commit ca7c998

File tree

91 files changed

+4059
-4058
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+4059
-4058
lines changed

notes/Azkaban_Flow_1.0_的使用.md

+23-23
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,24 @@
1414

1515
## 一、简介
1616

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

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

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 的使用
2323

2424
## 二、基本任务调度
2525

2626
### 2.1 新建项目
2727

28-
在Azkaban主界面可以创建对应的项目
28+
在 Azkaban 主界面可以创建对应的项目
2929

3030
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-create-project.png"/> </div>
3131

3232
### 2.2 任务配置
3333

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

3636
```shell
3737
#command.job
@@ -41,27 +41,27 @@ command=echo 'Hello Azkaban!'
4141

4242
### 2.3 打包上传
4343

44-
`Hello-Azkaban.job `打包为`zip`压缩文件:
44+
`Hello-Azkaban.job ` 打包为 `zip` 压缩文件:
4545

4646
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-zip.png"/> </div>
4747

48-
通过Web UI 界面上传:
48+
通过 Web UI 界面上传:
4949

5050
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-upload.png"/> </div>
5151

52-
上传成功后可以看到对应的Flows
52+
上传成功后可以看到对应的 Flows
5353

5454
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-flows.png"/> </div>
5555

5656
### 2.4 执行任务
5757

58-
点击页面上的`Execute Flow`执行任务:
58+
点击页面上的 `Execute Flow` 执行任务:
5959

6060
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-execute.png"/> </div>
6161

6262
### 2.5 执行结果
6363

64-
点击`detail`可以查看到任务的执行日志:
64+
点击 `detail` 可以查看到任务的执行日志:
6565

6666
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-successed.png"/> </div>
6767

@@ -71,7 +71,7 @@ command=echo 'Hello Azkaban!'
7171

7272
### 3.1 依赖配置
7373

74-
这里假设我们有五个任务(TaskA——TaskE),D 任务需要在A,B,C任务执行完成后才能执行,而 E 任务则需要在 D 任务执行完成后才能执行,这种情况下需要使用`dependencies`属性定义其依赖关系。各任务配置如下:
74+
这里假设我们有五个任务(TaskA——TaskE),D 任务需要在 A,B,C 任务执行完成后才能执行,而 E 任务则需要在 D 任务执行完成后才能执行,这种情况下需要使用 `dependencies` 属性定义其依赖关系。各任务配置如下:
7575

7676
**Task-A.job** :
7777

@@ -112,25 +112,25 @@ dependencies=Task-D
112112

113113
### 3.2 压缩上传
114114

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

117117
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-task-abcde-zip.png"/> </div>
118118

119119
### 3.3 依赖关系
120120

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

123123
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-dependencies.png"/> </div>
124124

125125
### 3.4 执行结果
126126

127127
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-task-abcde.png"/> </div>
128128

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

131131
## 四、调度HDFS作业
132132

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

135135
```shell
136136
type=command
@@ -143,7 +143,7 @@ command=/usr/app/hadoop-2.6.0-cdh5.15.2/bin/hadoop fs -ls /
143143

144144
## 五、调度MR作业
145145

146-
MR作业配置
146+
MR 作业配置
147147

148148
```shell
149149
type=command
@@ -163,7 +163,7 @@ type=command
163163
command=/usr/app/hive-1.1.0-cdh5.15.2/bin/hive -f 'test.sql'
164164
```
165165

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

168168
```sql
169169
CREATE DATABASE IF NOT EXISTS hive;
@@ -179,11 +179,11 @@ sal double,
179179
comm double,
180180
deptno int
181181
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
182-
-- 查看emp表的信息
182+
-- 查看 emp 表的信息
183183
desc emp;
184184
```
185185

186-
打包的时候将`job`文件与`sql`文件一并进行打包:
186+
打包的时候将 `job` 文件与 `sql` 文件一并进行打包:
187187

188188
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-hive.png"/> </div>
189189

@@ -193,11 +193,11 @@ desc emp;
193193

194194
## 七、在线修改作业配置
195195

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

198198
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-project-edit.png"/> </div>
199199

200-
在详情页面点击`Eidt`按钮可以进入编辑页面:
200+
在详情页面点击 `Eidt` 按钮可以进入编辑页面:
201201

202202
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-edit.png"/> </div>
203203

@@ -207,15 +207,15 @@ desc emp;
207207

208208
## 附:可能出现的问题
209209

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

212212
```shell
213213
Cannot request memory (Xms 0 kb, Xmx 0 kb) from system for job
214214
```
215215

216216
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-memory.png"/> </div>
217217

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

220220
```shell
221221
memCheck.enabled=false

notes/Azkaban_Flow_2.0_的使用.md

+20-20
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,20 @@
1313

1414
### 1.1 Flow 2.0 的产生
1515

16-
Azkaban 目前同时支持 Flow 1.0 和 Flow2.0 ,但是官方文档上更推荐使用Flow 2.0,因为Flow 1.0会在将来的版本被移除。Flow 2.0的主要设计思想是提供1.0所没有的流级定义。用户可以将属于给定流的所有`job / properties`文件合并到单个流定义文件中,其内容采用YAML语法进行定义,同时还支持在流中再定义流,称为为嵌入流或子流。
16+
Azkaban 目前同时支持 Flow 1.0 和 Flow2.0 ,但是官方文档上更推荐使用 Flow 2.0,因为 Flow 1.0 会在将来的版本被移除。Flow 2.0 的主要设计思想是提供 1.0 所没有的流级定义。用户可以将属于给定流的所有 `job / properties` 文件合并到单个流定义文件中,其内容采用 YAML 语法进行定义,同时还支持在流中再定义流,称为为嵌入流或子流。
1717

1818
### 1.2 基本结构
1919

20-
项目zip将包含多个流YAML文件,一个项目YAML文件以及可选库和源代码。Flow YAML文件的基本结构如下
20+
项目 zip 将包含多个流 YAML 文件,一个项目 YAML 文件以及可选库和源代码。Flow YAML 文件的基本结构如下
2121

22-
+ 每个Flow都在单个YAML文件中定义
22+
+ 每个 Flow 都在单个 YAML 文件中定义
2323
+ 流文件以流名称命名,如:`my-flow-name.flow`
24-
+ 包含DAG中的所有节点
24+
+ 包含 DAG 中的所有节点
2525
+ 每个节点可以是作业或流程;
26-
+ 每个节点 可以拥有 name, type, config, dependsOn 和 nodes sections等属性
27-
+ 通过列出dependsOn列表中的父节点来指定节点依赖性
26+
+ 每个节点 可以拥有 name, type, config, dependsOn 和 nodes sections 等属性
27+
+ 通过列出 dependsOn 列表中的父节点来指定节点依赖性
2828
+ 包含与流相关的其他配置;
29-
+ 当前properties文件中流的所有常见属性都将迁移到每个流YAML文件中的config部分
29+
+ 当前 properties 文件中流的所有常见属性都将迁移到每个流 YAML 文件中的 config 部分
3030

3131
官方提供了一个比较完善的配置样例,如下:
3232

@@ -112,7 +112,7 @@ nodes:
112112
113113
## 二、YAML语法
114114
115-
想要使用 Flow 2.0 进行工作流的配置,首先需要了解YAML 。YAML 是一种简洁的非标记语言,有着严格的格式要求的,如果你的格式配置失败,上传到Azkaban的时候就会抛出解析异常
115+
想要使用 Flow 2.0 进行工作流的配置,首先需要了解 YAML 。YAML 是一种简洁的非标记语言,有着严格的格式要求的,如果你的格式配置失败,上传到 Azkaban 的时候就会抛出解析异常
116116
117117
### 2.1 基本规则
118118
@@ -121,7 +121,7 @@ nodes:
121121
3. 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级;
122122
4. 使用#表示注释 ;
123123
5. 字符串默认不用加单双引号,但单引号和双引号都可以使用,双引号表示不需要对特殊字符进行转义;
124-
6. YAML中提供了多种常量结构,包括:整数,浮点数,字符串,NULL,日期,布尔,时间。
124+
6. YAML 中提供了多种常量结构,包括:整数,浮点数,字符串,NULL,日期,布尔,时间。
125125
126126
### 2.2 对象的写法
127127
@@ -159,28 +159,28 @@ key:
159159
支持单引号和双引号,但双引号不会对特殊字符进行转义:
160160

161161
```yaml
162-
s1: '内容\n字符串'
163-
s2: "内容\n字符串"
162+
s1: '内容\n 字符串'
163+
s2: "内容\n 字符串"
164164

165165
转换后:
166-
{ s1: '内容\\n字符串', s2: '内容\n字符串' }
166+
{ s1: '内容\\n 字符串', s2: '内容\n 字符串' }
167167
```
168168

169169
### 2.6 特殊符号
170170

171-
一个YAML文件中可以包括多个文档,使用`---`进行分割。
171+
一个 YAML 文件中可以包括多个文档,使用 `---` 进行分割。
172172

173173
### 2.7 配置引用
174174

175-
Flow 2.0 建议将公共参数定义在`config`下,并通过`${}`进行引用。
175+
Flow 2.0 建议将公共参数定义在 `config` 下,并通过 `${}` 进行引用。
176176

177177

178178

179179
## 三、简单任务调度
180180

181181
### 3.1 任务配置
182182

183-
新建`flow`配置文件:
183+
新建 `flow` 配置文件:
184184

185185
```yaml
186186
nodes:
@@ -190,7 +190,7 @@ nodes:
190190
command: echo "Hello Azkaban Flow 2.0."
191191
```
192192
193-
在当前的版本中,Azkaban同时支持 Flow 1.0 和 Flow 2.0,如果你希望以2.0的方式运行,则需要新建一个`project`文件,指明是使用的是Flow 2.0:
193+
在当前的版本中,Azkaban 同时支持 Flow 1.0 和 Flow 2.0,如果你希望以 2.0 的方式运行,则需要新建一个 `project` 文件,指明是使用的是 Flow 2.0:
194194

195195
```shell
196196
azkaban-flow-version: 2.0
@@ -204,13 +204,13 @@ azkaban-flow-version: 2.0
204204

205205
### 3.3 执行结果
206206

207-
由于在1.0 版本中已经介绍过Web UI的使用,这里就不再赘述。对于1.0和2.0版本,只有配置方式有所不同,其他上传执行的方式都是相同的。执行结果如下:
207+
由于在 1.0 版本中已经介绍过 Web UI 的使用,这里就不再赘述。对于 1.0 和 2.0 版本,只有配置方式有所不同,其他上传执行的方式都是相同的。执行结果如下:
208208

209209
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-simle-result.png"/> </div>
210210

211211
## 四、多任务调度
212212

213-
和1.0给出的案例一样,这里假设我们有五个任务(jobA——jobE), D 任务需要在A,B,C任务执行完成后才能执行,而 E 任务则需要在 D 任务执行完成后才能执行,相关配置文件应如下。可以看到在1.0中我们需要分别定义五个配置文件,而在2.0中我们只需要一个配置文件即可完成配置
213+
和 1.0 给出的案例一样,这里假设我们有五个任务(jobA——jobE), D 任务需要在 A,B,C 任务执行完成后才能执行,而 E 任务则需要在 D 任务执行完成后才能执行,相关配置文件应如下。可以看到在 1.0 中我们需要分别定义五个配置文件,而在 2.0 中我们只需要一个配置文件即可完成配置
214214

215215
```yaml
216216
nodes:
@@ -250,7 +250,7 @@ nodes:
250250

251251
## 五、内嵌流
252252

253-
Flow2.0 支持在一个Flow中定义另一个Flow,称为内嵌流或者子流。这里给出一个内嵌流的示例,其`Flow`配置如下:
253+
Flow2.0 支持在一个 Flow 中定义另一个 Flow,称为内嵌流或者子流。这里给出一个内嵌流的示例,其 `Flow` 配置如下:
254254

255255
```yaml
256256
nodes:
@@ -279,7 +279,7 @@ nodes:
279279
command: echo "This is job A"
280280
```
281281

282-
内嵌流的DAG图如下
282+
内嵌流的 DAG 图如下
283283

284284
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/azkaban-embeded-flow.png"/> </div>
285285

0 commit comments

Comments
 (0)