Azkaban:最受欢迎的工作流定时调度器

1、理论基础 

1、azkaban是什么?
    azkaban是一个工作流定时调度器,可以解决hadoop jobs的作业依赖问题,使相互依赖的job按顺序执行。

2、azkaban的特点?
    a.兼容所有版本的hadoop。
        这一点与oozie不同,oozie严格依赖hadoop的版本。
    b.易于使用的web页面。
        比oozie功能更强大,更好使用。
    c.丰富的工作流类型并支持自定义。
    d.安全的认证及权限控制。
    e.配置电子邮件提醒。

3、azkaban的基础架构
    web server:
        工作流系统的主要管理者。
        负责用户登录认证,project管理,定时调度,监控等功能。
    executor server:
        负责工作流的提交和执行,通过mysql来协调任务的执行。
    mysql:
        存储大部分执行流的状态,web server和executor server都需要访问mysql。


4、使用步骤
    a.以配置文件的形式定义好工作流。
    b.通过web页面上传到azkaban上,配置文件存储在mysql中。
    c.配置定时调度。
    d.达到调度时间节点,executor server到mysql中读取配置文件,然后将数据下载到本地。
    f.executor server开始执行工作流,并将执行的状态信息不断地放入mysql中。web server可以查看状态信息。
    

2、azkaban的部署

1、安装包
    azkaban-web-server-2.5.0.tar.gz
    azkaban-executor-server-2.5.0.tar.gz
    azkaban-sql-script-2.5.0.tar.gz
        #这就是一个sql脚本,全是建语句。azkaban会用到mysql中的一些表,这些表需要手动创建。
    mysql-libs.zip
        
2、安装
    a.创建目录
        mkdir -p /opt/apps/azkaban && mkdir  /opt/source && cd /opt/source 
    b.解压
        tar -zxvf azkaban-web-server-2.5.0.tar.gz -C ../apps/azkaban 
        tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C ../apps/azkaban
        tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C ../apps/azkaban
    c.改名
        cd /opt/apps/azkaban && mv azkaban-executor-2.5.0 executor && mv azkaban-web-2.5.0 server
    d.脚本导入
        mysql -uroot -p123456
        mysql>create database azkaban;
        mysql>use azkaban;
        mysql>source /opt/apps/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql;
        mysql>show tables;
            #有15张表。
        

3、生产数字证书和密钥
cd /opt/apps/azkaban/server 
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
	# -keystore  指定存储数字证书和密钥的库的地址(此时为相对路径)
	# -alias	 指定密钥的名字
	# -keyalg    指定生成密钥的算法
	#执行以上命令一路回车(除了确认信息时填y)

    ###查看数字证书和密钥
        [root@node1 server]# keytool -keystore keystore -list
        Enter keystore password:  

        Keystore type: JKS
        Keystore provider: SUN

        Your keystore contains 1 entry

        jetty, Nov 19, 2019, PrivateKeyEntry,    ##私钥
        Certificate fingerprint (SHA1):                 
        0C:96:7C:0D:10:EF:E8:CF:04:C2:D7:B0:FE:C0:A5:D1:38:76:FD:25			##证书(里面有公钥)

4、配置时间同步
    #在使用azkaban之前配置就行,因为azkaban调度任务必须各机器时间同步



5、配置web-server
    vi /opt/apps/azkaban/server/conf/azkaban.properties  修改
        web.resource.dir=/opt/apps/azkaban/server/web
        default.timezone.id=Asia/Shanghai
        user.manager.xml.file=/opt/apps/azkaban/server/conf/azkaban-users.xml
        ##### mysql相关
        mysql.host=node01
        mysql.database=azkaban
        mysql.user=root
        mysql.password=123456
        ####  配置jetty server属性
            ###客户端判断服务器是否可信
        jetty.keystore=/opt/apps/azkaban/server/keystore
        jetty.password=123456
        jetty.keypassword=123456  ##密钥对的密码
            ###服务器判断客户端是否可信
        jetty.truststore=/opt/apps/azkaban/server/keystore
        jetty.trustpassword=123456
        ###邮件设置(暂时不配)
        mail.sender=
        mail.host=
        job.failure.email=
        job.success.email=
        
  vi /opt/apps/azkaban/server/conf/azkaban-user.xml 添加如下内容    
        
            ##网页UI通过该用户名和密码访问

6、配置executor-server
    vi /opt/apps/azkaban/executor/conf/azkaban.properties  修改
        default.timezone.id=Asia/Shanghai
        executor.global.properties=/opt/apps/azkaban/executor/conf/global.properties
        ##### mysql相关
        mysql.host=node01
        mysql.database=azkaban
        mysql.user=root
        mysql.password=123456

7、启动azkaban
    启动server:
        cd /opt/apps/azkaban/server && bin/azkaban-web-start.sh
    启动executor:
        cd /opt/apps/azkaban/executor && bin/azkaban-executor-start.sh
        #azkaban的进程必须在对应的bin目录下启动,否则启动的日志会在执行启动命令的路径下生成。

    网页访问:
        https://node01:8443
        ##第一次通过网页访问azkaban,必须手动添加https,否则默认通过http访问则会报错。
    关闭azkaban关server即可:
        /opt/apps/azkaban/server/bin/azkaban-web-shutdown.sh


    

4、Azkaban的UI

Azkaban:最受欢迎的工作流定时调度器_第1张图片

 5、第一个简单的工作流

1、Azkaban的任务类型:
    command:shell命令或者shell脚本。
    java:打包上传的java程序。
    

2、第一个azkaban案例
工作流程中每一个工作单元都是一个以“.job”结尾的文件。
    a.vi first.job
        #first.job
        type=command        #指定任务类型,任务类型十command
        command=echo 'this is my first azkaban job'    #command是什么?

    b.将first.job文件打成zip包,必须是zip

    c.在UI上:
        create project(填写工作流名字,备注信息) -->create project(确认创建) 
        -->upload(上传刚刚配置好的配置文件)    -->execute flow(执行工作流)
        -->execute(立即执行)/schedule(定时调度)

 
    

6、调度shell脚本


1、配置文件
vi firstShell.job
    type=command
    command=sh echodate.sh
    ##如果脚本文件在linux上,则command的值为脚本的绝对路径
    ##如果脚本文件在window上,则command的值可以为相对路径,打包时要将脚本文件一起打包
    ##脚本不一定配了权限,加sh执行

2、脚本文件
vi echodate.sh
    date >> /opt/a.txt
    #将当前时间打印到a.txt中

3、将以上两个文件打包成一个.zip上传到网页上
    create project-->create project-->upload-->execute flow-->schedule-->配置调度

7、配置邮件发送

1、关闭azkaban
因为要修改配置文件,所以必须关闭azkaban,关闭时关闭server即可。
关闭命令:
    /opt/apps/azkaban/server/bin/azkaban-web-shutdown.sh

2、修改配置文件
    vi /opt/apps/azkaban/server/conf/azkaban.properties
    # mail settings
    ###修改
    [email protected]        ##发邮件的人
    mail.host=smtp.qq.com                ##邮箱服务器
    ##添加
    [email protected]          ##邮箱用户,配置成和mail.sender即可
    mail.password=trihbzyololabexj       ##邮箱的第三方客户端授权码
        
    

3、启动azkaban
    启动server:
        /opt/apps/azkaban/server/    &&  bin/azkaban-web-start.sh
    启动executor:
        /opt/apps/azkaban/executor/  &&  bin/azkaban-executor-start.sh

4、

8、Azkaban配置多任务工作流

1、假设需要配置的工作流程如下:
                --->jopb2
        job1                  --->job4  
                --->job3
    该工作流程为:job2和job3依赖于job1,job4依赖于job2和job3


2、配置文件如下
first.job
    type=command
    command=echo 'first'

second.job
    type=command
    command=echo 'second'
    dependecies=first

third.job
    type=command
    command=echo 'third'
    dependecies=first

fouth.job
    type=command
    command=echo 'fouth'
    dependecies=second,third


3、将以上四个文件打包成一个zip包,上传执行即可。

 

 

 

 

 

你可能感兴趣的:(Hadoop核心技术)