Luigi 是一套基于 Python 语言构建的复杂流式批处理任务管理系统。它也仅仅是一个任务 调度系统,具体逻辑全都由 Task 自己去实现,比如分布式计算交由 Hadoop 里的 YARN 实现处理。
Luiti 是构建于 Luigi 之上的主要作用于时间管理相关的插件, 即 Luiti = Luigi + time。
luiti 优势(功能列表)
项目地址在 http://github.com/17zuoye/luiti , README的信息很详细,欢迎有离线任务管理需求和使用Python的人使用,也非常欢迎各种贡献 :)
1
vozon 2015-03-11 17:01:28 +08:00
先支持一下
两个问题: 1.部署轻便吗? 2.已有或计划提供API接口吗? PS: azkaban和oozie都用了, 都或多或少有些不足 |
2
mvj3 OP @vozon
1.部署轻便吗? 非常方便。 第一步:启动 luigi 后台进程(即 luiti 依赖于之上的框架),命令例如 luigid --background --logdir luigi --state-path luigi/state --address 0.0.0.0 --port 32145 第二步:用 luiti 命令行 创建一个项目和若干任务模版,然后实现具体业务逻辑。 第三步:用 luiti 去提交某个时间的任务就可以了。例如 luiti run --task-name 你的任务类 --date-value 2014-09-01 2.已有或计划提供API接口吗? luiti 本身就是把一堆任务代码当作数据去管理,所以直接操作代码就可以了。目前我和团队成员有意向把 luiti 作为一个插件整合到 hue 里,可以展现任务之间的依赖关系。 这方面你运行一下 luiti 命令行就可以了,风格非常像 Rails 。比如 $ luiti usage: luiti [-h] {ls,new,generate,info,clean,run} ... Luiti tasks manager. optional arguments: -h, --help show this help message and exit subcommands: valid subcommands {ls,new,generate,info,clean,run} ls list all current luiti tasks. new create a new luiti project. generate generate a new luiti task python file. info show a detailed task. clean manage files that outputed by luiti tasks. run run a luiti task. $ luiti ls +-------+-----------------------------------------------+ | | All Tasks | +=======+===============================================+ | 1 | EnglishStudentDoappEkStatDay | +-------+-----------------------------------------------+ | 2 | EnglishStudentDoexamNewCorrectByEknowledgeDay | +-------+-----------------------------------------------+ | 3 | EnglishStudentDoexamNewCorrectDay | +-------+-----------------------------------------------+ ............................................... +-------+-----------------------------------------------+ | 36 | WhateverCheckDay | +-------+-----------------------------------------------+ | 37 | DumpVoxQuizFromDatabaseWeek | +-------+-----------------------------------------------+ | 38 | DumpVoxQuizFromDatabaseDay | +-------+-----------------------------------------------+ | 39 | EnglishStudentDoexamEtStatDay | +-------+-----------------------------------------------+ | total | 39 | +-------+-----------------------------------------------+ $ luiti info --task-name DumpVoxUnitKnowledgePointRefFromDatabaseDay +-------------------+--------------------------------------------------------------------------------------+ | Task name | DumpVoxUnitKnowledgePointRefFromDatabaseDay | +===================+======================================================================================+ | Tasks self dep on | ['DumpVoxKnowledgePointDay'] | +-------------------+--------------------------------------------------------------------------------------+ | Tasks dep on self | ['DumpEnglishEidToEkDay', 'TeacherEnglishAssignHomeworkQuizDay', 'WhateverCheckDay'] | +-------------------+--------------------------------------------------------------------------------------+ 所以你也看到了,UI 在此基础上封装一下就可以了,底层编程都已经提供了,就像 oozie 是 hue 里默认提供的一个插件。 |