Azkaban(工作流调度器)


大数据组件使用 总文章


Azkaban 调度器
1.安装包:
	azkaban-executor-server-2.5.0.tar.gz	azkaban 执行服器
	azkaban-sql-script-2.5.0.tar.gz		azkaban sql脚本
	azkaban-web-server-2.5.0.tar.gz		azkaban web 服务器

2.解压
	mkdir -p /root/azkaban
	cd /root/azkaban
	tar -zxvf azkaban-executor-server-2.5.0.tar.gz
	tar -zxvf azkaban-sql-script-2.5.0.tar.gz
	tar -zxvf azkaban-web-server-2.5.0.tar.gz

3.执行 azkaban-2.5.0 目录下的 SQL脚本:(实际为azkaban-sql-script-2.5.0下的SQL脚本)
	mysql -uroot -padmin
	create database azkaban;
	use azkaban;
	source /root/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql;

4.创建 SSL 配置(https)
	keytool -keystore keystore -alias jetty -genkey -keyalg RSA
	提示设置keystor 的密码,并且输入两次密码:itcast
	完成后将在/root/azkaban目录下生成文件:keystore
	keystore 证书文件,将 keystore 拷贝到 azkaban-web-2.5.0 (azkaban web 服务器)根目录中: cp keystore /root/azkaban/azkaban-web-2.5.0

Azkaban(工作流调度器)_第1张图片

5.在 keystore 所在的 /root/azkaban/azkaban-web-2.5.0 目录下 执行 tzselect命令 进入交互式环境
	1.cd /root/azkaban/azkaban-web-2.5.0
	2.tzselect

Azkaban(工作流调度器)_第2张图片

Azkaban(工作流调度器)_第3张图片

Azkaban(工作流调度器)_第4张图片

6.拷贝该时区文件,覆盖系统本地时区配置:即把 Shanghai文件 覆盖 localtime文件

	命令:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

7.修改 azkaban web 服务器 根目录下的conf目录中的 azkaban.properties 文件:
	1.cd /root/azkaban/azkaban-web-2.5.0/conf
	2.vim azkaban.properties
		azkaban.name=Itcast Axkaban   # 服务器 UI 名称,用于服务器上方显示的名字
		default.timezone.id=Asia/Shanghai  # 默认时区,已改为亚洲/上海 默认为美国 
		mysql.user=root			# MySQL 用户
		mysql.password=admin		# MySQL 密码
		jetty.password=itcast
		jetty.keypassword=itcast
		jetty.trustpassword=itcast


8.修改 azkaban 执行服务器 根目录下的conf目录中的 azkaban.properties 文件:
	1.cd /root/azkaban/azkaban-executor-2.5.0/conf
	2.vim azkaban.properties
		default.timezone.id=Asia/Shanghai
		mysql.database=azkaban
		mysql.user=root
		mysql.password=admin

9.修改 azkaban web 服务器 根目录下的conf目录中的 azkaban-users.xml 文件:
	1.cd /root/azkaban/azkaban-web-2.5.0/conf
	2.增加 管理员用户 vim azkaban-users.xml:
		添加   

Azkaban(工作流调度器)_第5张图片

10.启动 azkaban web 服务器 和 azkaban 执行服务器
	1.启动 azkaban web 服务器,在 azkaban web 服务器目录下执行启动命令: 
		注:在 web 服务器根目录运行
		1.cd /root/azkaban/azkaban-web-2.5.0/bin
		2.chmod 777 azkaban-web-start.sh
		3.cd ..
		4.bin/azkaban-web-start.sh

	2.启动 azkaban 执行服务器,在 azkaban 执行服务器下 执行启动命令:
		注:只能要执行服务器根目录运行 
		1.cd /root/azkaban/azkaban-executor-2.5.0/bin
		2.chmod 777 azkaban-executor-start.sh
		3.cd ..
		4.bin/azkaban-executor-start.sh ./ 
					
	3.如果启动 azkaban web 服务器 或 azkaban 执行服务器 时 出现端口已经被占用的话,解决方式如下:
		1.yum install lsof
		2.此处azkaban web 服务器 的8443端口已经被占用:lsof -i:8443
			COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
			java    4569 root   56u  IPv6 7244465      0t0  TCP *:pcsync-https (LISTEN)
		3.kill -9 4569 
		4.ps aux|grep Azkaban
		5.kill -9 关闭Azkaban相关程序的进程号

	4.启动完成后,在浏览器(建议使用谷歌浏览器)中输入:https://服务器 IP 地址:8443,即可访问 azkaban 服务了。
	  例子:https://192.168.25.100:8443/ 提示当前不安全,则无视,继续点击“继续前往”

	5.在登录中输入 刚才新的用户名及密码( 中所设置),点击 login。

11.azkaban执行调度的例子:
	注意:执行调度之前必须首先启动 azkaban web 服务器 和 azkaban 执行服务器

	1.例子1 
		1.vim command1.job	
			#command.job
			type=command
			command=echo hello

		2.把 command1.job 打包为 command1.zip(必须为zip格式)
		3.进入 https://192.168.25.100:8443/,输入用户名"admin"及密码"admin"
		4.点击“Create Project”,输入Name:command1,Description:command1,再点击“Create Project”。
		5.点击“Upload”,选中 command1.zip 进行上传,再点击“Upload”。
		6.成功创建“Project”后,在“Flow”一栏下点击“Execute”或“run job”即可弹出运行窗口。
		7.弹出的运行窗口中,有“Schedule 定时调度”和“Execute 立即执行”两个按钮(执行调度之前必须首先启动 azkaban web 服务器 和 azkaban 执行服务器)
		8.比如:“Schedule 定时调度”

Azkaban(工作流调度器)_第6张图片

		9.“Execute 立即执行”:立即执行该“Project” 
		10.只要“Project”运行完成之后,便可在“History”一栏下 查看到“Project”的运行是否成功信息
		11.如点击运行成功的“Project”一行,进入该“Project”查看详细运行信息,点击“Job List”一栏下的“Details”选项,
		   即可查看到“Project”运行结果信息和运行日志信息。
		12.此时当前的“Project”显示的运行结果信息和运行日志信息为:
			输入 hello 信息到当前日志信息中,并没有把 hello 信息输出到azkaban 执行服务器下,但azkaban 执行服务器下也有相应的执行信息

	2.例子2 
		1.vim command2.job
			#command.job
			type=command
			command=sh hello.sh

		2.vim hello.sh
			#!/bin/bash
			echo 'hello' > /root/azkabanData/hello.txt

		3.把 command2.job 和 hello.sh 一起打包为 command1.zip(必须为zip格式)
		4.进入 https://192.168.25.100:8443/,输入用户名"admin"及密码"admin"
		5.点击“Create Project”,输入Name:command2,Description:command2,再点击“Create Project”。
		6.点击“Upload”,选中 command2.zip 进行上传,再点击“Upload”。
		7.成功创建“Project”后,在“Flow”一栏下点击“Execute”或“run job”即可弹出运行窗口。
		8.弹出的运行窗口中,有“Schedule 定时调度”和“Execute 立即执行”两个按钮(执行调度之前必须首先启动 azkaban web 服务器 和 azkaban 执行服务器)
		9.比如:“Schedule 定时调度”

Azkaban(工作流调度器)_第7张图片

		10.“Execute 立即执行”:立即执行该“Project” 
		11.只要“Project”运行完成之后,便可在“History”一栏下 查看到“Project”的运行是否成功信息
		12.如点击运行成功的“Project”一行,进入该“Project”查看详细运行信息,点击“Job List”一栏下的“Details”选项,
		   即可查看到“Project”运行结果信息和运行日志信息。
		13.把 'hello' 写入到 /root/azkabanData/hello.txt 文件中

	3.例子3
		1.vim fs.job
			# fs.job
			type=command
			command=/root/hadoop/bin/hadoop fs -mkdir /azakabanData # hadoop根目录下的 /bin/hadoop目录路径
		  注意:此处还需要 启动Hadoop 集群(脚本一键启动),并且还需要同步每台机器的时间(ntpdate ntp6.aliyun.com) 
			1.启动 hdfs 集群:
				cd /root/hadoop/sbin	
				./start-dfs.sh 
			2.启动yarn集群:
				cd /root/hadoop/sbin 
				./start-yarn.sh 
 
		2.把 fs.job 打包为 fs.zip(必须为zip格式)
		3.进入 https://192.168.25.100:8443/,输入用户名"admin"及密码"admin"
		4.点击“Create Project”,输入Name:fs,Description:fs,再点击“Create Project”。
		5.点击“Upload”,选中 fs.job 进行上传,再点击“Upload”。
		6.成功创建“Project”后,在“Flow”一栏下点击“Execute”或“run job”即可弹出运行窗口。
		7.弹出的运行窗口中,有“Schedule 定时调度”和“Execute 立即执行”两个按钮 (执行调度之前必须首先启动 azkaban web 服务器 和 azkaban 执行服务器)
		8.比如:“Schedule 定时调度”

Azkaban(工作流调度器)_第8张图片

 

		9.“Execute 立即执行”:立即执行该“Project” 
		10.只要“Project”运行完成之后,便可在“History”一栏下 查看到“Project”的运行是否成功信息
		11.如点击运行成功的“Project”一行,进入该“Project”查看详细运行信息,点击“Job List”一栏下的“Details”选项,
		   即可查看到“Project”运行结果信息和运行日志信息。
		12.进入 192.168.25.100:50070 即能看到 所创建的“/azakabanData”文件夹

	4.例子4
		itcast.job 依赖于 bar.job,bar.job 依赖于 foo.job。所以会先执行 foo.job,再执行 bar.job ,最后执行 itcast.job。
		1.vim itcast.job
			# itcast.job
			type=command
			dependencies=bar  # itcast.job 依赖于 bar.job
			command=echo itcast
		2.vim bar.job
			# bar.job
			type=command
			dependencies=foo # bar.job 依赖于 foo.job
			command=echo bar
		3.vim foo.job
			# foo.job
			type=command
			command=echo foo

		4.把 itcast.job、bar.job、foo.job 三者一起打包为 foo.zip(必须为zip格式)
		5.进入 https://192.168.25.100:8443/,输入用户名"admin"及密码"admin"
		6.点击“Create Project”,输入Name:foo,Description:foo,再点击“Create Project”。
		7.点击“Upload”,选中 foo.zip 进行上传,再点击“Upload”。
		8.成功创建“Project”后,在“Flow”一栏下点击“Execute”或“run job”即可弹出运行窗口。
		9.弹出的运行窗口中,有“Schedule 定时调度”和“Execute 立即执行”两个按钮(执行调度之前必须首先启动 azkaban web 服务器 和 azkaban 执行服务器)
		10.比如:“Schedule 定时调度”

Azkaban(工作流调度器)_第9张图片

		11.“Execute 立即执行”:立即执行该“Project” 

Azkaban(工作流调度器)_第10张图片

		12.只要“Project”运行完成之后,便可在“History”一栏下 查看到“Project”的运行是否成功信息
		13.如点击运行成功的“Project”一行,进入该“Project”查看详细运行信息,点击“Job List”一栏下的“Details”选项,
		   即可查看到“Project”运行结果信息和运行日志信息。
 
	5.例子5
		1.vim mrpi.job
			# mrpi.job
			type=command
			command=/root/hadoop/bin/hadoop jar hadoop-mapreduce-examples-2.6.1.jar pi 5 5 
			# hadoop根目录下的 /bin/hadoop目录路径。pi 5 5 表示计算计算π值
			# 计算圆周率:cd /root/hadoop/share/hadoop/mapreduce
			# 	      hadoop jar hadoop-mapreduce-examples-2.7.4.jar pi 4 4 
 		  注意:此处还需要 启动Hadoop 集群(脚本一键启动),并且还需要同步每台机器的时间(ntpdate ntp6.aliyun.com) 
			1.启动 hdfs 集群:
				cd /root/hadoop/sbin	
				./start-dfs.sh 
			2.启动yarn集群:
				cd /root/hadoop/sbin 
				./start-yarn.sh 

		2.把 mrpi.job 和 hadoop-mapreduce-examples-2.6.1.jar 一起打包为 mrpi.zip(必须为zip格式)
		3.进入 https://192.168.25.100:8443/,输入用户名"admin"及密码"admin"
		4.点击“Create Project”,输入Name:mrpi,Description:mrpi,再点击“Create Project”。
		5.点击“Upload”,选中 mrpi.zip 进行上传,再点击“Upload”。
		6.成功创建“Project”后,在“Flow”一栏下点击“Execute”或“run job”即可弹出运行窗口。
		7.弹出的运行窗口中,有“Schedule 定时调度”和“Execute 立即执行”两个按钮 (执行调度之前必须首先启动 azkaban web 服务器 和 azkaban 执行服务器)
		8.比如:“Schedule 定时调度”

Azkaban(工作流调度器)_第11张图片

		9.“Execute 立即执行”:立即执行该“Project” 
		10.只要“Project”运行完成之后,便可在“History”一栏下 查看到“Project”的运行是否成功信息
		11.如点击运行成功的“Project”一行,进入该“Project”查看详细运行信息,点击“Job List”一栏下的“Details”选项,
		   即可查看到“Project”运行结果信息和运行日志信息。
 		12.可进入 192.168.25.100:8088/cluster 查看到执行的 mapreduce任务

	5.例子6
		1.vim hivef.job
			# hivef.job
			type=command
			command=/root/hive/bin/hive -f 'test.sql'

		2.test.sql
			use default;
			drop table aztest;
			create table aztest(id int,name string) row format delimited fields terminated by ',';
			load data inpath '/azakabanData/hiveinput' into table aztest;
			create table azres as select id from aztest;  # 此SQL会交由mapreduce程序执行,并且在yarn集群集群中执行,可在 192.168.25.100:8088中查看任务
			insert overwrite directory '/azakabanData/hiveoutput' select count(1) from aztest; 
			# 此SQL会交由mapreduce程序执行,并且在yarn集群集群中执行,可在 192.168.25.100:8088中查看任务

 		  注意:此处还需要 启动Hadoop 集群(脚本一键启动),并且还需要同步每台机器的时间(ntpdate ntp6.aliyun.com) 
			1.启动 hdfs 集群:
				cd /root/hadoop/sbin	
				./start-dfs.sh 
			2.启动yarn集群:
				cd /root/hadoop/sbin 
				./start-yarn.sh 

		3./root/azkabanData/test.txt 结构化数据的文件:
			1,asd
			2,zxc
			3,qwe

		4.把 结构化数据的文件test.txt 放到 /azakabanData/hiveinput 目录下
			hadoop fs -mkdir /azakabanData/hiveinput
			hadoop fs -put /root/azkabanData/test.txt  /azakabanData/hiveinput
 
		5.把 hivef.job 和 test.sql 一起打包为 hivef.zip(必须为zip格式)
		6.进入 https://192.168.25.100:8443/,输入用户名"admin"及密码"admin"
		7.点击“Create Project”,输入Name:hivef,Description:hivef,再点击“Create Project”。
		8.点击“Upload”,选中 hivef.zip 进行上传,再点击“Upload”。
		9.成功创建“Project”后,在“Flow”一栏下点击“Execute”或“run job”即可弹出运行窗口。
		10.弹出的运行窗口中,有“Schedule 定时调度”和“Execute 立即执行”两个按钮 (执行调度之前必须首先启动 azkaban web 服务器 和 azkaban 执行服务器)
		11.比如:“Schedule 定时调度”

Azkaban(工作流调度器)_第12张图片

		12.“Execute 立即执行”:立即执行该“Project” 
		13.只要“Project”运行完成之后,便可在“History”一栏下 查看到“Project”的运行是否成功信息
		14.如点击运行成功的“Project”一行,进入该“Project”查看详细运行信息,点击“Job List”一栏下的“Details”选项,
		   即可查看到“Project”运行结果信息和运行日志信息。
 		15.可进入 192.168.25.100:8088/cluster 查看到执行的 mapreduce任务。
	 	   下面两条SQL会交由mapreduce程序执行,并且在yarn集群集群中执行,可在 192.168.25.100:8088中查看任务
			create table azres as select id from aztest;
			insert overwrite directory '/azakabanData/hiveoutput' select count(1) from aztest;
		16.启动 mysql 版的 Hive,本地路径下启动hive
		   本地连接方式:
				cd /root/hive/bin
				./hive
		17.查看hive数据仓库中的aztest、azres表
			use default;
			show tables;
			select * from aztest;
			select * from azres;
		18.进入 192.168.25.100:50070 查看:
			创建有 /azakabanData/hiveoutput 目录,该目录下还存在记录有“执行select count(1) from aztest; 结果数据”的文件

8.工作流调度器 
	1.工作流调度系统产生背景 
		一个完整的数据分析系统通常都是由大量任务单元组成:shell 脚本程序,java 程序,mapreduce 程序、hive 脚本等。 
		各个任务单元之间存在时间先后依赖关系。 
		为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。

	2.工作流调度实现方式 
		简单的任务调度:直接使用 linux 的 crontab 来定义,但是缺点也是比较明显,无法设置依赖。 
		复杂的任务调度:自主开发调度平台、使用开源调度系统,比如 azkaban、ooize、Zeus 等。 
		其中知名度比较高的是 Apache Oozie, 但是其配置工作流的过程是编写大量的 XML配置,而且代码复杂度比较高,不易于二次开发。  

	3.Azkaban 调度器 
		1.Azkaban 介绍 
			Azkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。
			Azkaban 使用 job 配置文件建立任务之间的依赖关系,并提供一个易于使用的 web 用户界面维护和跟踪你的工作流。 
		2.Azkaban 功能特点: 
			提供功能清晰,简单易用的 Web UI 界面 
			提供 job 配置文件快速建立任务和任务之间的依赖关系 
			提供模块化和可插拔的插件机制,原生支持 command、Java、Hive、Pig、Hadoop 
			基于 Java 开发,代码结构清晰,易于二次开发 

		3.Azkaban 安装部署 
			1.Azkaban 的组成如下:

Azkaban(工作流调度器)_第13张图片

				mysql 服务器:用于存储项目、日志或者执行计划之类的信息 
				web 服务器:使用 Jetty 对外提供 web 服务,使用户可以通过 web 页面方便管理 
				executor 服务器:负责具体的工作流的提交、执行。 

			2.Azkaban 有两种部署方式:solo server mode 和 cluster server mode。
				1.solo server mode(单机模式):
					该模式中 webServer 和 executorServer 运行在同一个进程中,进程名是 AzkabanSingleServer。
					可以使用自带的 H2 数据库或者配置 mysql 数据。该模式适用于小规模的使用。 
 					其实在单机模式中,AzkabanSingleServer 进程只是把 AzkabanWebServer 和 AzkabanExecutorServer 合到一起启动而已。 

				2.cluster server mode(集群模式):
					该模式使用 MySQL 数据库,webServer 和 executorServer 运行在不同进程中,该模式适用于大规模应用。 

			3.安装部署之前的 准备工作 
				1.Azkaban Web 服务器:azkaban-web-server-2.5.0.tar.gz 
				2.Azkaban 执行服务器:azkaban-executor-server-2.5.0.tar.gz 
				3.MySQL:本文档中默认已安装好 mysql 服务器。 
				         下载地址:http://azkaban.github.io/downloads.html
				4.上传安装包 
					将安装包上传到集群,最好上传到安装 hive、sqoop 的机器上,方便命令的执行。 
					新建 azkaban 目录,用于存放 azkaban 运行程序。  

			4.azkaban web 服务器安装 
				1.解压 azkaban-web-server-2.5.0.tar.gz 
				  命令 tar –zxvf azkaban-web-server-2.5.0.tar.gz 
				2.将解压后的 azkaban-web-server-2.5.0 移动到 azkaban 目录中,并重新命名 webserver 
				  命令 mv azkaban-web-server-2.5.0 ../azkaban 
        				       cd ../azkaban 
        				       mv azkaban-web-server-2.5.0  server 

			5.azkaban 执行服器安装 
				1.解压 azkaban-executor-server-2.5.0.tar.gz 
				  命令 tar –zxvf azkaban-executor-server-2.5.0.tar.gz 
				2.将解压后的 azkaban-executor-server-2.5.0 移动到 azkaban 目录中,并重新命名 executor 
				  命令  mv azkaban-executor-server-2.5.0  ../azkaban 
				        cd ../azkaban 
				        mv azkaban-executor-server-2.5.0  executor 

			6.azkaban 脚本导入 
				1.解压 azkaban-sql-script-2.5.0.tar.gz 
				  命令 tar –zxvf azkaban-sql-script-2.5.0.tar.gz 
				2.将解压后的 mysql 脚本,导入到 mysql 中  
				  进入 mysql 
				  	create database azkaban; 
					use azkaban; 
					source /home/hadoop/azkaban-2.5.0/create-all-sql-2.5.0.sql;

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

			8.配置文件 
				1.先配置好服务器节点上的时区 
					先生成时区配置文件 Asia/Shanghai,用交互式命令 tzselect 即可 
					拷贝该时区文件,覆盖系统本地时区配置 
					cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime   
 
				2.azkaban web 服务器配置 
					进入 azkaban web 服务器安装目录 conf 目录,修改 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=hadoop03              	#数据库连接 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 		#执行服务器端口 
  
						# 邮件设置 
						[email protected]       	#发送邮箱 
						mail.host=smtp.163.com           	#发送邮箱 smtp 地址 
						mail.user=xxxxxxxx                	#发送邮件时显示的名称 
						mail.password=**********         	#邮箱密码 
						[email protected]	#任务失败时发送邮件的地址 
						[email protected] 	#任务成功时发送邮件的地址 
						lockdown.create.projects=false                      
						cache.directory=cache            	#缓存目录 

				3.azkaban 执行服务器配置 
					进入执行服务器安装目录 conf,修改 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=azkaban                                   	#数据库用户名 
						mysql.password=oracle                                	#数据库密码 
						mysql.numconnections=100                           	#最大连接数 
  
						# 执行服务器配置 
						executor.maxThreads=50                               	#最大线程数 
						executor.port=12321                                  	#端口号(如修改,请与 web 服务中一致) 
						executor.flow.threads=30                             	#线程数 


				4.用户配置 
					进入 azkaban web 服务器 conf 目录,修改 azkaban-users.xml 
					vi azkaban-users.xml 增加 管理员用户
						 
        							 
        							 
        							 
        							 
        							 
						 

			9.启动 web 服务器 
				1.在 azkaban web 服务器目录下执行启动命令:bin/azkaban-web-start.sh 
				  注:在 web 服务器根目录运行 
				2.执行服务器 
					在执行服务器目录下执行启动命令:bin/azkaban-executor-start.sh ./ 
					注:只能要执行服务器根目录运行 
				3.启动完成后,在浏览器(建议使用谷歌浏览器)中输入 https://服务器 IP 地址:8443,即可访问 azkaban 服务了。
				  在登录中输入刚才新的户用名及密码,点击 login。

		4.Azkaban 实战 
			1.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 压缩包 
					1.首先创建 Project 

Azkaban(工作流调度器)_第14张图片

					2.上传 zip 包

Azkaban(工作流调度器)_第15张图片

					3.启动执行该 job

			2.Command 类型多 job 工作流 flow 
				1.创建有依赖关系的多个 job 描述 
					1.第一个 job:foo.job 
						# foo.job 
						type=command 
						command=echo foo 

					2.第二个 job:bar.job 依赖 foo.job 
						# bar.job 
						type=command 
						dependencies=foo 
						command=echo bar 

					3.将所有 job 资源文件打到一个 zip 包中

					4.在 azkaban 的 web 管理界面创建工程并上传 zip 包 
					5.启动工作流 flow 

			3.HDFS 操作任务 
				1.创建 job 描述文件
					# fs.job 
					type=command 
					command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop fs -mkdir /azaz

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


				3.通过 azkaban 的 web 管理平台创建 project 并上传 job 压缩包 
				4.启动执行该 job 

			4.MAPREDUCE 任务 
				1.mr 任务依然可以使用 command 的 job 类型来执行 
				  创建 job 描述文件,及 mr 程序 jar 包(示例中直接使用 hadoop 自带的 example jar) 
					# mrwc.job 
					type=command 
					command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop 
					jar hadoop-mapreduce-examples-2.6.1.jar wordcount /wordcount/input /wordcount/azout  
				2.将所有 job 资源文件打到一个 zip 包中

				3.在 azkaban 的 web 管理界面创建工程并上传 zip 包 
				4.启动 job 

			5.HIVE 脚本任务
				1.创建 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;

				2.Job 描述文件:hivef.job
					# hivef.job 
					type=command 
					command=/home/hadoop/apps/hive/bin/hive -f 'test.sql' 

				3.将所有 job 资源文件打到一个 zip 包中创建工程并上传 zip 包,启动 job

 

 

 

 

 

你可能感兴趣的:(Azkaban,大数据)