Azkaban简介及安装部署

Azkaban简介及安装部署

简介

1、大数据调度框架

  • 用于实现整个大数据平台所有任务的调度

    • hadoop job
    • spark job
    • linux job
    • flink job
    • impala job
    • hive job
  • 调度类型

    • 定时调度
    • 依赖调度
  • 调度整个完整的工作流

    • 有一系列依赖关系的job,构建成工作流或者任务流:flow

      image-20200817095015346
    • 过程

      • 00:00:00一过:job1和job2开始运行
      • job3与job4必须等到job1和job2运行成功了以后,才能运行
      • job5必须等到job3和job4完成了以后,才能运行
      • job6必须等到job5完成了以后,才能运行
    • 调度的 分类

      • 时间调度:job1,job2
        • 基于时间的调度,只要时间一到,就可以立即执行
      • 依赖调度:必须依赖另外一个任务,之前依赖的任务成功了,当前任务才能执行
        • job3和job4依赖于job1和job2
        • job5依赖于job3和job4
        • job6依赖于job5

2、常用大数据调度框架

  • Oozie:Cloudera公司研发的,捐献给了Apache

    • 功能最强大,设计就非常的复杂

    • 用起来也最复杂,如果不与Hue集成使用,用户体验感特别差,交互特别差

      • 界面特别的low
      • 界面类似于:windows xp
    • 通过xml来开发调度的工作流

      image-20200817095317549
  • Zeus:阿里巴巴开发,但目前Zeus由于阿里巴巴不再维护,Zeus很少看到了

    • 界面相对友好,中文界面

      • 界面类似于:windows7
    • 功能相对一般,能满足大部分大数据的应用场景

    • 通过shell脚本开发

    • 目前市场上主要用的zeus版本是携程基于阿里的源码封装的Zeus

image-20200817095411627
  • Azkaban:LinkedIn研发的产品
    • 开发方式:使用properties进行开发

    • Azkaban的插件库非常强大,社区非常活跃

    • 界面也相对更加友好

      • 界面类似于:windows10

        image-20200817095615828

3、Azkaban的介绍

  • 官方网站: https://azkaban.github.io/

  • 版本:

    • 2.x:可以直接下载使用的

      • 存在单点问题,如果执行节点宕机,调度工具就无法使用
    • 3.x:需要自己编译才能使用

  • 功能比2.x更加丰富

  • 支持多个执行节点做高可用结构

  • 特点

安装部署

1、Two-Server模式部署

  • 部署在第一台机器

  • 创建安装目录

    mkdir -p /opt/servers/azkaban-3.51.0
    cd /opt/servers/azkaban-3.51.0
    

    然后把编译好的包放到该目录下

  • 解压安装

    tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
    tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz 
    tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz 
    
    image-20200817010008429
  • 配置数据库【第一台机器MySQL】

    • 登录mysql

      mysql -uroot -p
      
    • 创建azkaban数据库

      CREATE DATABASE azkaban;
      
    • 创建azkaban的数据库用户

      CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
      

      此时创建失败,请输入

       SHOW VARIABLES LIKE 'validate_password%';
      
      image-20200816233817759

      首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
      输入设值语句

      set global validate_password_policy=LOW; 
      
      image-20200817010316471

      为了方便把密码都设成root好记

      此时需要把密码设成四位数

      set global validate_password_length=4;
      然后密码设成root
      CREATE USER 'azkaban'@'%' IDENTIFIED BY 'root';
      
    • 对azkaban用户进行授权操作azkaban数据库

      GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
      
    • 刷新权限

      flush privileges;
      
    • 查询权限

      select user,host from mysql.user;
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gSLSKYdr-1598356807408)(F:/大数据/Day50_20200212_任务调度系统Azkaban/02_随堂笔记/Day50_20200212_任务调度系统Azkaban.assets/image-20200212143343005.png)]

    • 最好重启mysql数据库

      systemctl restart mysqld
      
    • 登录mysql

      mysql -uroot -p
      
    • 初始化SQL语句:建表

      • 初始化:在MySQL中创建Azkaban需要用到的所有表

        use azkaban;
        source /opt/servers/azkaban-3.51.0/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;
        

    这条语句是执行azkaban所需要的表

    image-20200816235505480
  • 配置web server*

    • 进入web server的目录

      cd /opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT
      
    • 生成安全认证秘钥:Azkaban对于安全管理做得非常好,通过SLA、jetty等实现安全访问

      keytool -keystore keystore -alias jetty -genkey -keyalg RSA
      
      输入秘钥库的密码:azkaban
      重新输入密码:azkaban
      你的名字?:dayong
      单位?gaia
      部门?gaia
      区域?jingan
      省份?shanghai
      国家缩写?CN
      是否确认?Y
      输入jettey:azkaban
      重新输入:azkaban
      
    • 得到一个安全认证的秘钥文件,后续访问Azkaban,需要用到这个文件

      image-20200817010548248
    • 修改web的配置文件:conf/azkaban.properties

      image-20200817000754371
      • 修改conf/azkaban.properties

      • 第2行:web界面上标签的文字显示,可以任意

        azkaban.name=gaia
        
      • 第3行:子标签

        azkaban.label=gaia Azkaban
        
      • 第7行:将Azkaban的时区修改为亚洲上海,不然定时调度会有问题

        default.timezone.id=Asia/Shanghai
        
      • 第17行:是否用更加安全的ssl协议来进行访问:用不用ssl的区别:http/https

        jetty.use.ssl=true
        
        #如果开启为true,在访问web页面时要是用https来访问
        
      • 在17行后面添加如下配置

        #使用ssl以后的web访问端口
        jetty.ssl.port=8443
        #指定keystore文件的位置
        jetty.keystore=/opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/keystore
        #keystore中的密码
        jetty.password=azkaban
        jetty.keypassword=azkaban
        jetty.truststore=/opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/keystore
        jetty.trustpassword=azkaban
        
    • 第47行

      	mysql.host=cdh-1
      	由于我设置了azkaban的密码是root,所以改成下面的值
          mysql.password=root
      
      • 文件末尾添加以下4行

        azkaban.activeexecutor.refresh.milisecinterval=10000
        azkaban.queueprocessing.enabled=true
        azkaban.activeexecutor.refresh.flowinterval=10
        azkaban.executorinfo.refresh.maxThreads=10
        
  • 配置executor server

    • 进入executor的目录

      cd /opt/servers/azkaban-3.51.0/azkaban-exec-server-0.1.0-SNAPSHOT/
      
    • 修改配置文件:conf/azkaban.properties

      • 第2行

        azkaban.name=gaia
        
      • 第3行

        azkaban.label=gaia Azkaban
        
      • 第7行

        default.timezone.id=Asia/Shanghai
        
      • 第17行

        jetty.use.ssl=true
        
      • 并在17行后面添加新的配置

        jetty.ssl.port=8443
        jetty.keystore=/opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/keystore
        jetty.password=azkaban
        jetty.keypassword=azkaban
        jetty.truststore=/opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/keystore
        jetty.trustpassword=azkaban
        
        • 效果如下

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IdekWfvc-1598356807417)(F:/大数据/Day50_20200212_任务调度系统Azkaban/02_随堂笔记/Day50_20200212_任务调度系统Azkaban.assets/image-20200212082251451.png)]

      • 27行:exec需要连接webServer,要指定webServer的地址

        azkaban.webserver.url=https://cdh-1:8443
        
      • 50行

        mysql.host=dy-1
        
    • 添加execute-as-user插件

      cd /opt/servers/azkaban-3.51.0/azkaban-exec-server-0.1.0-SNAPSHOT/plugins/jobtypes
      
      cp /opt/servers/azkaban-3.51.0/execute-as-user.c ./
      
      yum -y install gcc-c++
      
      gcc execute-as-user.c -o execute-as-user
      chown root execute-as-user
      chmod 6050 execute-as-user
      
      image-20200817011137353
    • 关闭内存检查

      cd /opt/servers/azkaban-3.51.0/azkaban-exec-server-0.1.0-SNAPSHOT
      
      vim plugins/jobtypes/commonprivate.properties
      
      execute.as.user=false
      #添加下面两行
      memCheck.enabled=false
      azkaban.native.lib=/opt/servers/azkaban-3.51.0/azkaban-exec-server-0.1.0-SNAPSHOT/plugins/jobtypes
      

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xPiRbt4U-1598356807422)(F:/大数据/Day50_20200212_任务调度系统Azkaban/02_随堂笔记/Day50_20200212_任务调度系统Azkaban.assets/image-20200212151317228.png)]

2、启动Azkaban

  • 一定要先启动ExecServer

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fq2bQw8r-1598356807427)(F:/大数据/Day50_20200212_任务调度系统Azkaban/02_随堂笔记/Day50_20200212_任务调度系统Azkaban.assets/image-20200212151517699.png)]

    cd /opt/servers/azkaban-3.51.0/azkaban-exec-server-0.1.0-SNAPSHOT/
    #执行启动exec
    bin/start-exec.sh 
    #每一次启动必须手动激活这个exec,要么手动修改数据库,要么执行以下命令
    curl -G "cdh-1:$(<./executor.port)/executor?action=activate" && echo
    
    image-20200817004901502
  • 启动WebServer

    cd /opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/
    bin/start-web.sh
    
    image-20200817011417737
  • 访问WebUI

    https://cdh-1:8443
    默认用户名密码:azkaban/azkaban
    
    image-20200817011455429
    • 用户管理的配置文件

      /opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/conf/azkaban-users.xml
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FZfyqqxR-1598356807433)(F:/大数据/Day50_20200212_任务调度系统Azkaban/02_随堂笔记/Day50_20200212_任务调度系统Azkaban.assets/image-20200212152248999.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值