任务流程引擎设计

一、前言

        前段时间做的一块东西,涉及到任务的拆解与依赖,由于时间紧急,当时采用的硬编码办法解决,现在终于回过神来,于是设计成一个“小框架”。

二、问题描述

        进行大数据分析,用Java调用Sqoop接口将数据导入Hadoop,然后运行一个mapreduce任务和多个Hive任务进行建表、统计、分析,最后运算结果导回数据库。

三、图解问题

165648_xl1f_1778239.png

四、需求分析

        1、任务有分层

        2、任务之间有上下层级依赖,下层任务依赖于上层任务的运算结果

        3、前端可配置化,用户自行配置任务层级与依赖关系

        4、运行过程中前端可以实时查询到运行到哪个层级,以及已经运行的节点的运行日志

        5、运行过程中只要有一个节点失败,我们认为整个任务失败,停止本次任务

        6、同层级的任务并行,任务至上而下运行

五、模型

        1、工作节点(WorkNode):完成某一具体任务

        2、任务(WorkTask):由N个工作节点组成一个任务

        3、线程组(ThreadGroup):同时执行同一层级任务

六、状态     

        1、Task状态:成功、失败

        2、WorkNode状态:未运行、运行中、失败、成功

七、编码

    1、常量定义

           (1)、 任务状态

            

             (2)、 工作节点状态

                    170712_wNqY_1778239.png

        2、domain定义

                (1)、 工作任务定义(任务执行状态、分层有序节点、当前执行到的层级)    

                    171508_4T4n_1778239.png

                (2)、工作节点定义

                      173023_zVwJ_1778239.png

                    172019_zuYX_1778239.png

            3、线程组设计

                 (1)、线程执行器接口

                        172617_stBI_1778239.png    

                  (2)、线程组

                        172745_8PBm_1778239.png

                   4、节点行为接口,定义工作节点所能执行的动作,用于扩展,已经实现的节点动作有三种                                   (Hive执行HiveWorkNodeAction、Java执行JavaWorkNodeAction、MapReduce 执                                行 MapReduceWorkNodeAction)

                          173715_ivYa_1778239.png

                    5、 节点线程执行器实现

                            174503_HmQU_1778239.png

                    6、任务执行器,用于执行任务

                        173957_UbES_1778239.png

八、单元测试

            1、构建任务

                175255_AT6C_1778239.png

                    运行结果:

                            175413_i9VW_1778239.png

九、后记

       限于篇幅,代码没粘贴完全, 后续会加入根据运行日志,从失败层级恢复任务(前提是所有任务都是可重入的)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值