欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Azkaban-2.5.0-部署与常见案例

程序员文章站 2022-05-28 22:37:42
该文章是基于 Hadoop2.7.6_01_部署 、 Hive-1.2.1_01_安装部署 进行的 1. 前言 在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态 ......

 

该文章是基于 进行的

 

1. 前言

       在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架,如图所示:

Azkaban-2.5.0-部署与常见案例

 

 

2. 工作流调度器azkaban概述

2.1. 为什么需要工作流调度系统

  •  一个完整的数据分析系统通常都是由大量任务单元组成:

    shell脚本程序,java程序,mapreduce程序、hive脚本等

  • 各任务单元之间存在时间先后及前后依赖关系
  • 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;

 

例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:

1、  通过Hadoop先将原始数据同步到HDFS上;

2、  借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;

3、  需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;

4、  将明细数据进行复杂的统计分析,得到结果报表信息;

5、  需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

 

2.2. 工作流调度实现方式

简单的任务调度:直接使用linux的crontab来定义;

复杂的任务调度:开发调度平台

        或使用现成的开源调度系统,比如ooize、azkaban等

 

2.3. 常见工作流调度系统

市面上目前有许多工作流调度器

在hadoop领域,常见的工作流调度器有Oozie, Azkaban,Cascading,Hamake等

 

2.4. Azkaban与Oozie对比

       对市面上最流行的两种调度器,给出以下详细对比,以供技术选型参考。总体来说,ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器azkaban是很不错的候选对象。

 

详情如下:

  • 功能

       两者均可以调度mapreduce,pig,java,脚本工作流任务

       两者均可以定时执行工作流任务

 

  • 工作流定义

       Azkaban使用Properties文件定义工作流

       Oozie使用XML文件定义工作流

 

  • 工作流传参

       Azkaban支持直接传参,例如${input}

       Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)}

 

  • 定时执行

       Azkaban的定时执行任务是基于时间的

       Oozie的定时执行任务基于时间和输入数据

 

  • 资源管理

       Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作

       Oozie暂无严格的权限控制

 

  • 工作流执行

       Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同一台节点)和multi server mode(executor server和web server可以部署在不同节点)

       Oozie作为工作流服务器运行,支持多用户和多工作流

 

  • 工作流管理

       Azkaban支持浏览器以及ajax方式操作工作流

       Oozie支持命令行、HTTP REST、Java API、浏览器操作工作流

 

 

3. Azkaban介绍

       Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

它有如下功能特点:

  Web用户界面

  方便上传工作流

  方便设置任务之间的关系

  调度工作流

  认证/授权(权限的工作)

  能够杀死并重新启动工作流

  模块化和可插拔的插件机制

  项目工作区

  工作流和任务的日志记录和审计

 

3.1. Azkaban使用MySQL存储state的信息

AzkabanWebServer和AzkabanExecutorServer 都是能够访问MySQL的

 

web server使用DB的原因如下:

Project Management     项目,项目的权限以及上传的文件

Executing Flow State    跟踪执行流,执行程序运行它们

Previous Flow/Jobs       搜索之前的作业和流程执行,以及访问他们的日志文件

Scheduler                    保持预定的工作状态

SLA                            保持所有sla规则

 

executor server使用DB的原因如下:

Access the project         从数据库中检索项目文件

Executing Flows/Jobs   检索和更新 流和正在执行的数据

Logs                            将输出日志存储到作业中并流入到db中

Interflow dependency    如果流在不同的执行器上运行,则它将从DB中获取状态

 

 

4. Azkaban安装部署

       将安装文件上传到集群,最好上传到安装 hive、sqoop的机器上,方便命令的执行

 

准备工作

Azkaban Web服务器

azkaban-web-server-2.5.0.tar.gz

Azkaban执行服务器 

azkaban-executor-server-2.5.0.tar.gz

 

MySQL

azkaban-2.5.0只支持 mysql,需安装mysql服务器,本文档中默认已安装好mysql服务器,下文中会建立 azkaban用户,密码 azkaban.

 

 1 # 相关信息
 2 [yun@mini01 azkaban]$ pwd
 3 /app/software/azkaban
 4 [yun@mini01 azkaban]$ ll
 5 total 22612
 6 -rw-r--r-- 1 yun yun 11157302 May 14 00:59 azkaban-executor-server-2.5.0.tar.gz
 7 -rw-r--r-- 1 yun yun     1928 May 14 00:57 azkaban-sql-script-2.5.0.tar.gz
 8 -rw-r--r-- 1 yun yun 11989669 May 14 00:59 azkaban-web-server-2.5.0.tar.gz
 9 # 解压缩包
10 [yun@mini01 azkaban]$ tar xf azkaban-executor-server-2.5.0.tar.gz 
11 [yun@mini01 azkaban]$ tar xf azkaban-web-server-2.5.0.tar.gz
12 [yun@mini01 azkaban]$ tar xf azkaban-sql-script-2.5.0.tar.gz
13 [yun@mini01 azkaban]$ ll
14 total 22616
15 drwxrwxr-x 2 yun yun     4096 Jul 29 17:02 azkaban-2.5.0
16 drwxrwxr-x 7 yun yun       92 Jul 29 17:02 azkaban-executor-2.5.0
17 -rw-r--r-- 1 yun yun 11157302 May 14 00:59 azkaban-executor-server-2.5.0.tar.gz
18 -rw-r--r-- 1 yun yun     1928 May 14 00:57 azkaban-sql-script-2.5.0.tar.gz
19 drwxrwxr-x 8 yun yun      103 Jul 29 17:02 azkaban-web-2.5.0
20 -rw-r--r-- 1 yun yun 11989669 May 14 00:59 azkaban-web-server-2.5.0.tar.gz

 

4.1. MySQL部署

建库并授权

 1 # 在mini03上操作
 2 # 建库
 3 MariaDB [(none)]> CREATE DATABASE azkaban DEFAULT CHARACTER SET utf8 ;
 4 Query OK, 1 row affected (0.00 sec)
 5 
 6 MariaDB [(none)]> show create database azkaban;
 7 +----------+------------------------------------------------------------------+
 8 | Database | Create Database                                                  |
 9 +----------+------------------------------------------------------------------+
10 | azkaban  | CREATE DATABASE `azkaban` /*!40100 DEFAULT CHARACTER SET utf8 */ |
11 +----------+------------------------------------------------------------------+
12 1 row in set (0.00 sec)
13 
14 MariaDB [(none)]> show databases;
15 +--------------------+
16 | Database           |
17 +--------------------+
18 | information_schema |
19 | azkaban            |
20 | hive               |
21 | mysql              |
22 | performance_schema |
23 | test               |
24 | zhang              |
25 +--------------------+
26 7 rows in set (0.00 sec)
27 
28 # 授权 
29 MariaDB [(none)]> grant all on azkaban.* to azkaban@'%' identified by 'azkaban'; 
30 Query OK, 0 rows affected (0.00 sec)
31 
32 MariaDB [(none)]> 
33 MariaDB [(none)]> flush privileges;
34 Query OK, 0 rows affected (0.00 sec)
35 
36 MariaDB [(none)]> select user,host from mysql.user;
37 +---------+-----------+
38 | user    | host      |
39 +---------+-----------+
40 | azkaban | %         |
41 | hive    | %         |
42 | root    | %         |
43 | root    | 127.0.0.1 |
44 | root    | ::1       |
45 |         | localhost |
46 | root    | localhost |
47 |         | mini03    |
48 | hive    | mini03    |
49 | root    | mini03    |
50 +---------+-----------+
51 10 rows in set (0.00 sec)

 

导入数据

 1 # 在有azkaban的SQL语句机器上操作
 2 [yun@mini01 azkaban-2.5.0]$ pwd
 3 /app/software/azkaban/azkaban-2.5.0
 4 [yun@mini01 azkaban-2.5.0]$ ll
 5 total 88
 6 -rwxr-xr-x 1 yun yun  129 Apr 22  2014 create.active_executing_flows.sql
 7 -rwxr-xr-x 1 yun yun  216 Apr 22  2014 create.active_sla.sql
 8 -rwxr-xr-x 1 yun yun 4694 Apr 22  2014 create-all-sql-2.5.0.sql  # 包含所有库信息
 9 -rwxr-xr-x 1 yun yun  610 Apr 22  2014 create.execution_flows.sql
10 -rwxr-xr-x 1 yun yun  519 Apr 22  2014 create.execution_jobs.sql
11 -rwxr-xr-x 1 yun yun  358 Apr 22  2014 create.execution_logs.sql
12 -rwxr-xr-x 1 yun yun  224 Apr 22  2014 create.project_events.sql
13 -rwxr-xr-x 1 yun yun  227 Apr 22  2014 create.project_files.sql
14 -rwxr-xr-x 1 yun yun  280 Apr 22  2014 create.project_flows.sql
15 -rwxr-xr-x 1 yun yun  285 Apr 22  2014 create.project_permissions.sql
16 -rwxr-xr-x 1 yun yun  294 Apr 22  2014 create.project_properties.sql
17 -rwxr-xr-x 1 yun yun  380 Apr 22  2014 create.projects.sql
18 -rwxr-xr-x 1 yun yun  325 Apr 22  2014 create.project_versions.sql
19 -rwxr-xr-x 1 yun yun  155 Apr 22  2014 create.properties.sql
20 -rwxr-xr-x 1 yun yun  498 Apr 22  2014 create.schedules.sql
21 -rwxr-xr-x 1 yun yun  189 Apr 22  2014 create.triggers.sql
22 -rwxr-xr-x 1 yun yun   22 Apr 22  2014 database.properties
23 -rwxr-xr-x 1 yun yun  671 Apr 22  2014 update-all-sql-2.1.sql
24 -rwxr-xr-x 1 yun yun  156 Apr 22  2014 update-all-sql-2.2.sql
25 -rwxr-xr-x 1 yun yun  395 Apr 22  2014 update.execution_logs.2.1.sql
26 -rwxr-xr-x 1 yun yun   59 Apr 22  2014 update.project_properties.2.1.sql
27 [yun@mini01 azkaban-2.5.0]$ ll /app/software/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql  # 要导入的SQL文件 
28 -rwxr-xr-x 1 yun yun 4694 Apr 22  2014 /app/software/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
29 [yun@mini01 azkaban-2.5.0]$ 
30 [yun@mini01 azkaban-2.5.0]$ mysql -hmini03 -uazkaban -pazkaban
31 Welcome to the MariaDB monitor.  Commands end with ; or \g.
32 Your MariaDB connection id is 4
33 Server version: 5.5.56-MariaDB MariaDB Server
34 
35 Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
36 
37 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
38 
39 MariaDB [(none)]> use azkaban;  # 使用库
40 Database changed
41 MariaDB [azkaban]> source /app/software/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
42 ………………
43 MariaDB [azkaban]> show tables;  
44 +------------------------+
45 | Tables_in_azkaban      |
46 +------------------------+
47 | active_executing_flows |
48 | active_sla             |
49 | execution_flows        |
50 | execution_jobs         |
51 | execution_logs         |
52 | project_events         |
53 | project_files          |
54 | project_flows          |
55 | project_permissions    |
56 | project_properties     |
57 | project_versions       |
58 | projects               |
59 | properties             |
60 | schedules              |
61 | triggers               |
62 +------------------------+
63 15 rows in set (0.00 sec)

 

4.2. azkaban执行服器和web服务器部署

 1 [yun@mini01 azkaban]$ pwd
 2 /app/software/azkaban
 3 [yun@mini01 azkaban]$ ll
 4 total 22616
 5 drwxrwxr-x 2 yun yun     4096 Jul 29 17:02 azkaban-2.5.0
 6 drwxrwxr-x 7 yun yun       92 Jul 29 17:02 azkaban-executor-2.5.0
 7 -rw-r--r-- 1 yun yun 11157302 May 14 00:59 azkaban-executor-server-2.5.0.tar.gz
 8 -rw-r--r-- 1 yun yun     1928 May 14 00:57 azkaban-sql-script-2.5.0.tar.gz
 9 drwxrwxr-x 8 yun yun      103 Jul 29 17:02 azkaban-web-2.5.0
10 -rw-r--r-- 1 yun yun 11989669 May 14 00:59 azkaban-web-server-2.5.0.tar.gz
11 # 先创建/app/azkaban/ 目录
12 [yun@mini01 azkaban]$ cp -a azkaban-executor-2.5.0 /app/azkaban/executor-2.5.0
13 [yun@mini01 azkaban]$ cp -a azkaban-web-2.5.0 /app/azkaban/web-server-2.5.0
14 [yun@mini01 azkaban]$ cd /app/azkaban/
15 [yun@mini01 azkaban]$ ll
16 total 0
17 drwxrwxr-x 7 yun yun  92 Jul 29 17:02 executor-2.5.0
18 drwxrwxr-x 8 yun yun 103 Jul 29 17:02 web-server-2.5.0

 

4.3. 为azkaban创建SSL配置

 1 [yun@mini01 azkaban]$ pwd
 2 /app/azkaban
 3 [yun@mini01 azkaban]$ ll
 4 total 4
 5 drwxrwxr-x 7 yun yun   92 Jul 29 17:02 executor-2.5.0
 6 drwxrwxr-x 8 yun yun  103 Jul 29 17:02 web-server-2.5.0 
 7 [yun@mini01 azkaban]$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA  
 8 Enter keystore password:     # 输入123456
 9 Re-enter new password:       # 输入123456
10 What is your first and last name?
11   [Unknown]:  
12 What is the name of your organizational unit?
13   [Unknown]:  
14 What is the name of your organization?
15   [Unknown]:  
16 What is the name of your City or Locality?
17   [Unknown]:  
18 What is the name of your State or Province?
19   [Unknown]:  
20 What is the two-letter country code for this unit?
21   [Unknown]:  CN
22 Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN correct?
23   [no]:  yes
24 
25 Enter key password for <jetty>
26     (RETURN if same as keystore password):  
27 # 查看生成的keystore 
28 [yun@mini01 azkaban]$ ll
29 total 4
30 drwxrwxr-x 7 yun yun   92 Jul 29 17:02 executor-2.5.0
31 -rw-rw-r-- 1 yun yun 2233 Jul 29 17:46 keystore
32 drwxrwxr-x 8 yun yun  103 Jul 29 17:02 web-server-2.5.0
33 [yun@mini01 azkaban]$ cp -a keystore  web-server-2.5.0/  # 将keystore拷贝到azkaban的web中
34 [yun@mini01 azkaban]$ ll web-server-2.5.0/
35 total 12
36 -rw-r--r-- 1 yun yun  105 Apr 22  2014 azkaban.version
37 drwxr-xr-x 2 yun yun  112 Apr 22  2014 bin
38 drwxr-xr-x 2 yun yun   57 Jul 29 17:02 conf
39 drwxr-xr-x 2 yun yun    6 Apr 22  2014 extlib
40 -rw-rw-r-- 1 yun yun 2233 Jul 29 17:46 keystore
41 drwxr-xr-x 2 yun yun 4096 Jul 29 17:02 lib
42 drwxr-xr-x 2 yun yun    6 Apr 22  2014 plugins
43 drwxr-xr-x 6 yun yun   73 Jul 29 17:02 web

 

4.4. 配置文件

注:先配置好服务器节点上的时区

1、先生成时区配置文件Asia/Shanghai,用交互式命令 tzselect 即可

2、拷贝该时区文件,覆盖系统本地时区配置

1 # 也可以是软连接
2 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  

 

4.4.1. web服务器配置

 1 [yun@mini01 conf]$ pwd
 2 /app/azkaban/web-server-2.5.0/conf
 3 [yun@mini01 conf]$ ll
 4 total 8
 5 -rw-r--r-- 1 yun yun 1007 Jul 29 19:29 azkaban.properties
 6 -rw-r--r-- 1 yun yun  266 Apr 22  2014 azkaban-users.xml
 7 #### azkaban.properties 配置
 8 [yun@mini01 conf]$ vim azkaban.properties 
 9 #Azkaban Personalization Settings
10 azkaban.name=Test  #服务器UI名称,用于服务器上方显示的名字
11 azkaban.label=My Local Azkaban  #描述
12 azkaban.color=#FF3601   #UI颜色
13 azkaban.default.servlet.path=/index
14 web.resource.dir=web/   #默认根web目录
15 default.timezone.id=Asia/Shanghai  #时区
16 
17 #Azkaban UserManager class
18 user.manager.class=azkaban.user.XmlUserManager  #用户权限管理默认类
19 user.manager.xml.file=conf/azkaban-users.xml    #用户配置,具体配置参加下文
20 
21 #Loader for projects
22 executor.global.properties=conf/global.properties  # global配置文件所在位置
23 azkaban.project.dir=projects
24 
25 database.type=mysql
26 mysql.port=3306
27 mysql.host=mini03
28 mysql.database=azkaban
29 mysql.user=azkaban
30 mysql.password=azkaban
31 mysql.numconnections=100   #最大连接数
32 
33 # Velocity dev mode
34 velocity.dev.mode=false
35 
36 # Azkaban Jetty server properties.
37 jetty.maxThreads=25            #最大线程数
38 jetty.ssl.port=8443            #Jetty SSL端口
39 jetty.port=8081                #Jetty端口
40 jetty.keystore=keystore        #SSL文件名
41 jetty.password=123456          #SSL文件密码
42 jetty.keypassword=123456       #Jetty主密码 与 keystore文件相同
43 jetty.truststore=keystore      #SSL文件名
44 jetty.trustpassword=123456     # SSL文件密码
45 
46 # Azkaban Executor settings
47 executor.port=12321            #执行服务器端口
48 
49 # mail settings
50 mail.sender=                   #发送邮箱
51 mail.host=                     #发送邮箱smtp地址
52 job.failure.email=             #任务失败时发送邮件的地址
53 job.success.email=             #任务成功时发送邮件的地址
54 
55 lockdown.create.projects=false
56 
57 cache.directory=cache          #缓存目录
58 
59 ###### azkaban-users.xml 配置
60 [yun@mini01 conf]$ vim azkaban-users.xml 
61 <azkaban-users>
62         <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
63         <user username="metrics" password="metrics" roles="metrics"/>
64         <user username="admin" password="admin" roles="admin,metrics" />
65 
66         <role name="admin" permissions="ADMIN" />
67         <role name="metrics" permissions="METRICS"/>
68 </azkaban-users>

 

4.4.2. executor执行服务器配置

 1 [yun@mini01 conf]$ pwd
 2 /app/azkaban/executor-2.5.0/conf
 3 [yun@mini01 conf]$ vim azkaban.properties 
 4 #Azkaban
 5 default.timezone.id=Asia/Shanghai
 6 
 7 # Azkaban JobTypes Plugins
 8 azkaban.jobtype.plugin.dir=plugins/jobtypes   #jobtype 插件所在位置
 9 
10 #Loader for projects
11 executor.global.properties=conf/global.properties
12 azkaban.project.dir=projects
13 
14 database.type=mysql
15 mysql.port=3306
16 mysql.host=mini03
17 mysql.database=azkaban
18 mysql.user=azkaban
19 mysql.password=azkaban
20 mysql.numconnections=100      #最大连接数
21 
22 # Azkaban Executor settings
23 executor.maxThreads=50        #最大线程数
24 executor.port=12321           #端口号(如修改,请与web服务中一致)
25 executor.flow.threads=30      #线程数

 

4.5. 启动azkaban

       先执行executor,再执行web,避免Web Server会因为找不到执行器启动失败。

 

执行服务器

1 [yun@mini01 executor-2.5.0]$ pwd
2 /app/azkaban/executor-2.5.0
3 [yun@mini01 executor-2.5.0]$ ./bin/azkaban-executor-start.sh  
4 # 或者 nohup ./bin/azkaban-executor-start.sh > azkaban-exec_$(date +%Y%m%d%H%M%S).log & 
5 # 方便查看日志
6 ………………

 

web服务器

1 [yun@mini01 web-server-2.5.0]$ pwd
2 /app/azkaban/web-server-2.5.0
3 [yun@mini01 web-server-2.5.0]$ ./bin/azkaban-web-start.sh  # 日志会自己记录 
4 ………………

 

查看java进程

1 [yun@mini01 executor-2.5.0]$ jps 
2 4083 AzkabanWebServer
3 3988 AzkabanExecutorServer
4 4171 Jps

 

4.6. 浏览器访问

1 https://mini01:8443/ 

Azkaban-2.5.0-部署与常见案例

 

       使用admin登录之后

Azkaban-2.5.0-部署与常见案例

 

 

5. Azkaban实战

       Azkaba内置的任务类型支持command、java

 

5.1. Command类型单一job示例

创建job描述文件

在Windows创建文件 command.job,内容如下

 

command.job

1 #command.job
2 type=command
3 # command=sh hello.sh
4 command=echo 'hello'

 

hello.sh

1 #!/bin/bash
2 echo 'hello World!' > /tmp/azkaban.info

 

将job资源文件打包成zip文件

zip command.job

 

创建project、上传包并执行

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

首先创建project

Azkaban-2.5.0-部署与常见案例

 

2、上传zip包

Azkaban-2.5.0-部署与常见案例

 

3、启动执行该job

Azkaban-2.5.0-部署与常见案例

 

5.2. Command类型多job工作流flow

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

第一个job:foo.job

1 # foo.job
2 type=command
3 command=echo foo

 

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

1 # bar.job
2 type=command
3 dependencies=foo
4 command=echo bar

 

2、将所有job资源文件打到一个zip包中

Azkaban-2.5.0-部署与常见案例

 

3、在azkaban的web管理界面创建工程并上传zip包

4、启动工作流flow

 

5.3. HDFS操作任务

1、创建job描述文件

 

fs_01.job

1 # fs.job
2 type=command
3 command=/app/hadoop/bin/hadoop fs -mkdir -p /azkaban/test03_new

 

fs_02.job

1 # fs.job
2 type=command
3 dependencies=fs_01
4 command=/app/hadoop/bin/hadoop fs -put /app/software/apache-flume-1.8.0-bin.tar.gz /azkaban/test03_new

 

2、将job资源文件打包成zip文件

Azkaban-2.5.0-部署与常见案例

 

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

4、启动执行该job

 

5.4. MAPREDUCE任务

Mr任务依然可以使用command的job类型来执行

1、创建job描述文件,及mr程序jar包(示例中直接使用hadoop自带的example jar)

 

mrwc_01.job

1 # mrwc.job
2 type=command
3 command=/app/hadoop/bin/hadoop fs -mkdir -p /azkaban/wordcount/input

 

mrwc_02.job

1 # mrwc.job
2 type=command
3 dependencies=mrwc_01
4 command=/app/hadoop/bin/hadoop fs -put test.info zhang.info /azkaban/wordcount/input

 

mrwc_03.job

1 # mrwc.job
2 type=command
3 dependencies=mrwc_02
4 command=/app/hadoop/bin/hadoop jar hadoop-mapreduce-examples-2.7.6.jar wordcount /azkaban/wordcount/input /azkaban/wordcount/output

 

test.info

1 111
2 222
3 333
4 444
5 555
6 333
7 222
8 222
9 222

 

zhang.info

1 zxcvbnm
2 asdfghjkl
3 qwertyuiop
4 qwertyuiop
5 111
6 qwertyuiop

 

2、将job资源文件打包成zip文件

Azkaban-2.5.0-部署与常见案例

 

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

4、启动执行该job

 

部分截图如下

Azkaban-2.5.0-部署与常见案例

 

Azkaban-2.5.0-部署与常见案例

 

1 [yun@mini02 ~]$ hadoop fs -cat /azkaban/wordcount/output/part-r-00000
2 111    2
3 222    4
4 333    2
5 444    1
6 555    1
7 asdfghjkl    1
8 qwertyuiop    3
9 zxcvbnm    1

 

5.5. HIVE脚本任务

1、创建job描述文件

 

hivef_01.job

1 # hivef.job
2 type=command
3 command=/app/hadoop/bin/hadoop fs -mkdir -p /aztest/hiveinput

 

hivef_01.job

1 # hivef.job
2 type=command
3 dependencies=hivef_01
4 command=/app/hadoop/bin/hadoop fs -put azkb.dat /aztest/hiveinput

 

hivef_03.job

1 # hivef.job
2 type=command
3 dependencies=hivef_02
4 command=/app/hive/bin/hive -f 'aztest.sql'

 

aztest.sql

1 CREATE DATABASE IF NOT EXISTS azkaban;
2 use azkaban;
3 DROP TABLE IF EXISTS aztest;
4 DROP TABLE IF EXISTS azres;
5 create table aztest(id int,name string) row format delimited fields terminated by ',';
6 load data inpath '/aztest/hiveinput/azkb.dat' into table aztest;
7 create table azres row format delimited fields terminated by '#' as select * from aztest;
8 insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;

 

azkb.dat

1 1,刘晨晨
2 2,王敏
3 3,张立玉
4 4,刘刚

 

2、将job资源文件打包成zip文件

Azkaban-2.5.0-部署与常见案例

 

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

4、启动执行该job