1. 一、Azkaban概述
  2. Azkaban是一个分布式工作流管理器,在LinkedIn上实现,以解决Hadoop作业依赖性问题。
  3. 我们有需要按顺序运行的工作,从ETL工作到数据分析产品。
  4. 特点:
  5. 1)给用户提供了一个非常友好的可视化界面->web界面
  6. 2)非常方便的上传工作流-》打成压缩包
  7. 3)设置任务间的关系
  8. 4)权限设置-》删库到跑路
  9. 5)模块化
  10. 6)随时停止和启动任务
  11. 7)可以查看日志记录
  12.  
  13. 二、与Oozie对比
  14. Oozie相对比,azkaban是一个轻量级调度工具。
  15. 企业应用的功能并非小众的功能可以使用Azkaban
  16. 1)功能
  17. 两个任务流调度器可以调度使用mr,java,脚本工作流任务
  18. 都可以进行定时调度...
  19. 2)使用
  20. az直接传参
  21. Oozie直接传参,支持EL表达式...
  22. 3)定时
  23. az定时执行任务基于时间
  24. Oozie任务基于时间和数据
  25. 4)资源
  26. az有严格的权限控制
  27. Oozie无严格权限控制
  28.  
  29. 三、Azkaban安装部署
  30. 1、准备工作
  31. 1)快照
  32. 2)上传安装包
  33. Azkaban Web 服务器:azkaban-web-server-2.5.0.tar.gz
  34. Azkaban Excutor 执行服务器:azkaban-executor-server-2.5.0.tar.gz
  35. Azkaban 初始化脚本文件:azkaban-sql-script-2.5.0.tar.gz
  36.  
  37. cd /root/hd
  38. mkdir azkaban
  39. 上传安装包到/root/hd/azkaban目录下
  40. 3)解压重命名
  41. cd /root/hd/azkaban/
  42. 解压
  43. tar -zxvf azkaban-web-server-2.5.0.tar.gz
  44. tar -zxvf azkaban-executor-server-2.5.0.tar.gz
  45. tar -zxvf azkaban-sql-script-2.5.0.tar.gz
  46. 删除安装包
  47. rm -f azkaban-executor-server-2.5.0.tar.gz
  48. rm -f azkaban-web-server-2.5.0.tar.gz
  49. rm -f azkaban-sql-script-2.5.0.tar.gz
  50. 重命名
  51. mv azkaban-executor-2.5.0/ executor
  52. mv azkaban-web-2.5.0/ server
  53. 4)mysqlazkaban脚本导入
  54. create database azkaban;
  55. use azkaban;
  56. source /root/hd/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
  57.  
  58. 2、安装部署
  59. 1)创建SSL(安全连接)配置
  60. 服务器需要一个证书
  61. cd /root/hd/azkaban/server
  62. keytool -keystore keystore -alias jetty -genkey -keyalg RSA
  63.  
  64. [root@hd09-1 server]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
  65. 输入密钥库口令: 123456(密码是看不见的)
  66. 再次输入新口令: 123456
  67. 您的名字与姓氏是什么?
  68. [Unknown]:
  69. 您的组织单位名称是什么?
  70. [Unknown]:
  71. 您的组织名称是什么?
  72. [Unknown]:
  73. 您所在的城市或区域名称是什么?
  74. [Unknown]:
  75. 您所在的省/市/自治区名称是什么?
  76. [Unknown]:
  77. 该单位的双字母国家/地区代码是什么?
  78. [Unknown]: CN
  79. CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN是否正确?
  80. [否]:
  81.  
  82. 输入 <jetty> 的密钥口令 123456
  83. (如果和密钥库口令相同, 按回车):
  84. [root@hd09-1 server]#
  85.  
  86. 2)时间同步设置
  87. 生成时区文件
  88. tzselect生成
  89. 5->9->1->yes
  90.  
  91. 拷贝时区文件
  92. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  93. 集群时间同步
  94. crt中开启交互窗口 发送
  95. sudo date -s '2018-11-29 20:22:39'
  96.  
  97. 3)修改配置文件 azkaban.properties
  98. cd /root/hd/azkaban/server/conf
  99. vi azkaban.properties
  100.  
  101. #Azkaban Personalization Settings
  102. azkaban.name=Test #服务器 UI 名称,用于服务器上方显示的名字
  103. azkaban.label=My Local Azkaban #描述
  104. azkaban.color=#FF3601 #UI 颜色
  105. azkaban.default.servlet.path=/index
  106. web.resource.dir=/root/hd/azkaban/server/web/ #默认根 web 目录
  107. default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国
  108.  
  109. #Azkaban UserManager class
  110. user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类
  111. user.manager.xml.file=/root/hd/azkaban/server/conf/azkaban-users.xml #用户配置
  112.  
  113. #Loader for projects # global 配置文件所在位置
  114. executor.global.properties=/root/hd/azkaban/executor/conf/global.properties
  115. azkaban.project.dir=projects
  116.  
  117. database.type=mysql #数据库类型
  118. mysql.port= #端口号
  119. mysql.host=hd09-1 #数据库连接 IP
  120. mysql.database=azkaban #数据库实例名
  121. mysql.user=root #数据库用户名
  122. mysql.password=root #数据库密码
  123. mysql.numconnections=100 #最大连接数
  124.  
  125. # Velocity dev mode
  126. velocity.dev.mode=false # Jetty 服务器属性
  127.  
  128. # Azkaban Jetty server properties.
  129. jetty.maxThreads=25 #最大线程数
  130. jetty.ssl.port=8443 #Jetty SSL 端口
  131. jetty.port=8081 #Jetty 端口
  132. jetty.keystore=/root/hd/azkaban/server/keystore #SSL 文件名
  133. jetty.password= #SSL 文件密码
  134. jetty.keypassword= #Jetty 主密码 与 keystore 文件相同
  135. jetty.truststore=/root/hd/azkaban/server/keystore #SSL 文件名
  136. jetty.trustpassword= # SSL 文件密码
  137.  
  138. # Azkaban Executor settings # 执行服务器属性
  139. executor.port=12321 #执行服务器端口
  140.  
  141. # mail settings
  142. mail.sender= #发送邮箱
  143. mail.host= #发送邮箱 smtp 地址
  144. job.failure.email= #任务失败时发送邮件的地址
  145. job.success.email= #任务成功时发送邮件的地址
  146.  
  147. lockdown.create.projects=false
  148.  
  149. cache.directory=cache #缓存目录
  150.  
  151. 4)修改配置文件 azkaban-users.xml
  152. vi azkaban-users.xml
  153.  
  154. <azkaban-users>
  155. <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
  156. <user username="metrics" password="metrics" roles="metrics"/>
  157. <user username="admin" password="admin" roles="admin,metrics"/>
  158. <role name="admin" permissions="ADMIN" />
  159. <role name="metrics" permissions="METRICS"/>
  160. </azkaban-users>
  161.  
  162. 5)修改配置文件 azkaban.properties
  163. cd /root/hd/azkaban/executor/conf
  164. vi azkaban.properties
  165.  
  166. #Azkaban
  167. default.timezone.id=Asia/Shanghai #时区
  168.  
  169. # Azkaban JobTypes Plugins #插件配置,插件所在位置
  170. azkaban.jobtype.plugin.dir=/root/hd/azkaban/executor/plugins/jobtypes
  171.  
  172. #Loader for projects
  173. executor.global.properties=/root/hd/azkaban/executor/conf/global.properties
  174. azkaban.project.dir=projects
  175. #数据库设置
  176. database.type=mysql #数据库类型(目前只支持 mysql)
  177. mysql.port=3306 #数据库端口号
  178. mysql.host=hd09-1 #数据库 IP 地址
  179. mysql.database=azkaban #数据库实例名
  180. mysql.user=root #数据库用户名
  181. mysql.password=root #数据库密码
  182. mysql.numconnections=100 #最大连接数
  183.  
  184. # Azkaban Executor settings # 执行服务器配置
  185. executor.maxThreads=50 #最大线程数
  186. executor.port=12321 #端口号(如修改,请与 web 服务中一致)
  187. executor.flow.threads=30 #线程数
  188.  
  189. 6)启动web服务器
  190. cd /root/hd/azkaban/server
  191. bin/azkaban-web-start.sh
  192.  
  193. 7)启动执行器
  194. cd /root/hd/azkaban/executor
  195. bin/azkaban-executor-start.sh
  196.  
  197. 8)访问web
  198. https://hd09-1:8443
  199. 打开谷歌或是火狐浏览器输入https://IP:8443,此处测试的地址是https://hd09-1:8443,此时可能会打不开界面,点击高级
  200. 点击继续前往hd09-1(不安全)
  201. 此时会跳到登录界面,输入在配置文件azkaban-users.xml,中配置的用户名密码admin/admin,点击登录即可
  202.  
  203. 9)配置环境变量
  204. vi /etc/profile 在最后面加上
  205. #Azkaban
  206. export AZKABAN_WEB_HOME=/root/hd/azkaban/server
  207. export AZKABAN_EXE_HOME=/root/hd/azkaban/executor
  208. export PATH=$PATH:$AZKABAN_WEB_HOME/bin:$AZKABAN_EXE_HOME/bin
  209.  
  210. 执行 source /etc/profile 声明环境变量
  211. 此时就可以直接输入
  212. azkaban-web-start.sh
  213. azkaban-executor-start.sh
  214. 启动azkaban了。
  215.  
  216. 四、应用
  217. 下面的#后面的是文件名,把每个任务的文件打成zip压缩包后传到azkaban页面中的project中即可执行任务。
  218. 1command类型单一任务案例
  219. # command.job
  220. type=command
  221. command=echo 'hello world'
  222.  
  223. 2command类型多个任务案例
  224. # f.job
  225. type=command
  226. command=echo 'hello'
  227.  
  228. # b.job
  229. type=command
  230. dependencies=f
  231. command=echo 'world'
  232.  
  233. 3azkaban操作HDFS任务
  234. # hdfs.job
  235. type=command
  236. command=/root/hd/hadoop-2.8.4/bin/hdfs dfs -mkdir /azkaban
  237.  
  238. 4azkaban启动集群任务
  239. # start.job
  240. type=command
  241. command=/root/hd/hadoop-2.8.4/sbin/start-dfs.sh
  242.  
  243. 5azkaban启动MapReduce程序
  244. # wc.job
  245. type=command
  246. command=/root/hd/hadoop-2.8.4/bin/hadoop jar hadoop-mapreduce-examples-2.8.4.jar wordcount /azwc/in /azwc/out
  247.  
  248. 6azkaban启动Hive程序
  249. # hive.job
  250. type=command
  251. command=/root/hd/hive/bin/hive -f 'azhive.sql'
  252.  
  253. # azhive.sql
  254. use default;
  255. drop table aztest;
  256. create table aztest(id int,name string) row format delimited fields terminated by ',';
  257. load data inpath '/azdata/user.txt' into table aztest;
  258. create table azres as select * from aztest;
  259. insert overwrite directory '/azdata/userout' select count(1) from aztest;

Azkaban简介及使用的更多相关文章

  1. Azkaban 简介

    本文简单介绍一下Azkaban及其特点.azkaban是一个开源的任务调度系统,用于负责任务的调度运行(如数据仓库调度),用以替代linux中的crontab. 一.Azkaban是什么? 1.1 A ...

  2. Azkaban简介和使用

    概述 为什么需要工作流调度系统 l 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 l 各任务单元之间存在时间先后及前后依 ...

  3. Azkaban学习之路(一)—— Azkaban 简介

    一.Azkaban 介绍 1.1 背景 一个完整的大数据分析系统,必然由很多任务单元(如数据收集.数据清洗.数据存储.数据分析等)组成,所有的任务单元及其之间的依赖关系组成了复杂的工作流.复杂的工作流 ...

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

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

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

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

  6. Azkaban使用安装文档

    Azkaban使用安装文档 Azkaban简介 Azkaban的是什么 Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程.Az ...

  7. 数据调度组件:基于Azkaban协调时序任务执行

    一.Azkaban概述 1.任务时序 在数据服务的业务场景中,很常见的业务流程就是日志文件经过大数据分析,再向业务输出结果数据:在该过程中会有很多任务需要执行,并且很难精准把握任务执行的结束时间,但是 ...

  8. Azkaban入门(启动一个Simple Example)

    Azkaban简介 azkaban是一个开源的任务调度系统 Azkaban是一套简单的任务调度服务,整体包括三部分webserver.dbserver.executorserver. 开发语言为Jav ...

  9. 【Oozie学习之一】Oozie

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 CM5.4 一.简介Oozie由Cloudera公司贡献给A ...

随机推荐

  1. python 加密方法总结

    MD5 def md5(str): import hashlib m = hashlib.md5() m.update(str) return m.hexdigest() base64 import ...

  2. IIS短文件名泄露漏洞危害及防范方法(转)

    攻击方法(转自http://blog.sina.com.cn/s/blog_64a3795a01017xqt.html) 一直在寻找一种方法,如果我可以使用通配符"*" 和 &qu ...

  3. NSURLErrorDomain Code=-999(转)

    原文:http://www.henishuo.com/nsurlerrordomain-code-999/ 前言 今天有一个线上bug,是分配给提供H5的团队的,但是后台查不出来原因.于是让前端iOS ...

  4. Codeforces 482C Game with Strings(dp+概率)

    题目链接:Codeforces 482C Game with Strings 题目大意:给定N个字符串,如今从中选定一个字符串为答案串,你不知道答案串是哪个.可是能够通过询问来确定, 每次询问一个位置 ...

  5. qt 多点触摸

    http://www.ptrackapp.com/apclassys-notes/embedded-linux-multitouch/ Embedded Linux Multitouch with Q ...

  6. 使用PULL解析XML文件

    转载博文1:http://blog.csdn.net/wangkuifeng0118/article/details/7313241 XmlPull和Sax类似,是基于流(stream)操作文件,然后 ...

  7. JVM与外界通过数据通道进行数据交换

    使用I/O流访问file中的内容. JVM与外界通过数据通道进行数据交换. 分类: 按流分为输入流和输出流: 按传输单位分为字节流和字符流: 还可以分为节点流和过滤流. 节点流:负责数据源和程序之间建 ...

  8. printf 字体颜色打印

    为了给printf着色方便, 我们可以定义一些宏: view plain copy to clipboard print ? #define NONE          "/033[m&qu ...

  9. 清除信号量队列导致zabbix自动关闭

    前几天在海外UCloud机器上部署了一套zabbix proxy和zabbix agentd,可是第二天一大早就收到邮件说zabbix_proxy挂掉了,上去查一下发现两台机器中的一台的proxy和a ...

  10. linux系统命令记录

    系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...