V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
mvj3
V2EX  ›  分享创造

[开源项目] luiti 时间任务依赖管理框架,目前主要是本地和 YARN 任务。

  •  
  •   mvj3 · 2015-03-11 13:44:18 +08:00 · 3082 次点击
    这是一个创建于 3324 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Luigi 是一套基于 Python 语言构建的复杂流式批处理任务管理系统。它也仅仅是一个任务 调度系统,具体逻辑全都由 Task 自己去实现,比如分布式计算交由 Hadoop 里的 YARN 实现处理。

    Luiti 是构建于 Luigi 之上的主要作用于时间管理相关的插件, 即 Luiti = Luigi + time。

    luiti 优势(功能列表)

    1. 按时间和业务类型等属性去多目录划分基础表, 中间表, 统计表 等。
    2. 支持无缝 多项目 多版本 管理, 兼容常规 Python 库引用机制。
    3. 任务的运行时间和业务时间的满足条件检查。
    4. 众多 MapReduce / IO 实用操作函数。
    5. 基于输入输出数据的 MapReduce 测试方案。
    6. 内置支持 Task 基类扩展。
    7. 分析 Task 之间的依赖关系,包括依赖的和被依赖的。

    项目地址在 http://github.com/17zuoye/luiti , README的信息很详细,欢迎有离线任务管理需求和使用Python的人使用,也非常欢迎各种贡献 :)

    2 条回复    2015-03-11 17:25:03 +08:00
    vozon
        1
    vozon  
       2015-03-11 17:01:28 +08:00
    先支持一下

    两个问题:
    1.部署轻便吗?
    2.已有或计划提供API接口吗?

    PS: azkaban和oozie都用了, 都或多或少有些不足
    mvj3
        2
    mvj3  
    OP
       2015-03-11 17:25:03 +08:00
    @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 里默认提供的一个插件。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2526 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 16:08 · PVG 00:08 · LAX 09:08 · JFK 12:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.