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)