基于分布式调度的实时监控Spark引擎输出进度的方法及平台技术

技术编号:39281936 阅读:6 留言:0更新日期:2023-11-07 10:55
本发明专利技术公开了一种基于分布式调度的实时监控Spark引擎输出进度的方法及平台,属于信息技术领域,包括:任务创建、任务执行和进度监控及任务状态和进度监控展示。本发明专利技术整合分布式调度与Spark计算引擎,采用MasterServer、WorkerServer及SeaTunnel引擎进行任务执行和进度监控,实时从Spark计算引擎端获取输出进度的相关信息并发送回调度系统,让用户能够在利用可靠且性能稳定的调度能力以及高性能可扩展的计算能力的同时,方便地从调度监控的页面中实时地看到任务的输出进度情况,提高数据对账效率,降低数据运维成本。降低数据运维成本。降低数据运维成本。

【技术实现步骤摘要】
基于分布式调度的实时监控Spark引擎输出进度的方法及平台


[0001]本专利技术涉及信息技术、大数据
,特别是一种基于分布式调度的实时监控Spark引擎输出进度的方法。

技术介绍

[0002]计算引擎和任务调度系统是数据中台建设的两个最核心的组件。
[0003]其中,Spark是一个开源的基于内存的分布式计算引擎,可以支持SQL即席查询、实时流计算、机器学习、图计算等等,Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案,在数据采集、清洗、加工、数据挖掘等各个环节中都起到了重要的作用。
[0004]而,调度系统为数据中台中的各种数据任务的执行提供了定时调度、任务依赖调度、手动调度、调度监控、容错恢复等功能。
[0005]目前,用于调度Spark任务的调度系统主要有Oozie、Airflow、DolphinScheduler、Azkaban,它们都能监控Spark任务的开始时间、结束时间、成功或者失败。但是,对于向外部存储输出数据的任务并不能实时监控其输出进度,特别是对于需要长时间运行的处理海量数据的任务,用户难以及时采取有效措施防止异常的产生或者及时恢复业务,如果任务失败也不能显示成功输出了多少、失败了多少,用户难以及时了解任务运行情况、难以进行数据对账。

技术实现思路

[0006]本专利技术的专利技术目的是,针对上述问题,提供一种基于分布式调度的实时监控Spark引擎输出进度的方法,实时从计算引擎端获取输出进度的相关信息并发送回调度系统,便于从调度监控的页面中实时地看到任务的输出进度情况,提高数据对账效率,降低数据运维成本。
[0007]为达到上述目的,本专利技术所采用的技术方案是:
[0008]基于分布式调度的实时监控Spark引擎输出进度的方法,包括以下内容:
[0009]步骤S10、任务创建:创建Spark任务,设置输入数据源、输出数据源、数据处理、计算规则及使用资源;设置调度规则,选中需要调度的任务,设置定时触发的规则或者任务依赖的规则;
[0010]步骤S20、任务执行和进度监控,具体处理流程包括:
[0011]步骤S21、分发任务:MasterServer定时轮询任务调度信息,获取符合触发执行条件的任务,然后将任务分发给WorkerServer;
[0012]步骤S22、执行任务:WorkerServer接收到MasterServer分发的任务,然后执行shell启动SeaTunnel引擎,并通过shell的退出码监听任务是否成功启动,然后发送任务启动应答信息给MasterServer更新任务运行状态;
[0013]步骤S23、提交Spark任务:SeaTunnel解析WorkerServer指定的配置文件后,把应
用提交到YARN上,然后生成Spark应用的数据处理链路;
[0014]步骤S24、监控任务进度:YARN在driver端统计和缓存待输出总数,然后实时获取和累加各计算节点的已输出总数,再由进度汇报线程发送任务进度信息给MasterServer更新任务进度;
[0015]步骤S30、任务状态和进度监控展示:获取任务状态和进度监控信息进行展示。
[0016]其中,步骤S21具体内容如下:MasterServer服务启动后定时通过jdbc轮询任务调度信息,获取符合触发执行条件的任务,然后通过Zookeeper获取资源可用的Worker地址和端口相关信息,然后使用Netty将任务分发给WorkerServer。
[0017]步骤S22具体内容如下:WorkerServer接收到MasterServer分发的任务,根据接收的任务信息生成临时的执行目录、SeaTunnel配置文件、和启动SeaTunnel的shell脚本,然后执行shell启动SeaTunnel引擎;SeaTunnel启动后WorkerServer使用Netty向MasterServer发送应答消息,MasterServer接收到应答消息后通过jdbc连接DB,把任务状态更新为运行中;当任务完成或者任务失败后,WorkerServer使用Netty向MasterServer发送任务结果信息,MasterServer接收到结果信息后通过jdbc连接DB,把该任务状态更新为完成或失败。
[0018]步骤S23具体内容如下:SeaTunnel解析WorkerServer指定的配置文件后,把应用提交到YARN上;YARN分配资源后初始化Driver程序,根据SeaTunnel提交的资源配置信息初始化SparkSession,再获取输入数据源配置信息使用SparkSession创建DataFrameReader,然后从DataFrameReader获取Dataset并根据数据处理和计算规则配置定义Dataset转换和计算的步骤,再从完成定义步骤后的Dataset根据输出数据源配置生成DataFrameWriter,形成一个或多个“读取

>转换和计算

>输出”的Spark数据处理链路,且每个链路最终通过DataFrameWriter的save接口触发执行,运算任务分发到YARN的各个节点初始化executor进行分布式执行。
[0019]步骤S24具体内容如下:YARN初始化SparkSession后启动一进度汇报线程,每隔一个心跳时间,该线程就使用Netty把指任务进度信息发送给MasterServer,由MasterServer持久化到DB;其中,待输出总数从“完成定义步骤后的Dataset”调用count接口统计获取,获取待输出总数数值后缓存Dataset和统计值,进度汇报线程从缓存中取值;当前已输出总数需要分别收集每个executor中已输出数值并进行累加,然后发送回进度汇报线程中;初始化SparkSession后创建LongAccumulator,并设置到DataFrameWriter的写入算子访问域内,写入算子每完成一次输出提交后,LongAccumulator则累加已输出数值,之后进度汇报线程就可以使用LongAccumulator的value接口实时获取当前已输出总数。
[0020]由于采用上述技术方案,本专利技术具有以下有益效果:
[0021]本专利技术整合分布式调度与Spark计算引擎,采用MasterServer、WorkerServer及SeaTunnel引擎进行任务执行和进度监控,实时从Spark计算引擎端获取输出进度的相关信息并发送回调度系统,让用户能够在利用可靠且性能稳定的调度能力以及高性能可扩展的计算能力的同时,方便地从调度监控的页面中实时地看到任务的输出进度情况,提高数据对账效率,降低数据运维成本。
附图说明
[0022]图1是本专利技术的监控Spark引擎输出进度的方法的流程图。
[0023]图2是本专利技术的监控Spark引擎输出进度的平台架构及服务示意图。
[0024]图3是本发本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于分布式调度的实时监控Spark引擎输出进度的方法,其特征在于,包括以下内容:步骤S10、任务创建:创建Spark任务,设置输入数据源、输出数据源、数据处理、计算规则及使用资源;设置调度规则,选中需要调度的任务,设置定时触发的规则或者任务依赖的规则;步骤S20、任务执行和进度监控,具体处理流程包括:步骤S21、分发任务:MasterServer定时轮询任务调度信息,获取符合触发执行条件的任务,然后将任务分发给WorkerServer;步骤S22、执行任务:WorkerServer接收到MasterServer分发的任务,然后执行shell启动SeaTunnel引擎,并通过shell的退出码监听任务是否成功启动,然后发送任务启动应答信息给MasterServer更新任务运行状态;步骤S23、提交Spark任务:SeaTunnel解析WorkerServer指定的配置文件后,把应用提交到YARN上,然后生成Spark应用的数据处理链路;步骤S24、监控任务进度:YARN在driver端统计和缓存待输出总数,然后实时获取和累加各计算节点的已输出总数,再由进度汇报线程发送任务进度信息给MasterServer更新任务进度。步骤S30、任务状态和进度监控展示:获取任务状态和进度监控信息进行展示。2.根据权利要求1所述的基于分布式调度的实时监控Spark引擎输出进度的方法,其特征在于:步骤S21具体内容如下:MasterServer服务启动后定时通过jdbc轮询任务调度信息,获取符合触发执行条件的任务,然后通过Zookeeper获取资源可用的Worker地址和端口相关信息,然后使用Netty将任务分发给WorkerServer。3.根据权利要求1所述的基于分布式调度的实时监控Spark引擎输出进度的方法,其特征在于:步骤S22具体内容如下:WorkerServer接收到MasterServer分发的任务,根据接收的任务信息生成临时的执行目录、SeaTunnel配置文件、和启动SeaTunnel的shell脚本,然后执行shell启动SeaTunnel引擎;SeaTunnel启动后WorkerServer使用Netty向MasterServer发送应答消息,MasterServer接收到应答消息后通过jdbc连接DB,把任务状态更新为运行中;当任务完成或者任务失败后,WorkerServer使用Netty向MasterServer发送任务结果信息,MasterServer接收到结果信息后通过jdbc连接DB,把该任务状态更新为完成或失败。4.根据权利要求1所述的基于分布式调度的实时监控Spark引擎输出进度的方法,其特征在于:步骤S23具体内容如下:SeaTunnel解析WorkerServer指定的配置文件后,把应用提交到YARN上;YARN分配资源后初始化Driver程序,根据SeaTunnel提交的资源配置信息初始化SparkSession,再获取输入数据源配置信息使用SparkSession创建DataFrameReader,然后从DataFrameReader获取Dataset并根据数据处理和计算规则配置定义Dataset转换和计算的步骤,再从完成定义步骤后的Dataset根据输出数据源配置生成DataFrameWriter,形成一个或多个“读取

>转换和计算

>输出”的Spark数据处理链路,且每个链路最终通过DataFrameWriter的save接口触发执行,运算任务分发到YARN的各个节点初始化executor进行分布式执行。5.根据权利要求1所述的基于分布式调度的实时监控Spark引擎输出进度的方法,其特
征在于:步骤S24具体内容如下:YARN初始化SparkSession后启动一进度汇报线程,每隔一个心跳时间,该线程就使用Netty把指任务进度信息发送给MasterServer,由MasterServer持久化到DB;其中,待输出总数从“完成定义步骤后的Dataset”调用count接口统计获取,获取待输出总数数值后缓存Dataset和统计值,进度汇报线程从缓存中取值;当前已输出总数需要分别收集每个executor中已输出数值并进行累加,然后发送回进度汇报线程中;初始化SparkSession后创建LongAccumulator,并设置到DataFrameWriter的写入算子访问域内,写入算子每完成一次输出提交后,LongAccumulator则累加已输出数值,之后进度汇报线程就可以使用LongAccumulator的value接口实时获取当前已输出总数。6.基于分布式调度的实时监控Spark引擎输出进度的平台,其特征在于:包括UI端、ApiServer、MasterServer、WorkerServer及S...

【专利技术属性】
技术研发人员:陈奎霖梁勇张振绘杨彬王芳
申请(专利权)人:中国东盟信息港股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1