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

Azkaban功能和特点:

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

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

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

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

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

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

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

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

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


  1. # 下载
  2. wget https://github.com/azkaban/azkaban/archive/3.73.1.tar.gz
  3. # 重命名
  4. mv 3.73.1.tar.gz azkaban-3.73.1.tar.gz
  5. # 解压
  6. tar xvf azkaban-3.73.1.tar.gz
  1. yum install -y gcc-c++ git
  1. cd azkaban-3.73.1/
  2. # 编译 第一次运行时,此过程时间会比较长
  3. # -x test 表示跳过测试
  4. ./gradlew build installDist -x test

看到如下,表示成功

目录 说明
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单独模块
  1. # 所需位置新建azkaban目录
  2. mkdir azkaban
  3. # copy
  4. cp azkaban-3.73.1/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz azkaban/
  5. cp azkaban-3.73.1/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz azkaban/
  6. cp azkaban-3.73.1/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz azkaban/
  1. cd azkaban/
  2. # 解压
  3. tar xvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
  4. tar xvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
  5. tar xvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
  6. # 软链
  7. ln -s azkaban-db-0.1.0-SNAPSHOT azkaban-db
  8. ln -s azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec
  9. ln -s azkaban-web-server-0.1.0-SNAPSHOT azkaban-web
  1. cd azkaban-web
  2. # 生成keystore
  3. # 注意开始和结束的时候输入的密码,其他按提示输入即可
  4. keytool -keystore keystore -alias jetty -genkey -keyalg RSA

  1. # Azkaban Personalization Settings
  2. azkaban.name=Test
  3. azkaban.label=My Local Azkaban
  4. azkaban.color=#FF3601
  5. azkaban.default.servlet.path=/index
  6. web.resource.dir=web/
  7. default.timezone.id=Asia/Shanghai
  8. # Azkaban UserManager class
  9. user.manager.class=azkaban.user.XmlUserManager
  10. user.manager.xml.file=conf/azkaban-users.xml
  11. # Loader for projects
  12. executor.global.properties=conf/global.properties
  13. azkaban.project.dir=projects
  14. # Velocity dev mode
  15. velocity.dev.mode=false
  16. # Azkaban Jetty server properties.
  17. #jetty.use.ssl=false
  18. jetty.maxThreads=25
  19. jetty.ssl.port=8443
  20. jetty.port=8081
  21. jetty.keystore=keystore
  22. jetty.password=123456
  23. jetty.keypassword=123456
  24. jetty.truststore=keystore
  25. jetty.trustpassword=123456
  26. # Azkaban Executor settings
  27. executor.port=12321
  28. # mail settings
  29. mail.sender=
  30. mail.host=
  31. job.failure.email=
  32. job.success.email=
  33. lockdown.create.projects=false
  34. cache.directory=cache
  35. # JMX stats
  36. jetty.connector.stats=true
  37. executor.connector.stats=true
  38. # Azkaban mysql settings by default. Users should configure their own username and password.
  39. database.type=mysql
  40. mysql.port=3306
  41. mysql.host=azkaban1
  42. mysql.database=azkaban
  43. mysql.user=azkaban
  44. mysql.password=azkaban
  45. mysql.numconnections=100
  46. #Multiple Executor
  47. azkaban.use.multiple.executors=true
  48. azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
  49. azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
  50. azkaban.executorselector.comparator.Memory=1
  51. azkaban.executorselector.comparator.LastDispatched=1
  52. azkaban.executorselector.comparator.CpuUsage=1

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

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

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

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

  1. # Azkaban Personalization Settings
  2. default.timezone.id=Asia/Shanghai
  3. # Loader for projects
  4. executor.global.properties=conf/global.properties
  5. azkaban.project.dir=projects
  6. # Velocity dev mode
  7. velocity.dev.mode=false
  8. # Azkaban Jetty server properties.
  9. jetty.use.ssl=false
  10. jetty.maxThreads=25
  11. jetty.port=8081
  12. azkaban.jobtype.plugin.dir=plugins/jobtypes
  13. database.type=mysql
  14. mysql.port=3306
  15. mysql.host=azkaban1
  16. mysql.database=azkaban
  17. mysql.user=azkaban
  18. mysql.password=azkaban
  19. mysql.numconnections=100
  20. # Azkaban Executor settings
  21. executor.maxThreads=50
  22. executor.flow.threads=30
  23. executor.connector.stats=true
  24. executor.port=12321
  25. azkaban.use.multiple.executors=true
  26. azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
  27. azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
  28. azkaban.executorselector.comparator.Memory=1
  29. azkaban.executorselector.comparator.LastDispatched=1
  30. azkaban.executorselector.comparator.CpuUsage=1

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

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

如果还是看到如下信息:

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

修改:

  1. update executors set active = 1 where id = 1;
  1. 官方:https://azkaban.readthedocs.io/en/latest/getStarted.html
  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

版权声明:本文为remainsu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/remainsu/p/azkaban-3731-ji-qun-da-jian-multiple-executor.html