该文章是基于 Hadoop2.7.6_01_部署 、 Hive-1.2.1_01_安装部署 进行的
1. 前言
在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架,如图所示:
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/
使用admin登录之后
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
2、上传zip包
3、启动执行该job
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包中
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文件
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文件
3、通过azkaban的web管理平台创建project并上传job压缩包
4、启动执行该job
部分截图如下
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文件
3、通过azkaban的web管理平台创建project并上传job压缩包
4、启动执行该job