一种基于电力大数据的数据计算调度方法
技术领域
本发明涉及一种计算调度方法,特别是涉及一种基于电力大数据的数据计算调度方法,属于电力信息技术应用领域。
背景技术
电力信息系统都会涉及到相关的计算,不同的计算会存在一定的相关性和依赖性,特别是在电力大数据领域,如何更好的使计算过程可视化、计算依赖配置化,在电力大数据领域方面是至关重要的,基于此引入了Airflow,它是一个调度、监控工作流的平台。用于将一个工作流制定为一组任务的有向无环图DAG,并指派到一组计算节点上,根据相互之间的依赖关系,有序执行,传统的大数据计算调度方法没有正确构建任务依赖关系,无法保障业务数据有效、适时地产出和形成规范化的数据研发场景,同时代码比较复杂,编译过程比较复杂,同时大数据计算调度方法与外界联系起来可视化效果不理想限制了功能的拓展。
发明内容
本发明的主要目的是为了解决现有技术的不足而提供一种基于电力大数据的数据计算调度方法。
本发明的目的可以通过采用如下技术方案达到:
一种基于电力大数据的数据计算调度方法,包括Airflow,Airflow提供1对1、1对多和多对1的依赖关系,并通过trigger_rule来设置上下游节点的运行规则,Airflow生成一个实例,并向所有程序传递统一的调度时间A,且通过数据计算调度方法实现,该方法包括以下步骤:
a、数据导入:日冻结,程序通过参数,导入相应日期的数据分别计算出厂站终端抄表率明细、用户终端抄表率明细、厂站终端抄表率和低压级超终端抄表率;
b、计算:运行电能表,(1)将a中的数据进行计量点电量计算,当数据导入完成,任务被标记为success;
(2)后续计算会根据A找到这批数据并开始计算,计算的结果根据A命名并保存在相应的地方;(3)下一级依赖会在上一级success后根据A找到上一级的结果继续后续的计算;
c、分析对象电量:当多个计算需要用到同一个数据源时,开始执行分析对象电量,当分析对象电量执行完毕后开始计算数据,4个程序都success后,会进入到下一个依赖程序进行数据的汇总并且存储到数据库中。
优选的,trigger_rule对应的参数如下:
(1)All_success:上级依赖全部执行成功,执行下级;
(2)All_failed:上级依赖全部执行失败,执行下级;
(3)One_success:一个上级依赖执行成功,执行下级;
(4)One_failed:一个上级依赖执行失败,执行下级;
(5)All_done:上级依赖全部执行完毕,无论success或failed,执行下级;
(6)None_failed:所有的上级依赖,没有failed及upstream_failed状态,执行下级;
(7)none_skipped:上级处于skipped状态,执行下级;
相互依赖的任务将会根据其上下游关系,按照配置的trigger_rule从上游向下游有序执行。
优选的,Airflow自带web监控服务,web提供一系列可针对节点任务的操作,通过UI直接对每个节点进行重跑,并能同时进行上游或下游的批量操作。
优选的,Airflow结合celery、rabbitmq/redis和mysql/postgres可搭建出稳定的一套调度架构,并能随时横向地拓展架构的资源。
优选的,通过RBAC权限框架集成到web服务中,权限细化到每个按钮的操作,及每个页面的浏览,可通过管理员账号自定义不同的角色。
优选的,调度程序以DSL模板语言实现,可将程序中的各项参数配置在Web和UI中,并通过权限系统管理起来,通过DSL模板语言配置好任务,将任务同步到指定的目录中,执行Airflow提供的指令。
优选的,Airflow可通过配置文件和很多其他的第三方程序进行集成。
优选的,Airflow可对Bash脚本、python程序、spark程序、存储过程、Http请求和Hive进行依赖的编写和定时的调度。
优选的,Airflow在每个实例会通过向程序提供相同的参数,控制各个程序依赖于同一个数据源和同一批数据,并且维持上下级的数据依赖关系。
优选的,第三方程序为RBAC权限框架、Rabbitmq/redis、kerburos、ldap和git。
本发明的有益技术效果:
1、通过节点依赖来满足不同数据计算对数据源的需求,上一级的输出结果可用作下一级的输入结果,拥有自己的调度任务web监控服务,这是很多调度程序都不具备的,如果想二次开发一个web服务将会耗费大量的时间成本和技术成本,而Airflow自带的web监控服务,可直观的监控每一个调度流程中各个节点的任务执行情况,并提供详细的任务日志,并会对任务执行的各方面数据进行统计,并形成报表展现出来,如任务运行时间的曲线图,可很直观的观察出任务执行是否稳定,从而进行运维工作。
2、可实现高可用的搭建,Airflow结合celery,rabbitmq/redis,mysql/postgres可搭建出稳定的一套调度架构,并能随时横向的拓展架构的资源。
3、拥有自己的权限管理系统和强大的依赖关系设计,Airflow可以做到1对1、1对多和多对1的流程依赖关系,这对于很多其他的调度程序是很难做到的,而对于电网中数据的计算,可能会遇到一个计算需要多个原始数据以及多个计算结果来支撑,Airflow完美契合了业务的需求,可将每个数据或计算作为一个节点并相互依赖起来。
4、代码维护简单易用,部署起来相比于同类的调度程序,不需要复杂的编译过程,只需通过DSL模板语言配置好任务,将任务同步到指定的目录中,执行airflow提供的指令即可。
5、拥有强大的集成功能,Airflow可通过配置文件,和很多其他的第三方程序进行集成,这对于功能的拓展提供了便利。
6、提供丰富的任务执行方式,Airflow可对Bash脚本、python程序、spark程序、存储过程、Http请求和Hive等进行依赖的编写和定时的调度。
附图说明
图1为按照本发明的基于电力大数据的数据计算调度方法的一优选实施例的调度方法实现的流程图。
具体实施方式
为使本领域技术人员更加清楚和明确本发明的技术方案,下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
如图1所示,本实施例提供的基于电力大数据的数据计算调度方法,包括Airflow,Airflow提供1对1、1对多和多对1的依赖关系,并通过trigger_rule来设置上下游节点的运行规则,Airflow生成一个实例,并向所有程序传递统一的调度时间A,且通过数据计算调度方法实现,该方法包括以下步骤:
a、数据导入:日冻结,程序通过参数,导入相应日期的数据分别计算出厂站终端抄表率明细、用户终端抄表率明细、厂站终端抄表率和低压级超终端抄表率;
b、计算:运行电能表,(1)将a中的数据进行计量点电量计算,当数据导入完成,任务被标记为success;
(2)后续计算会根据A找到这批数据并开始计算,计算的结果根据A命名并保存在相应的地方;
(3)下一级依赖会在上一级success后根据A找到上一级的结果继续后续的计算;
c、分析对象电量:当多个计算需要用到同一个数据源时,开始执行分析对象电量,当分析对象电量执行完毕后开始计算数据,在4个程序都success后,会进入到下一个依赖程序进行数据的汇总并且存储到数据库中。
在本实施例中,如图1所示,trigger_rule对应的参数如下:
(1)All_success:上级依赖全部执行成功,执行下级;
(2)All_failed:上级依赖全部执行失败,执行下级;
(3)One_success:一个上级依赖执行成功,执行下级;
(4)One_failed:一个上级依赖执行失败,执行下级;
(5)All_done:上级依赖全部执行完毕,无论success或failed,执行下级;
(6)None_failed:所有的上级依赖,没有failed及upstream_failed状态,执行下级;
(7)none_skipped:上级处于skipped状态,执行下级;
相互依赖的任务将会根据其上下游关系,按照配置的trigger_rule从上游向下游有序执行。
在本实施例中,如图1所示,Airflow自带的web监控服务,web提供一系列可对节点任务进行的操作,通过UI直接对每个节点进行重跑,并能同时进行上游或下游的批量操作,Airflow结合celery、rabbitmq/redis和mysql/postgres可搭建出稳定的一套调度架构,并能随时横向的拓展架构的资源,通过RBAC权限框架集成到web服务中,权限细化到每个按钮的操作,及每个页面的浏览,可通过管理员账号自定义不同的角色,调度程序以DSL模板语言实现,可将程序中的各项参数配置在Web和UI中,并通过权限系统管理起来,通过DSL模板语言配置好任务,将任务同步到指定的目录中,执行Airflow提供的指令,Airflow拥有自己的调度任务web监控服务,Airflow结合celery,rabbitmq/redis,mysql/postgres可搭建出稳定的一套调度架构,并能随时横向的拓展架构的资源,代码维护简单易用,部署起来相比于同类的调度程序,不需要复杂的编译过程,只需通过DSL模板语言配置好任务,将任务同步到指定的目录中,执行airflow提供的指令即可。
在本实施例中,如图1所示,Airflow可通过配置文件和很多其他的第三方程序进行集成,Airflow可对Bash脚本、python程序、spark程序、存储过程、Http请求和Hive进行依赖的编写和定时的调度,Airflow在每个实例会通过向程序提供相同的参数,控制各个程序依赖于同一个数据源和同一批数据,并且维持上下级的数据依赖关系,第三方程序为RBAC权限框架、Rabbitmq/redis、kerburos、ldap和git,拥有强大的集成功能,Airflow可通过配置文件,和很多其他的第三方程序进行集成,如:RBAC权限框架,Rabbitmq/redis,kerburos,ldap,git等。
综上所述,在本实施例中,按照本实施例的基于电力大数据的数据计算调度方法,这对于功能的拓展提供了便利,拥有自己的权限管理系统和强大的依赖关系设计,Airflow可以做到1对1、1对多和多对1,的流程依赖关系,这对于很多其他的调度程序是很难做到的,而对于电网中数据的计算,可能会遇到一个计算需要多个原始数据以及多个计算结果来支撑,Airflow完美契合了业务的需求,可将每个数据或计算作为一个节点并相互依赖起来,强大的集成功能,Airflow可通过配置文件,和很多其他的第三方程序进行集成,这对于功能的拓展提供了便利,提供丰富的任务执行方式,Airflow可对Bash脚本、python程序、spark程序、存储过程、Http请求和Hive等进行依赖的编写和定时的调度。
以上所述,仅为本发明进一步的实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明所公开的范围内,根据本发明的技术方案及其构思加以等同替换或改变,都属于本发明的保护范围。