cocofree / azkaban_assistant

azkaban小助手,增加任务web配置、远程脚本调用、报警扩展、跨项目依赖等功能。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

请教几个问题

zvrr opened this issue · comments

commented

目前我们在自己做一个数据平台的调度系统,对于一天任务量在几千个的系统来说,azkaban配置太麻烦了,感谢你开源了azkaban_assistant(https://github.com/cocofree/azkaban_assistant),有几个疑问像你请教下,谢谢。

1、azkaban都是用project来管理项目的,那我们az助手是如何通过任务交给az来调度的?
2、az助手的任务和project是什么关系?
3、远程执行脚本是如何和实现az的集群模式,在多个exec执行器间调度?

  • 1、azkaban_assistant是一个自定义的任务工具,主要工作是对project进行任务依赖配置。通过azkaban的接口上传project到azkaban,这和你自己打包成zip,手动在页面上upload并没有太大的区别。只是将这些步骤程序化了,把job的信息保存在了db里,而不需要自己手动些*.job文件
  • 2、azkaban_assistant是对azkaban做了定制化的改造。实现了任务管理,也实现了分布式。相互都有改动的地方,可以把改造后的 azkaban+ azkaban_assistant 和原始的azkaban进行对比。要说关系,不仅仅是一个助手,因为把azkaban改了之后必须使用azkaban_assistant里的exe_job.py才能执行任务
  • 3、exe_job.py是这个项目的核心,通过ssh登录到不同的机器去执行linux命令。还是原来的azkaban进行任务调度,但是每一个任务执行的都是 exe_job.py文件,通过参数和配置去做一些定制化的操作。包括跨项目任务依赖,告警配置等。

@zvrr 感谢关注,先回答下你的几个问题
1、azkaban_assistant对project里的task进行了封装,实际运行的是远程服务器执行命令。调度还是由az来进行控制。
2、同上
3、并没有实现集群模式,依赖的是az 2.5版本。本项目里所谓的分布式,是指一台机器管理的所有机器的远程服务任务。

到这里,其实想说的azkaban_assistant这个项目还是不成熟的,任务平台化配置管理这部分方向没有问题,但是使用远程命令来控制任务,对于小公司来说是够用的,但是如果任务数多了,会有以下隐患:
1、管理远程脚本的服务器压力过大
2、实际执行机的并发无法管理
3、远程�任务的�状态管理有限
以上问题在调度平台做深入了之后,都会是瓶颈。
建议worker机器的任务也是由系统直接管理(各种状态的任务队列),包括封装各类工具化插件、worker机并管理等,实现真正意义上的分布式调度系统