为什么需要工作流调度系统
 一个完整的数据分析系统通常都是由大量任务单元组成:
shell 脚本程序,java 程序,mapreduce 程序、hive 脚本等
 各任务单元之间存在时间先后及前后依赖关系
 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;
例如,我们可能有这样一个需求,某个业务系统每天产生 20G 原始数据,我们每天都要对
其进行处理,处理步骤如下所示:
1、 通过 Hadoop 先将原始数据同步到 HDFS 上;
2、 借助 MapReduce 计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多
张 Hive 表中;
3、 需要对 Hive 中多个表的数据进行 JOIN 处理,得到一个明细数据 Hive 大表;
4、 将明细数据进行复杂的统计分析,得到结果报表信息;
5、 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

工作流调度实现方式
简单的任务调度:直接使用 linux 的 crontab 来定义;
复杂的任务调度:开发调度平台
或使用现成的开源调度系统,比如 ooize、azkaban 等

常见工作流调度系统
市面上目前有许多工作流调度器
在 hadoop 领域,常见的工作流调度器有 Oozie, Azkaban,Cascading,Hamake 等

Azkaban 介绍

Azkaban 是由 Linkedin 开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定
的顺序运行一组工作和流程。Azkaban 定义了一种 KV 文件格式来建立任务之间的依赖关系,
并提供一个易于使用的 web 用户界面维护和跟踪你的工作流。
它有如下功能特点:
 Web 用户界面
 方便上传工作流
 方便设置任务之间的关系
 调度工作流
 认证/授权(权限的工作)
 能够杀死并重新启动工作流
 模块化和可插拔的插件机制
 项目工作区
 工作流和任务的日志记录和审计

(好了不废话直接干!)

Azkaban 安装部署
准备工作
Azkaban Web 服务器
azkaban-web-server-2.5.0.tar.gz
Azkaban 执行服务器
azkaban-executor-server-2.5.0.tar.gz
MySQL
目前 azkaban 只支持 mysql,需安装 mysql 服务器,本文档中默认已安装好 mysql 服务器,并建
立了 root 用户,密码 root.导入脚本
下载地址:http://azkaban.github.io/downloads.html

链接: https://pan.baidu.com/s/1qZNKqXQ 密码: 3wsz用这几个就行
1.上传到机器上

2.解压

3.这一步随便,只是重命名之后看着舒服而已...

完成后显示如下表

创建 SSL 配置
参考地址: http://docs.codehaus.org/display/JETTY/How+to+configure+SSL
命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
运行此命令后,会提示输入当前生成 keystor 的密码及相应信息,输入的密码请劳记,信息如下:
输入 keystore 密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的州或省份名称是什么?
[Unknown]:
该单位的两字母国家代码是什么
[Unknown]: CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正确吗?
[否]: y
输入<jetty>的主密码
(如果和 keystore 密码相同,按回车):
再次输入新密码:
完成上述工作后,将在当前目录生成 keystore 证书文件,将 keystore 考贝到 azkaban web 服务
器根目录中.如:cp keystore azkaban/server

注:先配置好服务器节点上的时区
1、先生成时区配置文件 Asia/Shanghai,用交互式命令 tzselect 即可

依次输入5 - 9 -1

2、拷贝该时区文件,覆盖系统本地时区配置
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime (这个直接复制进去运行就行了不用修改)

azkaban web 服务器配置
进入 azkaban web 服务器安装目录 conf 目录
 修改 azkaban.properties 文件
命令 vi azkaban.properties

内容说明如下:
#Azkaban Personalization Settings
azkaban.name=Test #服务器 UI 名称,用于服务器上方显示的名字
azkaban.label=My Local Azkaban #描述
azkaban.color=#FF3601 #UI 颜色
azkaban.default.servlet.path=/index #
web.resource.dir=web/ #默认根 web 目录
default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国
#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类
user.manager.xml.file=conf/azkaban-users.xml #用户配置,具体配置参加下文(这个路径好像是要绝对路径不然会报错)

#Loader for projects
executor.global.properties=conf/global.properties # global 配置文件所在位置
azkaban.project.dir=projects #
database.type=mysql #数据库类型
mysql.port=3306 #端口号
mysql.host=localhost #数据库连接 IP
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password=root #数据库密码
mysql.numconnections=100 #最大连接数
# Velocity dev mode
velocity.dev.mode=false
# Jetty 服务器属性.
jetty.maxThreads=25 #最大线程数
jetty.ssl.port=8443 #Jetty SSL 端口
jetty.port=8081 #Jetty 端口
jetty.keystore=keystore #SSL 文件名
jetty.password=123456 #SSL 文件密码
jetty.keypassword=123456 #Jetty 主密码 与 keystore 文件相同
jetty.truststore=keystore #SSL 文件名
jetty.trustpassword=123456 # SSL 文件密码
# 执行服务器属性
executor.port=12321 #执行服务器端口
# 邮件设置(不用改就行)
mail.sender=xxxxxxxx@163.com #发送邮箱
mail.host=smtp.163.com #发送邮箱 smtp 地址
mail.user=xxxxxxxx #发送邮件时显示的名称
mail.password=********** #邮箱密码
job.failure.email=xxxxxxxx@163.com #任务失败时发送邮件的地址
job.success.email=xxxxxxxx@163.com #任务成功时发送邮件的地址
lockdown.create.projects=false #
cache.directory=cache #缓存目录

 azkaban 执行服务器 executor 配置
进入执行服务器安装目录 conf,修改 azkaban.properties
vi azkaban.properties
#Azkaban
default.timezone.id=Asia/Shanghai #时区
# Azkaban JobTypes 插件配置
azkaban.jobtype.plugin.dir=plugins/jobtypes #jobtype 插件所在位置
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
#数据库设置
database.type=mysql #数据库类型(目前只支持 mysql)
mysql.port=3306 #数据库端口号
mysql.host=192.168.20.200 #数据库 IP 地址
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password=root #数据库密码
mysql.numconnections=100 菜单 #最大连接数
# 执行服务器配置
executor.maxThreads=50 #最大线程数
executor.port=12321 #端口号(如修改,请与 web 服务中一致)
executor.flow.threads=30 #线程数
 用户配置
进入 azkaban web 服务器 conf 目录,修改 azkaban-users.xml
vi 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>

 配置完毕之后

启动
web 服务器
在 azkaban web 服务器目录下执行启动命令
bin/azkaban-web-start.sh


注:在 web 服务器根目录运行
或者启动到后台
nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &(后台运行,把日志发送到相应的文件夹下就是/tmp/azstd.out的文件夹)
执行服务器
在执行服务器目录下执行启动命令
bin/azkaban-executor-start.sh

注:只能要执行服务器根目录运行

启动完成后,在浏览器(建议使用谷歌浏览器)中输入 https://服务器 IP 地址:8443 ,即可访问
azkaban 服务了.在登录中输入刚才新的户用名及密码,点击 login.
在 URL 前加 https://前缀表明是用 SSL 加密的。 你的电脑与服务器之间收发的信息传输将更
加安全。
Web 服务器启用 SSL 需要获得一个服务器证书并将该证书与要使用 SSL 的服务器绑定。
http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。http
的连接很简单,是无状态的,...
HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议
要比 http 协议安全

之后会进入.

用户密码登录.

为什么是admin呢,因为别忘了我们配置过

进入后:

Azkaban 实战
Azkaba 内置的任务类型支持 command、java
Command 类型单一 job 示例
1、创建 job 描述文件
vi command.job
#command.job
type=command
command=echo 'hello'

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

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

首先创建 project

名字和描述都不能用中文

执行:

HIVE 脚本任务
 创建 job 描述文件和 hive 脚本
Hive 脚本: test.sql
use default;
drop table aztest;
create table aztest(id int,name string) row format delimited fields terminated by ',';
load data inpath '/aztest/hiveinput' into table aztest;
create table azres as select * from aztest;
insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;
Job 描述文件:hivef.job
# hivef.job
type=command
command=/home/hadoop/apps/hive/bin/hive -f 'test.sql'
2、将所有 job 资源文件打到一个 zip 包中
3、在 azkaban 的 web 管理界面创建工程并上传 zip 包
4、启动 job

凄凉的结局....

azkaban(安装配置加实战)的更多相关文章

  1. 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例

    centos7.1下 ZooKeeper 集群安装配置+Python实战范例 下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeepe ...

  2. Azkaban安装配置

    描述: azkaban主要用于离线计算任务的调度 说明: 此处Azkaban选择版本为:3.52.0,部署方式为Cluster模式,即支持多Executor计算节点,目前默认安装方式选择在同一台机器上 ...

  3. 大数据技术之_13_Azkaban学习_Azkaban(阿兹卡班)介绍 + Azkaban 安装部署 + Azkaban 实战

    一 概述1.1 为什么需要工作流调度系统1.2 常见工作流调度系统1.3 各种调度工具特性对比1.4 Azkaban 与 Oozie 对比二 Azkaban(阿兹卡班) 介绍三 Azkaban 安装部 ...

  4. Apache ActiveMQ实战(1)-基本安装配置与消息类型

    ActiveMQ简介 ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信.ActiveMQ使用Apache ...

  5. azkaban编译安装配置文档

    azkaban编译安装配置文档 参考官方文档: http://azkaban.github.io/azkaban/docs/latest/ azkaban的配置文件说明:http://azkaban. ...

  6. keepalived安装配置实战心得(实现高可用保证网络服务不间断)

    keepalived安装配置实战心得(实现高可用保证网络服务不间断) 一.准备2台虚拟机     安装的系统是:centos-release-7-1.1503.el7.centos.2.8.x86_6 ...

  7. 实战:ADFS3.0单点登录系列-ADFS3.0安装配置

    本文为系列第三章,主要讲下ADFS3.0的安装和配置.本文和前面的文章是一个系列,因此有些地方是有前后关联,比如本文中使用的通配符证书就是第二篇讲解的,因此需要连贯的进行阅读. 全文目录如下: 实战: ...

  8. Hadoop实战4:MapR分布式集群的安装配置及shell自动化脚本

    MapR的分布式集群安装过程还是很艰难的,远远没有计划中的简单.本人总结安装配置,由于集群有很多机器,手动每台配置是很累的,编写了一个自动化配置脚本,下面以脚本为主线叙述(脚本并不完善,后续继续完善中 ...

  9. 命令行界面下使用emca安装配置Oracle Database Control实战

    作为命令行忠有用户,server端软件的运维都倾向于使用命令或 脚本完毕,非常讨厌资源占用非常大的GUI.Oracle数据库作为重要的server端软件.其安装运维自然也全然支持纯命令行方式.虽然同一 ...

随机推荐

  1. linux在线添加硬盘、扫盘

    1:查看scsi 硬盘设备[root@web02 ~]# ls /sys/class/scsi_host host0 host1 host2 2:检查本机现有硬盘 [root@web02 ~]# fd ...

  2. (QT)在命令行编译ui文件和程序

    1.新建helloworld_2文件夹,将helloworld里的main.cpp和hellodialog.cpp两个文件复制过来. 2.打开控制台.此时不能用cmd,否则不能出最后的结果(lz在运行 ...

  3. 在Windows上面安装多个Memcached

    在Windows上面安装多个Memcached sc create "memcached Server3" start= auto binPath= "D:\memcac ...

  4. POJ 2739 Sum of Consecutive Prime Numbers(素数)

    POJ 2739 Sum of Consecutive Prime Numbers(素数) http://poj.org/problem? id=2739 题意: 给你一个10000以内的自然数X.然 ...

  5. Datazen图表创建和公布

     Datazen是被微软收购的移动端全平台的数据展现解决方式.此篇主要介绍怎样创建和公布图表. 如前面介绍,Datazen图表的创建和公布是通过Publisher的应用,它是Windows 8应用 ...

  6. Unity 内置Shader变量、辅助函数等

    一:标准库里的常用.cginc文件 HLSLSupport.cginc - (automatically included) Helper macros and definitions for cro ...

  7. Import Example Dataset

    Overview The examples in this guide use the restaurants collection in the test database. The followi ...

  8. ThinkPHP5中find()和select()区别

    ThinkPHP5中find()和select()区别 读取数据是指读取数据表中的一行数据(或者关联数据),主要通过find方法完成,例如: 1 2 3 4 $User = M("User& ...

  9. spark scala word2vec 和多层分类感知器在情感分析中的实际应用

    转自:http://www.cnblogs.com/canyangfeixue/p/7227998.html 对于威胁检测算法使用神经网络训练有用!!!TODO待实验 /** * Created by ...

  10. zzulioj--1804--ZY学长的密码(字符串)

    1804: ZY学长的密码 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 140  Solved: 53 SubmitStatusWeb Board ...