分享

Azkaban2.5工作流调度框架配置方式

levycui 2016-1-5 11:17:11 发表于 安装配置 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 26640
本帖最后由 levycui 于 2016-1-5 11:17 编辑
问题导读:
1、什么是Azkaban,用途是什么?
2、Azkaban Web Server如何部署?
3、Azkaban Executor Server如何部署?




azkaban支持shell、java、mapreduce以及hive的工作流调度,在对这些不同类型任务调度之前需要配置所对应的插件;azkaban整体分为两部分azkaban executor server(负责任务调度的处理)、azkaban web server(提供web ui可视化操作);

目前采用的版本插件均为2.5.0 完整包下载
1、编译
azkaban源码地址:https://github.com/azkaban/azkaban/tree/release-2.5/src
azkaban插件源码地址:https://github.com/azkaban/azkaban-plugins/tree/release-2.5
是用ant来进行编译、打包

2、安装和编译

http://azkaban.github.io/downloads.html下载如下安装包
        azkaban-web-server-2.5.0.tar.gz
        azkaban-executor-server-2.5.0.tar.gz
        azkaban-sql-script-2.5.0.tar.gz
        azkaban-jobtype-2.5.0.tar.gz
        azkaban-hdfs-viewer-2.5.0.tar.gz
        azkaban-jobsummary-2.5.0.tar.gz
        azkaban-reportal-2.5.0.tar.gz

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方面的配置均在这个文件中包括:

        时区的配置:default.timezone.id=Asia/Shanghai
        web所依赖mysql的配置:

[mw_shl_code=applescript,true]        database.type=mysql

        mysql.port=**

        mysql.host=**

        mysql.database=**

        mysql.user=**

        mysql.password=**

        mysql.numconnections=**
        jetty的配置

        jetty.maxThreads=**

        jetty.ssl.port=**

        jetty.port=**

        jetty.keystore=keystore

        jetty.password=创建keystore的密码

        jetty.keypassword=azkaban

        jetty.truststore=创建keystore的密码

        jetty.trustpassword=创建keystore的密码
        邮件的配置
        mail.sender=
        mail.host=
        mail.user=
        mail.password=
        job.failure.email=
        job.success.email=[/mw_shl_code]
其他配置可默认

6、azkaban-users.xml 配置用户的权限登录账号和密码

7、服务的启动和关闭均在bin目录下命令:

[mw_shl_code=applescript,true]bin/azkaban-web-shutdown.sh

bin/azkaban-web-start.sh[/mw_shl_code]


Azkaban Executor Server的部署

1、解压azkaban-executor-server-2.5.0.tar.gz到安装目录,在lib中自带了mysql-connector-java-5.1.28.jar,如果版本不一致请自行替换。

2、修改配置文件   安装目录/conf/azkaban.properties

    设置时区
    default.timezone.id=Asia/Shanghai
    设置数据库,与Web Server中的数据库设置一致

3、启动/停止服务

         和 web Service类似切到bin的上一目录

         bin/azkaban-executor-shutdown.sh 停止

         bin/azkaban-executor-start.sh 启动

4、插件的安装

进入 安装目录/plugins目录,在该目录下解压azkaban-jobtype- 2.5.0.tar.gz得到目录:azkaban-jobtype-2.5.0。这个目录用来存放之后安装的所有插 件,与Web Server中的viewer目录类似。每次插件的安装配置需要重启Executor Server。

修改 安装目录/plugins/azkaban-jobtype-2.5.0/common.properties,设置hadoop.home和hive.home,与你的环境变量HADOOP_HOME和HIVE_HOME分布保持一致。   

[mw_shl_code=applescript,true]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[/mw_shl_code]


修改 同等目录下的commonprivate.properties:
1、同样需要设置hadoop.home和hive.home、executor.home、 hadoop.lib。
2、设置.classpath
[mw_shl_code=applescript,true]
hive.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}/*[/mw_shl_code]

3、设置权限、代理

[mw_shl_code=applescript,true]# proxy.keytab.location=/home/aa.keytab

# proxy.user=media-sns/111111@qq.COM

azkaban.should.proxy=false//如果为true的话需要进行kerkeros,即注释打开,打开会后报hadoop的gettoken异常

obtain.binary.token=true

obtain.namenode.token=true

obtain.jobtracker.token=true[/mw_shl_code]

hive的安装

修改hive文件夹下的plugin.properties
hive.aux.jars.path=${hive.home}/lib

修改hive文件夹下的private.properties

[mw_shl_code=applescript,true]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
[/mw_shl_code]
上面的${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 是编译完之后的包

3、 使用

azkaban的使用方式是按照job文件描述来进行使用的,使用type来执行执行任务的类型,通过dependencies可以用来连接任务,即dependencies=A,只有A任务执行完了才可以执行改任务

将描述文件和脚本文件打成zip包上传到azkaban所对应的probject中

执行Shell文件:

job文件:
[mw_shl_code=applescript,true]
type=command

command=echo "mr"

command.1=sh mr.sh[/mw_shl_code]


文件目录:

执行Java文件
[mw_shl_code=applescript,true]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}[/mw_shl_code]

如果不指定方法名默认找run()方法去执行 如果没有会报错

如果没有输入输出参数等,可以省略

执行hive

[mw_shl_code=applescript,true]type=hive
user.to.proxy=media-sns
azk.hive.action=execute.query
hive.script=hive.sh[/mw_shl_code]

在hive.sh中写hive的sql

[mw_shl_code=applescript,true]use test;
select * from t_user limit 10;[/mw_shl_code]


执行mr:

可通过shell执行mr任务的命令方式和shell一样

来源:
http://blog.csdn.net/liyantianmin/article/details/46829959

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条