oozie概述:
oozie是基于hadoop的调度器,以xml的形式写调度流程,可以调度mr,pig,hive,shell,jar等等。
主要的功能有
Workflow: 顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个)
Coordinator,定时触发workflow
Bundle Job,绑定多个coordinator
oozie格式:
写一个oozie,有两个是必要的:job.properties 和 workflow.xml(coordinator.xml,bundle.xml)
1.job.properties里定义环境变量
nameNode | hdfs://xxx5:8020 | hdfs地址 |
jobTracker | xxx5:8034 | jobTracker地址 |
queueName | default | oozie队列 |
examplesRoot | examples | 全局目录 |
oozie.usr.system.libpath | true | 是否加载用户lib库 |
oozie.libpath | share/lib/user | 用户lib库 |
oozie.wf.appication.path | ${nameNode}/user/${user.name}/... | oozie流程所在hdfs地址 |
注意:
workflow:oozie.wf.application.path
coordinator:oozie.coord.application.path
bundle:oozie.bundle.application.path
2. Azkaban介绍
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
它有如下功能特点:
· Web用户界面
· 方便上传工作流
· 方便设置任务之间的关系
· 调度工作流
· 认证/授权(权限的工作)
· 能够杀死并重新启动工作流
· 模块化和可插拔的插件机制
· 项目工作区
· 工作流和任务的日志记录和审计
Azkaban安装部署
3.1. 准备工作
Azkaban Web服务器:azkaban-web-server-2.5.0.tar.gz
Azkaban执行服务器:azkaban-executor-server-2.5.0.tar.gz
MySQL数据库
3.2. 安装
将安装文件上传到集群,最好上传到安装 hive、sqoop的机器上,方便命令的执行
3.2.1. azkaban web服务器安装
解压azkaban-web-server-2.5.0.tar.gz
tar –zxvf azkaban-web-server-2.5.0.tar.gz -C /hadoop/azkaban
将解压后的azkaban-web-server-2.5.0重新命名webserver
mv azkaban-web-server-2.5.0 server
3.2.2. azkaban 执行服器安装
解压azkaban-executor-server-2.5.0.tar.gz
tar –zxvf azkaban-executor-server-2.5.0.tar.gz -C /hadoop/azkaban
将解压后的azkaban-executor-server-2.5.0重新命名 executor
mv azkaban-executor-server-2.5.0 executor
###azkaban脚本导入###
解压: azkaban-sql-script-2.5.0.tar.gz
命令:tar –zxvf azkaban-sql-script-2.5.0.tar.gz
将解压后的mysql 脚本,导入到mysql中:
进入mysql
mysql> create database azkaban;
mysql> use azkaban;
mysql> source /hadoop/azkaban/create-all-sql-2.5.0.sql;
3.2.3. 创建SSL配置
命令:keytool -keystore keystore -alias jetty -genkey -keyalg RSA
运行此命令后,会提示输入当前生成 keystor的密码及相应信息,输入的密码请牢记
完成上述工作后,将在当前目录生成 keystore 证书文件,将keystore 考贝到 azkaban web服务器根目录中:cp keystore azkaban/server
3.2.4. 配置文件
注:先配置好服务器节点上的时区
1、先生成时区配置文件Asia/Shanghai,用交互式命令 tzselect 即可
2、拷贝该时区文件,覆盖系统本地时区配置
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3、azkaban web服务器配置
进入azkaban web服务器安装目录 conf目录
修改azkaban.properties文件
1. #Azkaban Personalization Settings
2. azkaban.name=Test #服务器UI名称,用于服务器上方显示的名字
3. azkaban.label=My Local Azkaban #描述
4. azkaban.color=#FF3601 #UI颜色
5. azkaban.default.servlet.path=/index #
6. web.resource.dir=web/ #默认根web目录
7. default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国
8.
9. #Azkaban UserManager class
10. user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类
11. user.manager.xml.file=conf/azkaban-users.xml #用户配置,具体配置参加下文
12.
13. #Loader for projects
14. executor.global.properties=conf/global.properties # global配置文件所在位置
15. azkaban.project.dir=projects
16.
17. database.type=mysql #数据库类型
18. mysql.port=3306 #端口号
19. mysql.host=localhost #数据库连接IP
20. mysql.database=azkaban #数据库实例名
21. mysql.user=root #数据库用户名
22. mysql.password=root #数据库密码
23. mysql.numconnections=100 #最大连接数
24.
25. # Velocity dev mode
26. velocity.dev.mode=false
27. # Jetty服务器属性.
28. jetty.maxThreads=25 #最大线程数
29. jetty.ssl.port=8443 #Jetty SSL端口
30. jetty.port=8081 #Jetty端口
31. jetty.keystore=keystore #SSL文件名
32. jetty.password=123456 #SSL文件密码
33. jetty.keypassword=123456 #Jetty主密码 与 keystore文件相同
34. jetty.truststore=keystore #SSL文件名
35. jetty.trustpassword=123456 # SSL文件密码
36.
37. # 执行服务器属性
38. executor.port=12321 #执行服务器端口
39.
40. # 邮件设置
41. mail.sender=xxxxxxxx@163.com #发送邮箱
42. mail.host=smtp.163.com #发送邮箱smtp地址
43. mail.user=xxxxxxxx #发送邮件时显示的名称
44. mail.password=********** #邮箱密码
45. job.failure.email=xxxxxxxx@163.com #任务失败时发送邮件的地址
46. job.success.email=xxxxxxxx@163.com #任务成功时发送邮件的地址
47. lockdown.create.projects=false #
48. cache.directory=cache #缓存目录
4、azkaban 执行服务器executor配置
进入执行服务器安装目录conf,修改azkaban.properties
1. #Azkaban
2. default.timezone.id=Asia/Shanghai
3.
4. # Azkaban JobTypes 插件配置
5. azkaban.jobtype.plugin.dir=plugins/jobtypes #jobtype 插件所在位置
6.
7. #Loader for projects
8. executor.global.properties=conf/global.properties
9. azkaban.project.dir=projects
10.
11. #数据库设置
12. database.type=mysql #数据库类型(目前只支持mysql)
13. mysql.port=3306 #数据库端口号
14. mysql.host=192.168.20.200 #数据库IP地址
15. mysql.database=azkaban #数据库实例名
16. mysql.user=root #数据库用户名
17. mysql.password=root #数据库密码
18. mysql.numconnections=100 #最大连接数
19.
20. # 执行服务器配置
21. executor.maxThreads=50 #最大线程数
22. executor.port=12321 #端口号(如修改,请与web服务中一致)
23. executor.flow.threads=30 #线程数
5、用户配置
进入azkaban web服务器conf目录,修改azkaban-users.xml
1. <azkaban-users>
2. <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
3. <user username="metrics" password="metrics" roles="metrics"/>
4. <user username="admin" password="admin" roles="admin,metrics" />
5. <role name="admin" permissions="ADMIN" />
6. <role name="metrics" permissions="METRICS"/>
7. </azkaban-users>
3.3. 启动
3.3.1. web服务器
bin/azkaban-web-start.sh
3.3.2. 执行服务器
bin/azkaban-executor-start.sh
启动完成后,在浏览器(建议使用谷歌浏览器)中输入https://服务器IP地址:8443 ,即可访问azkaban服务了.在登录中输入刚才新的户用名及密码,点击 login.