zoukankan      html  css  js  c++  java
  • Azkaban 3.73.1 集群搭建(Multiple Executor)

    目录

    一、简介

    Azkaban是LinkedIn开源的任务调度框架,采用java编写

    Azkaban功能和特点:

    1. 任务的依赖处理
    2. 任务监控,失败告警
    3. 任务流的可视化
    4. 任务权限管理

    Azkaban具有轻量可插拔、友好的WebUI、SLA告警、完善的权限控制、易于二次开发等优点,也得到了广泛应用,主要由三部分组成

    • 关系数据库(目前仅支持mysql),用于存储作业/作业流的执行状态信息
    • AzkabanWebServer,web管理服务器,主要负责权限验证、项目管理、作业流下发等工作
    • AzkabanExecutorServer,执行服务器,主要负责作业流/作业的具体执行以及搜集执行日志等工作

    作业流执行过程:Webserver会根据搜集起来的Executor的状态选择一个合适的任务运行节点,并将任务推送给该节点,管理并运行该工作流的所有job

    二、前置准备

    1. 服务分布

    Multiple Executor模式,各机器组件分配如下:

    机器 组件
    azkaban1 azkaban-exec-server、mysql-server
    azkaban2 azkaban-exec-server
    azkaban3 azkaban-exec-server、azkaban-web-server

    2. 安装 jdk

    此处使用的是jdk1.8,查看安装详情

    3. 配置 mysql

    此处使用的是mysql5.7,安装步骤略

    # 创建并使用数据库
    CREATE DATABASE azkaban;
    use azkaban;
    
    # 创建用户并授权
    CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban'; 
    GRANT ALL ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
    # 导入建表语句
    source azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql;
    

    三、集群部署

    1. 下载源码 & 解压

    # 下载
    wget https://github.com/azkaban/azkaban/archive/3.73.1.tar.gz
    # 重命名
    mv 3.73.1.tar.gz azkaban-3.73.1.tar.gz
    # 解压
    tar xvf azkaban-3.73.1.tar.gz
    

    2. 安装所需依赖

    yum install -y gcc-c++ git
    

    3. 执行编译

    cd azkaban-3.73.1/
    # 编译 第一次运行时,此过程时间会比较长
    # -x test 表示跳过测试
    ./gradlew build installDist -x test
    

    看到如下,表示成功

    4. 编译后的主要目录:

    目录 说明
    azkaban-common 常用工具类
    azkaban-db 对应的sql脚本
    azkaban-exec-server azkaban的executor-server单独模块
    azkaban-hadoop-secutity-plugin hadoop有关kerberos插件
    azkaban-solo-server web和executor运行在同一进程的项目
    azkaban-spi azkaban存储接口以及exception类
    azkaban-web-server azkaban的web-server单独模块

    5. 拷贝我们所需的文件并解压

    # 所需位置新建azkaban目录
    mkdir azkaban
    
    # copy
    cp azkaban-3.73.1/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz azkaban/
    cp azkaban-3.73.1/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz azkaban/
    cp azkaban-3.73.1/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz azkaban/
    
    cd azkaban/
    
    # 解压
    tar xvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
    tar xvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
    tar xvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
    
    # 软链
    ln -s azkaban-db-0.1.0-SNAPSHOT azkaban-db
    ln -s azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec
    ln -s azkaban-web-server-0.1.0-SNAPSHOT azkaban-web
    

    四、集群配置

    1. 配置 WebServer

    1.1 配置 jetty SSL

    cd azkaban-web
    
    # 生成keystore
    # 注意开始和结束的时候输入的密码,其他按提示输入即可
    keytool -keystore keystore -alias jetty -genkey -keyalg RSA
    

    1.2 修改conf/azkaban.properties

    # Azkaban Personalization Settings
    azkaban.name=Test
    azkaban.label=My Local Azkaban
    azkaban.color=#FF3601
    azkaban.default.servlet.path=/index
    web.resource.dir=web/
    default.timezone.id=Asia/Shanghai
    # Azkaban UserManager class
    user.manager.class=azkaban.user.XmlUserManager
    user.manager.xml.file=conf/azkaban-users.xml
    # Loader for projects
    executor.global.properties=conf/global.properties
    azkaban.project.dir=projects
    # Velocity dev mode
    velocity.dev.mode=false
    # Azkaban Jetty server properties.
    #jetty.use.ssl=false
    jetty.maxThreads=25
    jetty.ssl.port=8443
    jetty.port=8081
    jetty.keystore=keystore
    jetty.password=123456
    jetty.keypassword=123456
    jetty.truststore=keystore
    jetty.trustpassword=123456
    # Azkaban Executor settings
    executor.port=12321
    # mail settings
    mail.sender=
    mail.host=
    job.failure.email=
    job.success.email=
    lockdown.create.projects=false
    cache.directory=cache
    # JMX stats
    jetty.connector.stats=true
    executor.connector.stats=true
    # Azkaban mysql settings by default. Users should configure their own username and password.
    database.type=mysql
    mysql.port=3306
    mysql.host=azkaban1
    mysql.database=azkaban
    mysql.user=azkaban
    mysql.password=azkaban
    mysql.numconnections=100
    #Multiple Executor
    azkaban.use.multiple.executors=true
    azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
    azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
    azkaban.executorselector.comparator.Memory=1
    azkaban.executorselector.comparator.LastDispatched=1
    azkaban.executorselector.comparator.CpuUsage=1
    

    1.3 配置conf/azkaban-users.xml

    我这里新增加了一条admin,具有所有权限

    <user username="admin" password="admin" roles="admin,metrics"/>
    

    1.4 启动 WebServer

    注意:执行命令时的目录,否则会找不到某些文件

    cd azkaban-web
    
    # 启动
    bin/start-web.sh
    

    可以看到如下信息,因为当前还没有 Executors呢

    2. 配置 ExecutorsServer

    所有的ExecutorsServer服务器均按如下配置即可

    2.1 修改conf/azkaban.properties

    # Azkaban Personalization Settings
    default.timezone.id=Asia/Shanghai
    # Loader for projects
    executor.global.properties=conf/global.properties
    azkaban.project.dir=projects
    # Velocity dev mode
    velocity.dev.mode=false
    # Azkaban Jetty server properties.
    jetty.use.ssl=false
    jetty.maxThreads=25
    jetty.port=8081
    azkaban.jobtype.plugin.dir=plugins/jobtypes
    database.type=mysql
    mysql.port=3306
    mysql.host=azkaban1
    mysql.database=azkaban
    mysql.user=azkaban
    mysql.password=azkaban
    mysql.numconnections=100
    # Azkaban Executor settings
    executor.maxThreads=50
    executor.flow.threads=30
    executor.connector.stats=true
    executor.port=12321
    
    azkaban.use.multiple.executors=true
    azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
    azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
    azkaban.executorselector.comparator.Memory=1
    azkaban.executorselector.comparator.LastDispatched=1
    azkaban.executorselector.comparator.CpuUsage=1
    

    2.2 启动

    注意:执行命令时的目录,否则会找不到某些文件

    cd azkaban-exec
    
    # 启动
    bin/start-exec.sh
    

    2.3 重新启动WebServer

    如果还是看到如下信息:

    解决方式:登录azkaban使用的mysql数据库,查看executors表中是否存在active=1的executor,如果没有,修改active字段,而后再次启动即可

    修改:

    update executors set active = 1 where id = 1;
    

    参考

    1. 官方:https://azkaban.github.io/azkaban/docs/latest/#configuration
    2. https://blog.csdn.net/huohuotu/article/details/77487007
    3. https://blog.csdn.net/hxiaowang/article/details/87809772
    4. https://blog.csdn.net/liu16659/article/details/81367312
  • 相关阅读:
    ECNU-2574 Principles of Compiler
    C++调用C#生成的DLL文件的各种问题
    EOJ-1708//POJ3334
    Linux---弹球游戏
    dotfiles管理
    js基础的知识整理
    关于css的一些知识点整理
    HTML5 aria- and role
    JS获取非行间样式
    Javascript中的数组去重-indexof方法
  • 原文地址:https://www.cnblogs.com/remainsu/p/azkaban-3731-ji-qun-da-jian-multiple-executor.html
Copyright © 2011-2022 走看看