azkaban:
========================
工作流调度器
crontab:
Linux自带定时任务
azkaban:
轻量级工作流调度器
linkedIn
oozie:
复杂任务调度器,重量级
apache
本地log ===> MR程序数据清洗 ====> load hive ===> hql ===> hdfs
job job job job
ETL:
Extract Transform Load
抽取 转换 加载
调度工具使用:
=======================
1、在本地编写job
oozie:xml
azkaban:text k=v
2、将job进行打包,并通过web页面提交到调度执行器
3、调度执行器执行调度任务
azkaban安装:
========================
阶段一:初始化azkaban
1、创建/soft/azkaban文件夹
2、将azkaban-web-server-3.46.0.tar.gz
azkaban-exec-server-3.46.0.tar.gz
解压到/soft/azkaban下
tar -xzvf azkaban-web-server-3.46.0.tar.gz -C /soft/azkaban
tar -xzvf azkaban-exec-server-3.46.0.tar.gz -C /soft/azkaban
3、将create-all-sql-3.46.0.sql放在/soft/azkaban下
4、进入mysql并创建数据库
mysql -uroot -p
mysql> create database azkaban
5、使用source命令运行sql脚本(mysql 命令行)
mysql> use azkaban;
mysql> source /soft/azkaban/create-all-sql-3.46.0.sql
azkaban初始化完成
阶段二:创建SSL配置
1、 生成SSL秘钥
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
Enter keystore password: //hadoop
Re-enter new password: //hadoop
What is your first and last name?
[Unknown]: //回车
What is the name of your organizational unit?
[Unknown]: //回车
What is the name of your organization?
[Unknown]: //回车
What is the name of your City or Locality?
[Unknown]: //回车
What is the name of your State or Province?
[Unknown]: //回车
What is the two-letter country code for this unit?
[Unknown]: //CN
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN correct?
[no]: //yes
Enter key password for <jetty>
(RETURN if same as keystore password): //回车
2、将当前目录产生的keystore文件复制到/soft/azkaban/azkaban-web-server-3.46.0下
cp keystore /soft/azkaban/azkaban-web-server-3.46.0
至此,SSL配置完成
阶段三:配置文件
1、修改azkaban-web配置文件/soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban.properties
# 默认时区,改为亚洲/上海
default.timezone.id=Asia/Shanghai
#修改数据库信息
database.type=mysql
mysql.port=3306
mysql.host=s101
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
2、修改azkaban-exec配置文件/soft/azkaban/azkaban-exec-server-3.46.0/conf/azkaban.properties
# 默认时区,改为亚洲/上海
default.timezone.id=Asia/Shanghai
#修改数据库信息
database.type=mysql
mysql.port=3306
mysql.host=s101
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
3、修改azkaban-web下的/soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban-users.xml
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<!-- 添加 -->
<user username="admin" password="admin" roles="admin,metrics"/>
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
启动azkaban:
=========================
1、启动azkaban的web服务
/soft/azkaban/azkaban-web-server-3.46.0>$ bin/start-web.sh
2、启动azkaban的exec服务
/soft/azkaban/azkaban-exec-server-3.46.0>$ bin/start-exec.sh
3、将以上编写脚本
/usr/local/bin/azweb.sh:增加执行权限
#!/bin/bash
if [ $# -ne 1 ] ; then echo param must be 1 ; exit ; fi
cmd=$1
cd /soft/azkaban/azkaban-web-server-3.46.0 ;
case $cmd in
start ) bin/start-web.sh ;;
stop ) bin/shutdown-web.sh ;;
* ) echo illegal argument ; exit ;;
esac
echo ================ $cmd azweb ================
/usr/local/bin/azexec.sh:增加执行权限
#!/bin/bash
if [ $# -ne 1 ] ; then echo param must be 1 ; exit ; fi
cmd=$1
cd /soft/azkaban/azkaban-exec-server-3.46.0 ;
case $cmd in
start ) bin/start-exec.sh ;;
stop ) bin/shutdown-exec.sh ;;
* ) echo illegal argument ; exit ;;
esac
echo ================ $cmd azexec ================
4、启动web和exec
azweb.sh start
azexec.sh start
5、打开azkaban的web界面
s101:8081
6、输入用户名和密码
admin
admin
问题1:azkaban的exec进程起不来
原因:conf/global.properties文件不存在
解决:/soft/azkaban/azkaban-exec-server-3.46.0>$ touch conf/global.properties
问题2:azkaban的web进程自动停止
原因:conf/azkaban.properties配置有误
解决:将配置文件中配置信息后的空格或特殊字符全部删除(包括空格)
问题3:azkaban的web进程起不来
原因:未初始化数据库
解决:进入到mysql,输入:
mysql> use azkaban;
mysql> source /soft/azkaban/create-all-sql-3.46.0.sql
问题4:azkaban执行job时提示:请求内存,重试
原因:azkaban在执行时会检查主机内存是否超过3G,否则提示以上
解决:/soft/azkaban/azkaban-exec-server-3.46.0/plugins/jobtypes/commonprivate.properties
添加以下配置
memCheck.enabled=false
azkaban的job创建和使用:
=============================
1、创建单一job:command1.job
# command1.job
type=command
command=echo helloworld
2、将job打包
将command1.job打成zip压缩包
3、创建project(web)
在web界面点击create project,输入
name: 关于job的名称
description: job相关信息(不能留空,不能中文)
4、上传job
在project页面点击upload,选择job的zip包并上传
5、执行job
点击execute flow执行job
hive -e hive -e "create table xxx(id int, name string)"
-f hive -f create.hql
create.hql ===> create table xxx(id int, name string)