1. Azkaban安装部署

https://azkaban.github.io/azkaban/docs/2.5/

安装Azkaban
) 在/opt/module/目录下创建azkaban目录
[kris@hadoop101 module]$ mkdir azkaban
) 解压azkaban-web-server-2.5..tar.gz、azkaban-executor-server-2.5..tar.gz、azkaban-sql-script-2.5..tar.gz到/opt/module/azkaban目录下
[kris@hadoop101 software]$ tar -zxvf azkaban-web-server-2.5..tar.gz -C /opt/module/azkaban/
[kris@hadoop101 software]$ tar -zxvf azkaban-executor-server-2.5..tar.gz -C /opt/module/azkaban/
[kris@hadoop101 software]$ tar -zxvf azkaban-sql-script-2.5..tar.gz -C /opt/module/azkaban/
) 对解压后的文件重新命名
[kris@hadoop101 azkaban]$ mv azkaban-web-2.5./ server
[kris@hadoop101 azkaban]$ mv azkaban-executor-2.5./ executor
) azkaban脚本导入
进入mysql,创建azkaban数据库,并将解压的脚本导入到azkaban数据库。
[kris@hadoop101 azkaban]$ mysql -uroot -p000000
mysql> create database azkaban;
mysql> use azkaban;
mysql> source /opt/module/azkaban/azkaban-2.5./create-all-sql-2.5..sql
注:source后跟.sql文件,用于批量处理.sql文件中的sql语句。

生成密钥对和证书
Keytool是java数据证书的管理工具,使用户能够管理自己的公/私钥对及相关证书。
-keystore 指定密钥库的名称及位置(产生的各类信息将存在.keystore文件中)
-genkey(或者-genkeypair) 生成密钥对
-alias 为生成的密钥对指定别名,如果没有默认是mykey
-keyalg 指定密钥的算法 RSA/DSA 默认是DSA
1)生成 keystore的密码及相应信息的密钥库

[kris@hadoop101 server]$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么?
[Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]:
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
[否]: y 输入 <jetty> 的密钥口令
(如果和密钥库口令相同, 按回车):
再次输入新口令:
注意:
密钥库的密码至少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等等
密钥库的密码最好和<jetty> 的密钥相同,方便记忆

时间同步配置
先配置好服务器节点上的时区

1) 如果在/usr/share/zoneinfo/这个目录下不存在时区配置文件Asia/Shanghai,就要用 tzselect 生成。

)如果在/usr/share/zoneinfo/这个目录下不存在时区配置文件Asia/Shanghai,就要用 tzselect 生成。[kris@hadoop101 azkaban]$ tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
) Africa
) Americas
) Antarctica
) Arctic Ocean
) Asia
) Atlantic Ocean
) Australia
) Europe
) Indian Ocean
) Pacific Ocean
) none - I want to specify the time zone using the Posix TZ format.
#?
Please select a country.
) Afghanistan ) Israel ) Palestine
) Armenia ) Japan ) Philippines
) Azerbaijan ) Jordan ) Qatar
) Bahrain ) Kazakhstan ) Russia
) Bangladesh ) Korea (North) ) Saudi Arabia
) Bhutan ) Korea (South) ) Singapore
) Brunei ) Kuwait ) Sri Lanka
) Cambodia ) Kyrgyzstan ) Syria
) China ) Laos ) Taiwan
) Cyprus ) Lebanon ) Tajikistan
) East Timor ) Macau ) Thailand
) Georgia ) Malaysia ) Turkmenistan
) Hong Kong ) Mongolia ) United Arab Emirates
) India ) Myanmar (Burma) ) Uzbekistan
) Indonesia ) Nepal ) Vietnam
) Iran ) Oman ) Yemen
) Iraq ) Pakistan
#?
Please select one of the following time zone regions.
) Beijing Time
) Xinjiang Time
#? The following information has been given: China
Beijing Time Therefore TZ='Asia/Shanghai' will be used.
Local time is now: Thu Oct :: CST .
Universal Time is now: Thu Oct :: UTC .
Is the above information OK?
) Yes
) No
#? You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again. Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai
)拷贝该时区文件,覆盖系统本地时区配置
[kris@hadoop101 azkaban]$ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
)集群时间同步(同时发给三个窗口)
[kris@hadoop101 azkaban]$ sudo date -s '2018-10-18 16:39:30'

配置文件
  Web服务器配置

)进入azkaban web服务器安装目录 conf目录,打开azkaban.properties文件
[kris@hadoop101 conf]$ pwd
/opt/module/azkaban/server/conf
[kris@hadoop101 conf]$ vim azkaban.properties
)按照如下配置修改azkaban.properties文件。
#Azkaban Personalization Settings
#服务器UI名称,用于服务器上方显示的名字
azkaban.name=Test
#描述
azkaban.label=My Local Azkaban
#UI颜色
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
#默认web server存放web文件的目录
web.resource.dir=/opt/module/azkaban/server/web/
#默认时区,已改为亚洲/上海 默认为美国
default.timezone.id=Asia/Shanghai #Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
#用户权限管理默认类(绝对路径)
user.manager.xml.file=/opt/module/azkaban/server/conf/azkaban-users.xml #Loader for projects
#global配置文件所在位置(绝对路径)
executor.global.properties=/opt/module/azkaban/executor/conf/global.properties
azkaban.project.dir=projects #数据库类型
database.type=mysql
#端口号
mysql.port=
#数据库连接IP
mysql.host=hadoop101
#数据库实例名
mysql.database=azkaban
#数据库用户名
mysql.user=root
#数据库密码
mysql.password=
#最大连接数
mysql.numconnections= # Velocity dev mode
velocity.dev.mode=false # Azkaban Jetty server properties.
# Jetty服务器属性.
#最大线程数
jetty.maxThreads=
#Jetty SSL端口
jetty.ssl.port=
#Jetty端口
jetty.port=
#SSL文件名(绝对路径)
jetty.keystore=/opt/module/azkaban/server/keystore
#SSL文件密码
jetty.password=
#Jetty主密码与keystore文件相同
jetty.keypassword=
#SSL文件名(绝对路径)
jetty.truststore=/opt/module/azkaban/server/keystore
#SSL文件密码
jetty.trustpassword= # Azkaban Executor settings
executor.port= # mail settings
mail.sender=
mail.host=
job.failure.email=
job.success.email= lockdown.create.projects=false cache.directory=cache
)web服务器用户配置
在azkaban web服务器安装目录 conf目录,按照如下配置修改azkaban-users.xml 文件,增加管理员用户。
[kris@hadoop101 conf]$ vim azkaban-users.xml
<azkaban-users>
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
<user username="metrics" password="metrics" roles="metrics"/>
<user username="admin" password="admin" roles="admin,metrics"/>
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>

执行服务器配置

)进入执行服务器安装目录conf,打开azkaban.properties
[kris@hadoop101 conf]$ pwd
/opt/module/azkaban/executor/conf
[kris@hadoop101 conf]$ vim azkaban.properties
) 按照如下配置修改azkaban.properties文件。
#Azkaban
#时区
default.timezone.id=Asia/Shanghai # Azkaban JobTypes Plugins
#jobtype 插件所在位置
azkaban.jobtype.plugin.dir=plugins/jobtypes #Loader for projects
executor.global.properties=/opt/module/azkaban/executor/conf/global.properties
azkaban.project.dir=projects database.type=mysql
mysql.port=
mysql.host=hadoop102
mysql.database=azkaban
mysql.user=root
mysql.password=
mysql.numconnections= # Azkaban Executor settings
#最大线程数
executor.maxThreads=
#端口号(如修改,请与web服务中一致)
executor.port=
#线程数
executor.flow.threads=

 

①启动executor服务器
在executor服务器目录下执行启动命令
[kris@hadoop101 executor]$ /opt/module/azkaban/executor/bin/azkaban-executor-start.sh
②启动web服务器
在azkaban web服务器目录下执行启动命令
[kris@hadoop101 server]$ /opt/module/azkaban/server/bin/azkaban-web-start.sh
注意:先执行executor,再执行web,避免Web Server会因为找不到执行器启动失败。

jps查看进程
[kris@hadoop101 server]$ jps
AzkabanExecutorServer
Jps
AzkabanWebServer
启动完成后,在浏览器(建议使用谷歌浏览器)中输入https://服务器IP地址:8443,https://hadoop101:8443/即可访问azkaban服务了。
在登录中输入刚才在azkaban-users.xml文件中新添加的户用名及密码,点击 login。

2. azkaban的使用

原生的 Azkaban 支持的plugin类型有以下这些:

  1. command:Linux shell命令行任务
  2. gobblin:通用数据采集工具
  3. hadoopJava:运行hadoopMR任务
  4. java:原生java任务
  5. hive:支持执行hiveSQL
  6. pig:pig脚本任务
  7. spark:spark任务
  8. hdfsToTeradata:把数据从hdfs导入Teradata
  9. teradataToHdfs:把数据从Teradata导入hdfs

具体使用见:  https://www.jianshu.com/p/f2310a5c38c6

action类型:command、java; 每一个工作单元一个文件
${param}, 可以给它传参数
上传时会进行校验

案例1:

第一个文件:firstlog.job
type=command
command=echo 'First'
user.to.proxy=hdfs 第二个文件:secondlog.job
type=command
command=echo 'second'
dependencies=firstlog
user.to.proxy=hdfs 第三个文件:thridlog.job
type=command
command=echo 'third'
dependencies=firstlog
user.to.proxy=hdfs 第四个文件:forthlog.job
type=command
command=echo 'forth'
dependencies=secondlog,thridlog
user.to.proxy=hdfs 第五个文件:fivelog.job
type=command
command=echo 'fifth'
dependencies=forthlog
user.to.proxy=hdfs 第六个文件:sixlog.job
type=command
command=echo 'sixth'
dependencies=forthlog
user.to.proxy=hdfs end文件:
config:
nodes:
- name: end_job
type: noop
dependencies=fivelog,sixlog
user.to.proxy=hdfs

目前,Azkaban上传的工作流文件只支持xxx.zip文件。zip应包含xxx.job运行作业所需的文件和任何文件(文件名后缀必须以.job结尾,否则无法识别)。作业名称在项目中必须是唯一的。

注: 需要添加end.job文件,否则会分成两个流如下图:

添加end.job后:

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

首先创建project

上传zip包

  启动执行该job

点击执行工作流

 执行成功,是绿色的

 可点击查看job日志

 直接再次upload会把之前的工程覆盖掉:

案例二:

public class AzkabanTest {

    public static void main(String[] args) throws IOException {
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream("/opt/module/azkaban/output.txt");
outputStream.write("this is a java progress".getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
outputStream.close();
}
} } 将java程序打成jar包,创建lib目录,将jar放入lib内
[kris@hadoop101 lib]$ ll
总用量 4
-rw-r--r--. 1 kris kris 2441 3月 4 12:55 Azkaban-1.0-SNAPSHOT.jar [kris@hadoop101 jobs]$ cat java.job
type=javaprocess
java.class=com.easylife.azkaban.AzkabanTest
classpath=/opt/module/azkaban/lib/*

 classpath= #linux下的绝对路径
 #也可以是相对路径(将jar包和java.job文件一块压缩)/相当于.job文件即: ./xx.job

type=javaprocess
classpath=./lib/* //先创建lib文件夹里边放jar包;
java.class=com.easylife.test.MyJavaJob
user.to.proxy=hdfs

打成ZIP包上传:

[kris@hadoop101 jobs]$ cat wordcount.txt
aaa aaa aaa
bb bb
cc cc
dd
把它上传到HDFS上,要先创建文件夹/wordcount/input
[kris@hadoop101 jobs]$ cat mapreduce.job
type=command
command=/opt/module/hadoop-2.7./bin/hadoop jar /opt/module/hadoop-2.7./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7..jar wordcount /wordcount/input /wordcount/output 将所有job资源文件打到一个zip包中
[kris@hadoop101 jobs]$ zip mapreduce.zip mapreduce.job
adding: mapreduce.job (deflated %)
[kris@hadoop101 jobs]$ sz mapreduce.zip ##将它下载到windows中

 

 

[kris@hadoop101 jobs]$ cat student.sql
use default;
drop table student;
create table student(id int, name string)
row format delimited fields terminated by '\t';
load data local inpath '/opt/module/datas/student.txt' into table student;
insert overwrite local directory '/opt/module/datas/student'
row format delimited fields terminated by '\t'
select * from student; [kris@hadoop101 jobs]$ cat hive.job
#hive job
type=command
command=/opt/module/hive/bin/hive -f /opt/module/azkaban/jobs/student.sql 将所有job资源文件打到一个zip包中
[kris@hadoop101 jobs]$ zip hive.zip hive.job
adding: hive.job (deflated %)
在azkaban的web管理界面创建工程并上传zip包

邮件通知配置案例

1)修改配置文件

修改server的conf下的azkaban.properties文件

[kris@hadoop101 conf]$ vim /opt/module/azkaban/server/conf/azkaban.properties

# mail settings; 配置要使用哪个邮箱发送
mail.sender=kris18@.com
mail.host=smtp..com
mail.user=kris18@126.com
mail.password=
kris18 #
job.failure.email=
job.success.email=

#重启下:
[kris@hadoop101 azkaban]$ server/bin/azkaban-web-start.sh

在页面上配置要发送给谁:

Azkaban的更多相关文章

  1. 从源码看Azkaban作业流下发过程

    上一篇零散地罗列了看源码时记录的一些类的信息,这篇完整介绍一个作业流在Azkaban中的执行过程,希望可以帮助刚刚接手Azkaban相关工作的开发.测试. 一.Azkaban简介 Azkaban作为开 ...

  2. 初识Azkaban

    先说下hadoop 内置工作流的不足 (1)支持job单一 (2)硬编码 (3)无可视化 (4)无调度机制 (5)无容错机制 在这种情况下Azkaban就出现了 1)Azkaban是什么 Azkaba ...

  3. Azkaban 2.5.0 job type 插件安装

    一.环境及软件 安装环境: 安装目录: /usr/local/ae/ankaban Hadoop 安装目录 export HADOOP_HOME=/usr/local/ae/hadoop-1.2.1 ...

  4. Azkaban 2.5.0 搭建

    一.前言 最近试着参照官方文档搭建 Azkaban,发现文档很多地方有坑,所以在此记录一下. 二.环境及软件 安装环境: 系统环境: ubuntu-12.04.2-server-amd64 安装目录: ...

  5. Hadoop - Azkaban 作业调度

    1.概述 在调度 Hadoop 的相关作业时,有以下几种方式: 基于 Linux 系统级别的 Crontab. Java 应用级别的 Quartz. 第三方的调度系统. 自行开发 Hadoop 应用调 ...

  6. hadoop工作流引擎之azkaban [转]

    介绍 Azkaban是twitter出的一个任务调度系统,操作比Oozie要简单很多而且非常直观,提供的功能比较简单.Azkaban以Flow为执行单元进行定时调度,Flow就是预定义好的由一个或多个 ...

  7. Azkaban遇到的坑-installation Failed.Error chunking

    在使用azkaban做spark作业调度时,在上传zip包时报installation Failed.Error chunking错误,原来是于我们所编写的应用会上传到 MySQL 存储,过大的zip ...

  8. Oozie和Azkaban的技术选型和对比

    1 两种调度工具功能对比图 下面的表格对上述2种hadoop工作流调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面还是存在区别 特性 ...

  9. Harry Potter and the Prisoner of Azkaban

    称号:Harry Potter and the Prisoner of Azkaban 作者:J.K. Rowling 篇幅: 448页 蓝思值:880L 用时:    11天 工具:  有道词典 [ ...

  10. hadoop工作流引擎之azkaban

    Azkaban是twitter出的一个任务调度系统,操作比Oozie要简单很多而且非常直观,提供的功能比较简单.Azkaban以Flow为执行单元进行定时调度,Flow就是预定义好的由一个或多个可存在 ...

随机推荐

  1. kindEditor 富文本编辑器 使用介绍

    第一版:存放位置:  ---->把该创建的文件包放到javaWeb 过程的 WEB_INF 下:如图所示. 第二步:< kindEditor 插件的引用> :JS引用 <scr ...

  2. Confluence 6 安装 Oracle

    如果你还没有在安装可以连接的 Oracle 数据库,请先下载后进行安装.请参考 Oracle 文档 来获取有关安装的指南. 当你设置你的 Oracle 服务器的时候: 字符集 必须使用 AL32UTF ...

  3. MySQL、MongoDB、Redis 数据库之间的区别

    NoSQL 的全称是 Not Only SQL,也可以理解非关系型的数据库,是一种新型的革命式的数据库设计方式,不过它不是为了取代传统的关系型数据库而被设计的,它们分别代表了不同的数据库设计思路. M ...

  4. Mycat实现mysql主从复制(读写分离)

    数据库性能瓶颈主要原因: 随着用户数的增多,带来的是数据库连接的大幅度增长 随着业务体量的增长,表数据量(空间存储的问题)的大幅增长,其中涉及到索引的优化,mysql默认的索引是硬盘级别的,BTREE ...

  5. LeetCode(70): 爬楼梯

    Easy! 题目描述: 假设你正在爬楼梯.需要 n 步你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 ...

  6. cf869C组合计数问题

    如果在两个区域里连点,两个区域内选的点数一定要相等 即a中选出i个点,必须与b中选出i个点相连 连接种类数为  然后我们再来看,如果ab中有两点相连,其中一点再与c相连会出事吗? 很显然不会对答案产生 ...

  7. 解决:sudo: pip: command not found

    1-问题:Ubuntu下执行sudo pip install package-name 出现 sudo: pip: command not found 的问题. 2-原因:编译sudo的时候加入了–w ...

  8. 基础运算符补充,流程控制之if判断/while循环

    常量 常量即指不变的量.在python中没有一个专门 的语法代表常量,程序员约定俗成地用变量名全部被大写代表常量. AGE_OF_OLDBOY = 56 基础运算符补充 1.算术运算 加减乘除+ - ...

  9. IDEA复制项目操作

  10. JS脚本计算从某日凌晨开始,经过了多长时间

    var a = new Date();//获取现在的时间 var d = Date.parse("Mar 25, 2019");//设定网站建立的时间 var t = a.getT ...