Azkaban简介及使用
- 一、Azkaban概述
- Azkaban是一个分布式工作流管理器,在LinkedIn上实现,以解决Hadoop作业依赖性问题。
- 我们有需要按顺序运行的工作,从ETL工作到数据分析产品。
- 特点:
- 1)给用户提供了一个非常友好的可视化界面->web界面
- 2)非常方便的上传工作流-》打成压缩包
- 3)设置任务间的关系
- 4)权限设置-》删库到跑路
- 5)模块化
- 6)随时停止和启动任务
- 7)可以查看日志记录
- 二、与Oozie对比
- 和Oozie相对比,azkaban是一个轻量级调度工具。
- 企业应用的功能并非小众的功能可以使用Azkaban。
- 1)功能
- 两个任务流调度器可以调度使用mr,java,脚本工作流任务
- 都可以进行定时调度...
- 2)使用
- az直接传参
- Oozie直接传参,支持EL表达式...
- 3)定时
- az定时执行任务基于时间
- Oozie任务基于时间和数据
- 4)资源
- az有严格的权限控制
- Oozie无严格权限控制
- 三、Azkaban安装部署
- 1、准备工作
- 1)快照
- 2)上传安装包
- Azkaban Web 服务器:azkaban-web-server-2.5.0.tar.gz
- Azkaban Excutor 执行服务器:azkaban-executor-server-2.5.0.tar.gz
- Azkaban 初始化脚本文件:azkaban-sql-script-2.5.0.tar.gz
- cd /root/hd
- mkdir azkaban
- 上传安装包到/root/hd/azkaban目录下
- 3)解压重命名
- cd /root/hd/azkaban/
- 解压
- tar -zxvf azkaban-web-server-2.5.0.tar.gz
- tar -zxvf azkaban-executor-server-2.5.0.tar.gz
- tar -zxvf azkaban-sql-script-2.5.0.tar.gz
- 删除安装包
- rm -f azkaban-executor-server-2.5.0.tar.gz
- rm -f azkaban-web-server-2.5.0.tar.gz
- rm -f azkaban-sql-script-2.5.0.tar.gz
- 重命名
- mv azkaban-executor-2.5.0/ executor
- mv azkaban-web-2.5.0/ server
- 4)mysql中azkaban脚本导入
- create database azkaban;
- use azkaban;
- source /root/hd/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
- 2、安装部署
- 1)创建SSL(安全连接)配置
- 服务器需要一个证书
- cd /root/hd/azkaban/server
- keytool -keystore keystore -alias jetty -genkey -keyalg RSA
- [root@hd09-1 server]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
- 输入密钥库口令: 123456(密码是看不见的)
- 再次输入新口令: 123456
- 您的名字与姓氏是什么?
- [Unknown]:
- 您的组织单位名称是什么?
- [Unknown]:
- 您的组织名称是什么?
- [Unknown]:
- 您所在的城市或区域名称是什么?
- [Unknown]:
- 您所在的省/市/自治区名称是什么?
- [Unknown]:
- 该单位的双字母国家/地区代码是什么?
- [Unknown]: CN
- CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN是否正确?
- [否]: 是
- 输入 <jetty> 的密钥口令 123456
- (如果和密钥库口令相同, 按回车):
- [root@hd09-1 server]#
- 2)时间同步设置
- 生成时区文件
- tzselect生成
- 5->9->1->yes
- 拷贝时区文件
- cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- 集群时间同步
- crt中开启交互窗口 发送
- sudo date -s '2018-11-29 20:22:39'
- 3)修改配置文件 azkaban.properties
- cd /root/hd/azkaban/server/conf
- 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=/root/hd/azkaban/server/web/ #默认根 web 目录
- default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国
- #Azkaban UserManager class
- user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类
- user.manager.xml.file=/root/hd/azkaban/server/conf/azkaban-users.xml #用户配置
- #Loader for projects # global 配置文件所在位置
- executor.global.properties=/root/hd/azkaban/executor/conf/global.properties
- azkaban.project.dir=projects
- database.type=mysql #数据库类型
- mysql.port= #端口号
- mysql.host=hd09-1 #数据库连接 IP
- mysql.database=azkaban #数据库实例名
- mysql.user=root #数据库用户名
- mysql.password=root #数据库密码
- mysql.numconnections=100 #最大连接数
- # Velocity dev mode
- velocity.dev.mode=false # Jetty 服务器属性
- # Azkaban Jetty server properties.
- jetty.maxThreads=25 #最大线程数
- jetty.ssl.port=8443 #Jetty SSL 端口
- jetty.port=8081 #Jetty 端口
- jetty.keystore=/root/hd/azkaban/server/keystore #SSL 文件名
- jetty.password= #SSL 文件密码
- jetty.keypassword= #Jetty 主密码 与 keystore 文件相同
- jetty.truststore=/root/hd/azkaban/server/keystore #SSL 文件名
- jetty.trustpassword= # SSL 文件密码
- # Azkaban Executor settings # 执行服务器属性
- executor.port=12321 #执行服务器端口
- # mail settings
- mail.sender= #发送邮箱
- mail.host= #发送邮箱 smtp 地址
- job.failure.email= #任务失败时发送邮件的地址
- job.success.email= #任务成功时发送邮件的地址
- lockdown.create.projects=false
- cache.directory=cache #缓存目录
- 4)修改配置文件 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>
- 5)修改配置文件 azkaban.properties
- cd /root/hd/azkaban/executor/conf
- vi azkaban.properties
- #Azkaban
- default.timezone.id=Asia/Shanghai #时区
- # Azkaban JobTypes Plugins #插件配置,插件所在位置
- azkaban.jobtype.plugin.dir=/root/hd/azkaban/executor/plugins/jobtypes
- #Loader for projects
- executor.global.properties=/root/hd/azkaban/executor/conf/global.properties
- azkaban.project.dir=projects
- #数据库设置
- database.type=mysql #数据库类型(目前只支持 mysql)
- mysql.port=3306 #数据库端口号
- mysql.host=hd09-1 #数据库 IP 地址
- mysql.database=azkaban #数据库实例名
- mysql.user=root #数据库用户名
- mysql.password=root #数据库密码
- mysql.numconnections=100 #最大连接数
- # Azkaban Executor settings # 执行服务器配置
- executor.maxThreads=50 #最大线程数
- executor.port=12321 #端口号(如修改,请与 web 服务中一致)
- executor.flow.threads=30 #线程数
- 6)启动web服务器
- cd /root/hd/azkaban/server
- bin/azkaban-web-start.sh
- 7)启动执行器
- cd /root/hd/azkaban/executor
- bin/azkaban-executor-start.sh
- 8)访问web
- https://hd09-1:8443
- 打开谷歌或是火狐浏览器输入https://IP:8443,此处测试的地址是https://hd09-1:8443,此时可能会打不开界面,点击高级
- 点击继续前往hd09-1(不安全)
- 此时会跳到登录界面,输入在配置文件azkaban-users.xml,中配置的用户名密码admin/admin,点击登录即可
- 9)配置环境变量
- vi /etc/profile 在最后面加上
- #Azkaban
- export AZKABAN_WEB_HOME=/root/hd/azkaban/server
- export AZKABAN_EXE_HOME=/root/hd/azkaban/executor
- export PATH=$PATH:$AZKABAN_WEB_HOME/bin:$AZKABAN_EXE_HOME/bin
- 执行 source /etc/profile 声明环境变量
- 此时就可以直接输入
- azkaban-web-start.sh
- azkaban-executor-start.sh
- 启动azkaban了。
- 四、应用
- 下面的#后面的是文件名,把每个任务的文件打成zip压缩包后传到azkaban页面中的project中即可执行任务。
- 1、command类型单一任务案例
- # command.job
- type=command
- command=echo 'hello world'
- 2、command类型多个任务案例
- # f.job
- type=command
- command=echo 'hello'
- # b.job
- type=command
- dependencies=f
- command=echo 'world'
- 3、azkaban操作HDFS任务
- # hdfs.job
- type=command
- command=/root/hd/hadoop-2.8.4/bin/hdfs dfs -mkdir /azkaban
- 4、azkaban启动集群任务
- # start.job
- type=command
- command=/root/hd/hadoop-2.8.4/sbin/start-dfs.sh
- 5、azkaban启动MapReduce程序
- # wc.job
- type=command
- command=/root/hd/hadoop-2.8.4/bin/hadoop jar hadoop-mapreduce-examples-2.8.4.jar wordcount /azwc/in /azwc/out
- 6、azkaban启动Hive程序
- # hive.job
- type=command
- command=/root/hd/hive/bin/hive -f 'azhive.sql'
- # azhive.sql
- use default;
- drop table aztest;
- create table aztest(id int,name string) row format delimited fields terminated by ',';
- load data inpath '/azdata/user.txt' into table aztest;
- create table azres as select * from aztest;
- insert overwrite directory '/azdata/userout' select count(1) from aztest;
Azkaban简介及使用的更多相关文章
- Azkaban 简介
本文简单介绍一下Azkaban及其特点.azkaban是一个开源的任务调度系统,用于负责任务的调度运行(如数据仓库调度),用以替代linux中的crontab. 一.Azkaban是什么? 1.1 A ...
- Azkaban简介和使用
概述 为什么需要工作流调度系统 l 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 l 各任务单元之间存在时间先后及前后依 ...
- Azkaban学习之路(一)—— Azkaban 简介
一.Azkaban 介绍 1.1 背景 一个完整的大数据分析系统,必然由很多任务单元(如数据收集.数据清洗.数据存储.数据分析等)组成,所有的任务单元及其之间的依赖关系组成了复杂的工作流.复杂的工作流 ...
- 从源码看Azkaban作业流下发过程
上一篇零散地罗列了看源码时记录的一些类的信息,这篇完整介绍一个作业流在Azkaban中的执行过程,希望可以帮助刚刚接手Azkaban相关工作的开发.测试. 一.Azkaban简介 Azkaban作为开 ...
- Oozie和Azkaban的技术选型和对比
1 两种调度工具功能对比图 下面的表格对上述2种hadoop工作流调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面还是存在区别 特性 ...
- Azkaban使用安装文档
Azkaban使用安装文档 Azkaban简介 Azkaban的是什么 Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程.Az ...
- 数据调度组件:基于Azkaban协调时序任务执行
一.Azkaban概述 1.任务时序 在数据服务的业务场景中,很常见的业务流程就是日志文件经过大数据分析,再向业务输出结果数据:在该过程中会有很多任务需要执行,并且很难精准把握任务执行的结束时间,但是 ...
- Azkaban入门(启动一个Simple Example)
Azkaban简介 azkaban是一个开源的任务调度系统 Azkaban是一套简单的任务调度服务,整体包括三部分webserver.dbserver.executorserver. 开发语言为Jav ...
- 【Oozie学习之一】Oozie
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 CM5.4 一.简介Oozie由Cloudera公司贡献给A ...
随机推荐
- python 加密方法总结
MD5 def md5(str): import hashlib m = hashlib.md5() m.update(str) return m.hexdigest() base64 import ...
- IIS短文件名泄露漏洞危害及防范方法(转)
攻击方法(转自http://blog.sina.com.cn/s/blog_64a3795a01017xqt.html) 一直在寻找一种方法,如果我可以使用通配符"*" 和 &qu ...
- NSURLErrorDomain Code=-999(转)
原文:http://www.henishuo.com/nsurlerrordomain-code-999/ 前言 今天有一个线上bug,是分配给提供H5的团队的,但是后台查不出来原因.于是让前端iOS ...
- Codeforces 482C Game with Strings(dp+概率)
题目链接:Codeforces 482C Game with Strings 题目大意:给定N个字符串,如今从中选定一个字符串为答案串,你不知道答案串是哪个.可是能够通过询问来确定, 每次询问一个位置 ...
- qt 多点触摸
http://www.ptrackapp.com/apclassys-notes/embedded-linux-multitouch/ Embedded Linux Multitouch with Q ...
- 使用PULL解析XML文件
转载博文1:http://blog.csdn.net/wangkuifeng0118/article/details/7313241 XmlPull和Sax类似,是基于流(stream)操作文件,然后 ...
- JVM与外界通过数据通道进行数据交换
使用I/O流访问file中的内容. JVM与外界通过数据通道进行数据交换. 分类: 按流分为输入流和输出流: 按传输单位分为字节流和字符流: 还可以分为节点流和过滤流. 节点流:负责数据源和程序之间建 ...
- printf 字体颜色打印
为了给printf着色方便, 我们可以定义一些宏: view plain copy to clipboard print ? #define NONE "/033[m&qu ...
- 清除信号量队列导致zabbix自动关闭
前几天在海外UCloud机器上部署了一套zabbix proxy和zabbix agentd,可是第二天一大早就收到邮件说zabbix_proxy挂掉了,上去查一下发现两台机器中的一台的proxy和a ...
- linux系统命令记录
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...