目前采用的版本插件均为2.5.0 完整包下载
azkaban源码地址:https://github.com/azkaban/azkaban/tree/release-2.5/src
azkaban插件源码地址:https://github.com/azkaban/azkaban-plugins/tree/release-2.5
是用ant来进行编译、打包
Azkaban Web Server的部署
1、在本地安装mysql数据库,用来存储azkaban任务id、probject等信息的元数据库
2、建表,解压azkaban-sql-script-2.5.0.tar.gz 在创建的数据库中执行create-all-sql-2.5.0.sql文件
3、解压azkaban-web-server-2.5.0.tar.gz,里面带有mysql-connector-java-5.1.28.jar,版本不一致可以更换
4、在解压后的目录下中的conf文件中输入keytool -keystore keystore -alias azkaban -genkey -keyalg RSA ,
在执行该命令后会提示输入密码(建议输入的密码都一样,方便后续配置),这个密码是后续配置jetty时使用的,最后将在当前目录生成 keystore 证书文件,将 keystore 考贝到 azkaban web 目录中。
5、在/conf/azkaban.properties配置:
azkaban的大部分web方面的配置均在这个文件中包括:
database.type=mysql
mysql.port=**
mysql.host=**
mysql.database=**
mysql.user=**
mysql.password=**
mysql.numconnections=**
jetty.maxThreads=**
jetty.ssl.port=**
jetty.port=**
jetty.keystore=keystore
jetty.password=创建keystore的密码
jetty.keypassword=azkaban
jetty.truststore=创建keystore的密码
jetty.trustpassword=创建keystore的密码
6、azkaban-users.xml 配置用户的权限登录账号和密码
7、服务的启动和关闭均在bin目录下命令:
bin/azkaban-web-shutdown.sh
bin/azkaban-web-start.sh
Azkaban Executor Server的部署
1、解压azkaban-executor-server-2.5.0.tar.gz到安装目录,在lib中自带了mysql-connector-java-5.1.28.jar,如果版本不一致请自行替换。
2、修改配置文件 安装目录/conf/azkaban.properties
3、启动/停止服务
和 web Service类似切到bin的上一目录
bin/azkaban-executor-shutdown.sh 停止
bin/azkaban-executor-start.sh 启动
4、插件的安装
hadoop.home=/etc/hadoop
hive.home=/usr/lib/hive
executor.home=/opt/azkaban2/executor //executor所在目录
hadoop.lib=/usr/lib/hadoop //hadoop lib
azkaban.should.proxy=false
ehive.classpath.items=${hive.home}/lib/*,${hive.home}/conf/,${hive.aux.jars.path}/*,${hadoop.lib}/*,${hadoop.lib}/lib/*,${hadoop.lib}/client/*,${hadoop.home}/conf/
hive.classpath.items=${hive.home}/lib/*,${hive.home}/conf/,${hive.aux.jars.path}/*
3、设置权限、代理# proxy.keytab.location=/home/aa.keytab
# proxy.user=media-sns/[email protected]
azkaban.should.proxy=false//如果为true的话需要进行kerkeros,即注释打开,打开会后报hadoop的gettoken异常
obtain.binary.token=true
obtain.namenode.token=true
obtain.jobtracker.token=true
hive的安装jobtype.classpath=${hive.home}/lib/*,${hive.home}/conf,${hive.aux.jars.path}
jobtype.class=azkaban.jobtype.HadoopHiveJob
hive.aux.jars.path=${hive.home}/aux/lib
上面的${hive.home} 均为/common.properties 文件中设置的hive.home 注意:使用官网的jar包会有问题,需要下载源码更改重新编译: azkaban-hadoopsecuritymanager-2.5.0.fix.jar
/plugins/jobtype/src/azkaban/jobtype/HadoopSecureHiveWrapper.java
删除:
if (!ShimLoader.getHadoopShims().usesJobShell()) { } 重新打包编译
jar包清单:
1、/azkaban2/executor/lib
executor/lib.jpg
2、/azkaban2/executor/plugins/azkaban-jobtype-2.5.0/hive hive以及java hadoopjava等都一样
插件jar.jpg
其中的azkaban-hadoopsecuritymanager-2.5.0.fix.jar 是编译完之后的包
azkaban的使用方式是按照job文件描述来进行使用的,使用type来执行执行任务的类型,通过dependencies可以用来连接任务,即dependencies=A,只有A任务执行完了才可以执行改任务
将描述文件和脚本文件打成zip包上传到azkaban所对应的probject中
执行Shell文件:
job文件:
type=command
command=echo "mr"
command.1=sh mr.sh
文件目录:
执行Java文件
type=hadoopJava
job.class=azkaban.jobtype.examples.java.WordCount
classpath=./lib/*,${hadoop.home}/lib/*
main.args=${param.inData} ${param.outData}
Method.run=test();
force.output.overwrite=true
input.path=${param.inData}
output.path=${param.outData}
如果不指定方法名默认找run()方法去执行 如果没有会报错
如果没有输入输出参数等,可以省略
执行hive
type=hive
user.to.proxy=media-sns
azk.hive.action=execute.query
hive.script=hive.sh
在hive.sh中写hive的sql
use test;
select * from t_user limit 10;
目录结构:
执行mr
可通过shell执行mr任务的命令方式和shell一样