一种flink任务适配hadoop生态的系统和方法转让专利

申请号 : CN202210807461.4

文献号 : CN114880103B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汪昱帅冯治赵晨曦刘峰余任杰

申请人 : 中电云数智科技有限公司中国电子系统技术有限公司

摘要 :

本发明提供一种flink任务适配hadoop生态的系统和方法,所述系统包括:应用层,用于构建fink任务并提交至代理服务层,以及用于向代理服务层向发出任务停止、任务续跑或任务试运行的信息;代理服务层,用于任务提交发布、任务停止、任务状态检查、任务续跑以及任务试运行请求;Hadoop层,用于执行flink任务,生成任务执行日志以及用于生成监控指标并将监控指标推送至监控层的Prometheus模块;监控服务层,用于将flink任务的运行状态及性能指标发送至代理服务层的任务检查模块;存储层,包括Redis、kafka、elasticsearch以及临时数据存储服务模块。根据本发明示例性实施例的flink任务适配hadoop生态的系统和方法,可提高系统对flink任务的操作性和可控性,节省系统资源,适用于各种数据治理的生产场景。

权利要求 :

1.一种flink任务适配hadoop生态的系统,其特征在于,所述系统,包括:

应用层,包括任务发布模块和任务管理模块,用于构建fink任务并提交至代理服务层,以及用于向代理服务层向发出任务停止、任务续跑或任务试运行的信息;

代理服务层,包括任务适配解析模块、任务提交模块、任务停止模块、任务状态检查模块、任务续跑模块以及任务试运行模块,用于任务适配和解析,将任务所需的资源依赖提交至Hadoop层的HDFS以及用于任务提交发布、任务停止、任务状态检查、任务续跑以及任务试运行请求;

Hadoop层,包括HDFS模块和YARN计算引擎模块,其中,HDFS模块包括依赖lib库、ck文件库和savepoint文件库;YARN计算引擎模块包括任务执行单元、任务执行日志单元以及任务记录单元;HDFS模块用于写入应用层中任务解析单元提交的任务所需的资源依赖以及写入YARN计算引擎模块生成的ck文件和savepoint文件;YARN计算引擎模块用于执行flink任务,生成任务执行日志以及用于生成监控指标并将监控指标推送至监控层的Prometheus模块;

监控服务层,包括Prometheus模块,用于从hadoop层的任务执行日志模块中实时获取监控指标,将flink任务的运行状态及性能指标发送至代理服务层的任务检查模块;

存储层,包括Redis、Kafka、elasticsearch以及临时数据存储服务模块,其中,Redis用于存储ck或savepoint快照文件的HDFS地址,Kafka用于实时记录每个flink的任务状态,elasticsearch用于实时存储每个flink任务的执行日志,临时数据存储服务模块用于存储任务试运行数据。

2.根据权利要求1所述的flink任务适配hadoop生态的系统,其特征在于,其中,应用层中,任务发布模块包括任务构建单元和任务需求配置单元,任务构建单元用于构建fink任务,任务需求配置单元用于根据任务场景配置任务需求并将fink任务提交至代理服务层;

任务管理模块包括任务停止请求单元、任务续跑请求单元以及任务试运行请求单元,分别用于发出任务停止、任务续跑或任务试运行的信息。

3.根据权利要求1所述的flink任务适配hadoop生态的系统,其特征在于,代理服务层,包括:

任务适配解析模块,包括任务适配单元和任务解析单元,其中,任务适配单元用于将log4j依赖以及Prometheus参数适配于fink任务中;任务解析单元用于解析应用层提交的fink任务,为解析获得的fink任务添加checkpoint配置参数,将任务所需的资源依赖提交至Hadoop层的HDFS模块;

任务提交模块,用于自定义任务性能参数并将自定义的任务性能参数适配于经过解析的fink任务,将适配后的fink任务通过application模式提交至Hadoop层的YARN计算引擎模块;

任务停止模块,用于根据任务停止请求信息,向Hadoop层的YARN计算引擎模块的任务执行单元提交任务停止请求,并记录该flink任务的执行参数、任务属性、任务名称和jobid信息,将停止任务对应的savepoint文件地址存储至存储层的Redis;

任务状态检查模块,用于从监控服务层获取flink任务的运行状态和性能指标,根据性能指标判断是否检查YARN计算引擎模块中flink任务的运行状态,将获取的flink任务的运行状态同步到存储层的kafka中记录;

任务续跑模块,包括地址获取单元和任务续跑提交单元,其中,地址获取单元用于从HDFS模块获取ck或savepoint快照文件的地址,并将地址存储至存储层的Redis;任务续跑提交单元用于根据任务续跑请求信息从存储层的Redis中获取每个需要续跑的flink任务的ck或savepoint快照,向Hadoop层的YARN计算引擎模块重新提交任务续跑请求;

任务试运行模块,用于通过calcite模型解析试运行任务,将试运行的结果集写入临时数据存储服务模块中。

4.根据权利要求1所述的flink任务适配hadoop生态的系统,其特征在于,Hadoop层的HDFS模块中,依赖lib库用于写入应用层中任务解析单元提交的任务所需的资源依赖;ck文件库用于写入任务失败或达到创建时间时生成的ck文件;savepoint文件库用于写入任务停止时生成的savepoint文件。

5.根据权利要求1所述的flink任务适配hadoop生态的系统,其特征在于,Hadoop层的YARN计算引擎模块,包括:任务执行单元,用于为代理服务层中任务提交模块提交的flink任务分配计算空间,加载所述flink任务在HDFS模块中的依赖lib库,执行flink任务;

任务执行日志单元,用于解析fink任务在应用层中任务适配单元适配的log4j依赖,生成任务执行日志,将任务执行日志写入存储层的elasticsearch;以及用于读取fink任务在应用层中任务适配单元适配的Prometheus参数,生成监控指标并将监控指标推送至监控层的Prometheus模块;

任务记录单元,用于根据fink任务在应用层中任务解析单元添加的checkpoint参数,在任务失败或达到创建时间时生成ck文件,在任务停止时生成savepoint文件,为任务失败和任务续跑提供快照文件。

6.一种flink任务适配hadoop生态的方法,其特征在于,所述方法采用如权利要求1‑5任一所述的flink任务适配hadoop生态的系统进行flink任务适配hadoop生态,所述方法,包括:采用应用层中任务发布模块的任务构建单元构建fink任务,采用任务需求配置单元根据任务场景配置任务需求并将fink任务提交至代理服务层;

采用代理服务层中任务适配解析模块的任务适配单元将log4j依赖以及Prometheus参数适配于fink任务中,采用任务解析单元解析应用层提交的fink任务,为解析获得的fink任务添加checkpoint配置参数,将任务所需的资源依赖提交至Hadoop层HDFS模块的依赖lib库;

采用代理服务层中任务提交模块自定义任务性能参数并将自定义的任务性能参数适配于经过解析的fink任务,将适配后的fink任务通过application模式提交至Hadoop层的YARN计算引擎模块;

采用代理服务层中YARN计算引擎模块的任务执行单元,为代理服务层中任务提交模块提交的flink任务分配计算空间,加载flink任务在HDFS模块中的依赖lib库,执行flink任务;

采用代理服务层中YARN计算引擎模块的任务执行日志单元,解析fink任务在应用层中任务适配单元适配的log4j依赖,生成任务执行日志,将任务执行日志写入存储层的elasticsearch;采用任务执行日志单元读取fink任务在应用层中任务适配单元适配的Prometheus参数,生成监控指标并将监控指标推送至监控层的Prometheus模块;

采用代理服务层中YARN计算引擎模块的任务记录单元,根据fink任务在应用层中任务解析单元添加的checkpoint参数,在任务失败或达到创建时间时生成ck文件,在任务停止时生成savepoint文件,为任务失败和任务续跑提供快照文件;

采用代理服务层中任务状态检查模块从监控服务层的Prometheus模块中获取flink任务的运行状态和性能指标,根据性能指标判断是否检查YARN计算引擎模块中flink任务的运行状态,将获取的flink任务的运行状态同步到存储层的kafka中记录。

7.一种flink任务适配hadoop生态的方法,其特征在于,所述方法采用如权利要求1‑5任一所述的flink任务适配hadoop生态的系统进行flink任务适配hadoop生态,所述方法,包括:采用Hadoop层YARN计算引擎模块中任务记录单元在任务停止时生成savepoint文件,将生成的savepoint文件写入Hadoop层HDFS模块的savepoint文件库;

采用应用层中任务管理模块的任务停止请求单元向代理服务层的任务停止模块向发出任务停止的信息,任务停止模块根据任务停止请求信息,向Hadoop层的YARN计算引擎模块的任务执行单元提交任务停止请求,并记录该flink任务的执行参数、任务属性、任务名称和jobid信息,将停止任务对应的savepoint文件地址存储至存储层的Redis。

8.一种flink任务适配hadoop生态的方法,其特征在于,所述方法采用如权利要求1‑5任一所述的flink任务适配hadoop生态的系统进行flink任务适配hadoop生态,所述方法,包括:采用Hadoop层YARN计算引擎模块中任务记录单元在任务失败或达到创建时间时生成ck文件,将生成的ck文件写入Hadoop层HDFS模块的ck文件库;

采用应用层中任务管理模块的任务续跑请求单元向代理服务层的任务续跑模块发出任务续跑的信息,采用任务续跑模块中的地址获取单元从HDFS模块获取ck或savepoint快照文件的地址,并将地址存储至存储层的Redis;采用任务续跑模块中的任务续跑提交单元根据任务续跑请求信息从存储层的Redis中获取每个需要续跑的flink任务的ck或savepoint快照,向Hadoop层的YARN计算引擎模块重新提交任务续跑请求。

9.一种flink任务适配hadoop生态的方法,其特征在于,所述方法采用如权利要求1‑5任一所述的flink任务适配hadoop生态的系统进行flink任务适配hadoop生态,所述方法,包括:采用应用层中任务管理模块的任务试运行请求单元向代理服务层的任务试运行请求单元发出任务试运行的信息,采用任务试运行模块通过calcite模型解析试运行任务,将试运行的结果集写入临时数据存储服务模块中。

10.一种终端设备,其特征在于,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求6‑

9中任一项所述方法的步骤。

说明书 :

一种flink任务适配hadoop生态的系统和方法

技术领域

[0001] 本发明涉及大数据服务领域,尤其涉及一种flink任务适配hadoop生态的系统和方法。

背景技术

[0002] flink技术是一种基于大数据生态的实时计算任务,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。flink任务运行至yarn等大数据计算引擎后,将会实时常驻于计算引擎中,实时完成需要进行的计算任务等工作。
[0003] 现有的flink提交或是单纯的在应用程序中提交flink任务到yarn集群的实现,仅仅是解决了Hadoop配置文件和第三方依赖jar包的部署问题,存在以下缺陷:
[0004] 1、单纯的适配了Hadoop配置文件和第三方依赖jar包的部署问题,只是通过服务层将flink任务提交到hadoop的yarn计算引擎,提交之后就脱离服务层控制,看似避免了不同应用程序之间可能存在的相互干扰,实际并未解决单个独立flink任务的原子性;
[0005] 2、只是通过服务层将flink任务简单的提交到yarn计算引擎,未做任何根据任务本身的任务量或计算引擎的健康状态负载的性能适配,故无法通过应用系统灵活的配置任务所需的性能参数,无法根据实际的flink任务需求调整单个任务的各种性能参数在实际的复杂生产场景下会显得对任务掌控上的无力;
[0006] 3、由于flink任务本身是托管于yarn计算引擎执行,故其自身的执行日志和性能指标均在yarn计算引擎中才可查看,无法获实时获取到flink任务的日志,以及监控指标等;
[0007] 4、当flink任务被提交到yarn计算引擎托管后,碰到flink任务失败、或环境问题、数据问题时任务会出现出现脏数据问题;
[0008] 5、为适配ck机制导致当使用者需要调整正在运行的flink任务时无法对任务进行修改后,自动衔接上修改前的flink任务执行的停止点;
[0009] 6、未采用Prometheus监控导致无法准确的实时同步应用系统与yarn计算引擎上的flink任务状态;
[0010] 7、由于flink任务为实时计算流式任务,未采用临时数据存储服务,无法获取在线运行结果或试运行会影响正常任务运行的结果集。
[0011] 因此,如何提供一种更加全面可控的flink任务适配hadoop生态的方法,成为亟待解决的技术问题。

发明内容

[0012] 有鉴于此,本发明旨在解决现有技术中通过在应用程序中提交flink作业到yarn集群,对提交后的flink任务无法完全掌控的缺陷以及无法准确获取任务日志、状态、性能监控的问题。
[0013] 一方面,本发明提供一种flink任务适配hadoop生态的系统,包括:
[0014] 应用层,包括任务发布模块和任务管理模块,用于构建fink任务并提交至代理服务层,以及用于向代理服务层向发出任务停止、任务续跑或任务试运行的信息;
[0015] 代理服务层,包括任务适配解析模块、任务提交模块、任务停止模块、任务状态检查模块、任务续跑模块以及任务试运行模块,用于任务适配和解析,将任务所需的资源依赖提交至Hadoop层的HDFS以及用于任务提交发布、任务停止、任务状态检查、任务续跑以及任务试运行请求;
[0016] Hadoop层,包括HDFS模块和YARN计算引擎模块,其中,HDFS模块包括依赖lib库、ck文件库和savepoint文件库;YARN计算引擎模块包括任务执行单元、任务执行日志单元以及任务记录单元;HDFS模块用于写入应用层中任务解析单元提交的任务所需的资源依赖以及写入YARN计算引擎模块生成的ck文件和savepoint文件;YARN计算引擎模块用于执行flink任务,生成任务执行日志以及用于生成监控指标并将监控指标推送至监控层的Prometheus模块;
[0017] 监控服务层,包括Prometheus模块,用于从hadoop层的任务执行日志模块中实时获取监控指标,将flink任务的运行状态及性能指标发送至代理服务层的任务检查模块;
[0018] 存储层,包括Redis、Kafka、elasticsearch以及临时数据存储服务模块,其中,Redis用于存储ck或savepoint快照文件的HDFS地址,Kafka用于实时记录每个flink的任务状态,elasticsearch用于实时存储每个flink任务的执行日志,临时数据存储服务模块用于存储任务试运行数据。
[0019] 进一步地,本发明flink任务适配hadoop生态的系统的应用层中,任务发布模块包括任务构建单元和任务需求配置单元,任务构建单元用于构建fink任务,任务需求配置单元用于根据任务场景配置任务需求并将fink任务提交至代理服务层;任务管理模块包括任务停止请求单元、任务续跑请求单元以及任务试运行请求单元,分别用于发出任务停止、任务续跑或任务试运行的信息。
[0020] 进一步地,本发明flink任务适配hadoop生态的系统的代理服务层,包括:
[0021] 任务适配解析模块,包括任务适配单元和任务解析单元,其中,任务适配单元用于将log4j依赖以及Prometheus参数适配于fink任务中;任务解析单元用于解析应用层提交的fink任务,为解析获得的fink任务添加checkpoint配置参数,将任务所需的资源依赖提交至Hadoop层的HDFS模块;
[0022] 任务提交模块,用于自定义任务性能参数并将自定义的任务性能参数适配于经过解析的fink任务,将适配后的fink任务通过application模式提交至Hadoop层的YARN计算引擎模块;
[0023] 任务停止模块,用于根据任务停止请求信息,向Hadoop层的YARN计算引擎模块的任务执行单元提交任务停止请求,并记录该flink任务的执行参数、任务属性、任务名称和jobid信息,将停止任务对应的savepoint文件地址存储至存储层的Redis;
[0024] 任务状态检查模块,用于从监控服务层获取flink任务的运行状态和性能指标,根据性能指标判断是否检查YARN计算引擎模块中flink任务的运行状态,将获取的flink任务的运行状态同步到存储层的kafka中记录;
[0025] 任务续跑模块,包括地址获取单元和任务续跑提交单元,其中,地址获取单元用于从HDFS模块获取ck或savepoint快照文件的地址,并将地址存储至存储层的Redis;任务续跑提交单元用于根据任务续跑请求信息从存储层的Redis中获取每个需要续跑的flink任务的ck或savepoint快照,向Hadoop层的YARN计算引擎模块重新提交任务续跑请求;
[0026] 任务试运行模块,用于通过calcite模型解析试运行任务,将试运行的结果集写入临时数据存储服务模块中。
[0027] 进一步地,本发明flink任务适配hadoop生态的系统的Hadoop层的HDFS模块中,依赖lib库用于写入应用层中任务解析单元提交的任务所需的资源依赖;ck文件库用于写入任务失败或达到创建时间时生成的ck文件;savepoint文件库用于写入任务停止时生成的savepoint文件。
[0028] 进一步地,本发明flink任务适配hadoop生态的系统的Hadoop层的YARN计算引擎模块,包括:
[0029] 任务执行单元,用于为代理服务层中任务提交模块提交的flink任务分配计算空间,加载所述flink任务在HDFS模块中的依赖lib库,执行flink任务;
[0030] 任务执行日志单元,用于解析fink任务在应用层中任务适配单元适配的log4j依赖,生成任务执行日志,将任务执行日志写入存储层的elasticsearch;以及用于读取fink任务在应用层中任务适配单元适配的Prometheus参数,生成监控指标并将监控指标推送至监控层的Prometheus模块;
[0031] 任务记录单元,用于根据fink任务在应用层中任务解析单元添加的checkpoint参数,在任务失败或达到创建时间时生成ck文件,在任务停止时生成savepoint文件,为任务失败和任务续跑提供快照文件。
[0032] 另一方面,本发明提供一种flink任务适配hadoop生态的方法,包括:
[0033] 采用应用层中任务发布模块的任务构建单元构建fink任务,采用任务需求配置单元根据任务场景配置任务需求并将fink任务提交至代理服务层;
[0034] 采用代理服务层中任务适配解析模块的任务适配单元将log4j依赖以及Prometheus参数适配于fink任务中,采用任务解析单元解析应用层提交的fink任务,为解析获得的fink任务添加checkpoint配置参数,将任务所需的资源依赖提交至Hadoop层HDFS模块的依赖lib库;
[0035] 采用代理服务层中任务提交模块自定义任务性能参数并将自定义的任务性能参数适配于经过解析的fink任务,将适配后的fink任务通过application模式提交至Hadoop层的YARN计算引擎模块;
[0036] 采用代理服务层中YARN计算引擎模块的任务执行单元,为代理服务层中任务提交模块提交的flink任务分配计算空间,加载flink任务在HDFS模块中的依赖lib库,执行flink任务;
[0037] 采用代理服务层中YARN计算引擎模块的任务执行日志单元,解析fink任务在应用层中任务适配单元适配的log4j依赖,生成任务执行日志,将任务执行日志写入存储层的elasticsearch;采用任务执行日志单元读取fink任务在应用层中任务适配单元适配的Prometheus参数,生成监控指标并将监控指标推送至监控层的Prometheus模块;
[0038] 采用代理服务层中YARN计算引擎模块的任务记录单元,根据fink任务在应用层中任务解析单元添加的checkpoint参数,在任务失败或达到创建时间时生成ck文件,在任务停止时生成savepoint文件,为任务失败和任务续跑提供快照文件;
[0039] 采用代理服务层中任务状态检查模块从监控服务层的Prometheus模块中获取flink任务的运行状态和性能指标,根据性能指标判断是否检查YARN计算引擎模块中flink任务的运行状态,将获取的flink任务的运行状态同步到存储层的kafka中记录。
[0040] 进一步地,本发明提供的flink任务适配hadoop生态的方法,包括:
[0041] 采用Hadoop层YARN计算引擎模块中任务记录单元在任务停止时生成savepoint文件,将生成的savepoint文件写入Hadoop层HDFS模块的savepoint文件库;
[0042] 采用应用层中任务管理模块的任务停止请求单元向代理服务层的任务停止模块向发出任务停止的信息,任务停止模块根据任务停止请求信息,向Hadoop层的YARN计算引擎模块的任务执行单元提交任务停止请求,并记录该flink任务的执行参数、任务属性、任务名称和jobid信息,将停止任务对应的savepoint文件地址存储至存储层的Redis。
[0043] 进一步地,本发明提供的flink任务适配hadoop生态的方法,包括:
[0044] 采用Hadoop层YARN计算引擎模块中任务记录单元在任务失败或达到创建时间时生成ck文件,将生成的ck文件写入Hadoop层HDFS模块的ck文件库;
[0045] 采用应用层中任务管理模块的任务续跑请求单元向代理服务层的任务续跑模块发出任务续跑的信息,采用任务续跑模块中的地址获取单元从HDFS模块获取ck或savepoint快照文件的地址,并将地址存储至存储层的Redis;采用任务续跑模块中的任务续跑提交单元根据任务续跑请求信息从存储层的Redis中获取每个需要续跑的flink任务的ck或savepoint快照,向Hadoop层的YARN计算引擎模块重新提交任务续跑请求。
[0046] 进一步地,本发明提供的flink任务适配hadoop生态的方法,包括:采用应用层中任务管理模块的任务试运行请求单元向代理服务层的任务试运行请求单元发出任务试运行的信息,采用任务试运行模块通过calcite模型解析试运行任务,将试运行的结果集写入临时数据存储服务模块中。
[0047] 最后,本发明还提供一种终端设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现所述方法的步骤。
[0048] 本发明flink任务适配hadoop生态的系统和方法,具体的具有以下有益效果:
[0049] 1、实现运行在hadoop生态的yarn计算引擎上的单个独立flink任务的原子性;
[0050] 2、通过应用层灵活地配置任务所需的性能参数,使flink任务可以根据具体的生产场景进行任务的科学灵活调控;
[0051] 3、实现flink任务日志以及性能监控指标的实时获取;
[0052] 4、避免当计算引擎上flink任务失败时,任务会出现出现脏数据问题;
[0053] 5、避免了当任务因实习需求需要修改时,无法对任务进行修改导致的自动衔接修改前的flink任务执行的停止点的问题;
[0054] 6、实现了应用系统与yarn计算引擎上的flink任务状态的实时准确同步;
[0055] 7、实现了任务试运行结果的在线获取。
[0056] 本发明flink任务适配hadoop生态的系统和方法,可以提高系统对flink任务的操作性和可控性,减少用户劳动强度,节省系统资源,并拥有良好的可扩展性和伸缩性,适用于各种数据治理的生产场景。

附图说明

[0057] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0058] 图1为本发明示例性第一实施例一种flink任务适配hadoop生态的系统的架构图。
[0059] 图2为本发明示例性第四、五、六、七实施例flink任务适配hadoop生态的方法的流程图。
[0060] 图3为本发明示例性第四实施例flink任务适配hadoop生态的方法的flink任务发布时序图。
[0061] 图4为本发明示例性第四实施例flink任务适配hadoop生态的方法的日志提交和获取时序图。
[0062] 图5为本发明示例性第五实施例flink任务适配hadoop生态的方法的flink任务停止时序图。
[0063] 图6为本发明示例性第六实施例flink任务适配hadoop生态的方法的flink任务续跑时序图。
[0064] 图7为本发明示例性第七实施例flink任务适配hadoop生态的方法的flink任务试运行时序图。

具体实施方式

[0065] 下面结合附图对本发明实施例进行详细描述。
[0066] 需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合;并且,基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0067] 需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
[0068] 以下各实施例中涉及的名词解释如下:
[0069] ck:checkpoint的简称,是flink计算任务的一个数据库事件(event),checkpoint事件由checkpoint进程(LGWR/CKPT进程)发出,当checkpoint事件发生时DBWR会将脏块写入到磁盘中,同时数据文件和控制文件的文件头也会被更新以记录checkpoint信息。
[0070] Savepoint:是flink计算任务的事务过程中的一个逻辑点,用于取消部分事务,当结束事务时,会自动的删除该事务中所定义的所有保存点。当执行rollback时,通过指定保存点可以回退到指定的点。
[0071] Prometheus:是继Kubernetes之后,第二个从云原生计算基金会(CNCF)毕业的项目。Prometheus是Google监控系统BorgMon类似实现的开源版,整套系统由监控服务、告警服务、时序数据库等几个部分,及周边生态的各种指标收集器(Exporter)组成,是在当下主流的云原生监控告警系统。
[0072] Hadoop:Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
[0073] YARN:全称Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者),是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
[0074] HDFS:HDFS是Hadoop其中一个组件,被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
[0075] 本发明的理论技术简述如下:
[0076] 通过应用层解析需要提交的各种flink任务,通过代理服务层装配当前任务所需的性能参数,将该任务所需的资源上传到HDFS上当前任务的lib目录下,实现单个flink任务的原子性,确保flink任务可以根据具体的生产场景进行任务的科学灵活调控;通过代理服务层获取YARN计算引擎上flink任务的状态,实时同步到kafka中间件提供给应用层;通过代理服务层到Prometheus模块上获取flink任务的监控指标;通过修改log4j的源码,适配flink任务实时获取flink任务的日志;通过代理服务层配置生成主动停止的flink任务的savepoint,以及自主生成的checkpoint并将对应信息存入到redis中间件,解决任务进行修改后自动衔接上修改前的flink任务执行的停止点、以及任务失败时任务会出现出现脏数据问题等问题;使用calcite模型解析对应的flinksql任务,适配对应的sink实现任务结果实时试运行并获取的同时不影响正常运行的任务。
[0077] 图1为根据本发明示例性第一实施例的一种flink任务适配hadoop生态的系统的架构图,如图1所示,本实施例所述系统,包括:
[0078] 应用层,包括任务发布模块和任务管理模块,用于构建fink任务并提交至代理服务层,以及用于向代理服务层向发出任务停止、任务续跑或任务试运行的信息;
[0079] 代理服务层,包括任务适配解析模块、任务提交模块、任务停止模块、任务状态检查模块、任务续跑模块以及任务试运行模块,用于任务适配和解析,将任务所需的资源依赖提交至Hadoop层的HDFS以及用于任务提交发布、任务停止、任务状态检查、任务续跑以及任务试运行请求;
[0080] Hadoop层,包括HDFS模块和YARN计算引擎模块,其中,HDFS模块包括依赖lib库、ck文件库和savepoint文件库;YARN计算引擎模块包括任务执行单元、任务执行日志单元以及任务记录单元;HDFS模块用于写入应用层中任务解析单元提交的任务所需的资源依赖以及写入YARN计算引擎模块生成的ck文件和savepoint文件;YARN计算引擎模块用于执行flink任务,生成任务执行日志以及用于生成监控指标并将监控指标推送至监控层的Prometheus模块;
[0081] 监控服务层,包括Prometheus模块,用于从hadoop层的任务执行日志模块中实时获取监控指标,将flink任务的运行状态及性能指标发送至代理服务层的任务检查模块;
[0082] 存储层,包括Redis、Kafka、elasticsearch以及临时数据存储服务模块,其中,Redis用于存储ck或savepoint快照文件的HDFS地址,Kafka用于实时记录每个flink的任务状态,elasticsearch用于实时存储每个flink任务的执行日志,临时数据存储服务模块用于存储任务试运行数据。
[0083] 本实施例flink任务适配hadoop生态的系统的应用层中,任务发布模块包括任务构建单元和任务需求配置单元,任务构建单元用于构建fink任务,任务需求配置单元用于根据任务场景配置任务需求并将fink任务提交至代理服务层;任务管理模块包括任务停止请求单元、任务续跑请求单元以及任务试运行请求单元,分别用于发出任务停止、任务续跑或任务试运行的信息。
[0084] 本发明示例性第二实施例提供一种flink任务适配hadoop生态的系统,本实施例是图1所示系统的优选实施例,本实施例中系统的代理服务层,包括:
[0085] 任务适配解析模块,包括任务适配单元和任务解析单元,其中,任务适配单元用于将log4j依赖以及Prometheus参数适配于fink任务中;任务解析单元用于解析应用层提交的fink任务,为解析获得的fink任务添加checkpoint配置参数,将任务所需的资源依赖提交至Hadoop层的HDFS模块;
[0086] 任务提交模块,用于自定义任务性能参数并将自定义的任务性能参数适配于经过解析的fink任务,将适配后的fink任务通过application模式提交至Hadoop层的YARN计算引擎模块;
[0087] 任务停止模块,用于根据任务停止请求信息,向Hadoop层的YARN计算引擎模块的任务执行单元提交任务停止请求,并记录该flink任务的执行参数、任务属性、任务名称和jobid信息,将停止任务对应的savepoint文件地址存储至存储层的Redis;
[0088] 任务状态检查模块,用于从监控服务层获取flink任务的运行状态和性能指标,根据性能指标判断是否检查YARN计算引擎模块中flink任务的运行状态,将获取的flink任务的运行状态同步到存储层的kafka中记录;
[0089] 任务续跑模块,包括地址获取单元和任务续跑提交单元,其中,地址获取单元用于从HDFS模块获取ck或savepoint快照文件的地址,并将地址存储至存储层的Redis;任务续跑提交单元用于根据任务续跑请求信息从存储层的Redis中获取每个需要续跑的flink任务的ck或savepoint快照,向Hadoop层的YARN计算引擎模块重新提交任务续跑请求;
[0090] 任务试运行模块,用于通过calcite模型解析试运行任务,将试运行的结果集写入临时数据存储服务模块中。
[0091] 本发明示例性第三实施例提供一种flink任务适配hadoop生态的系统,本实施例是图1所示系统的优选实施例。
[0092] 本实施例系统的Hadoop层的HDFS模块中,依赖lib库用于写入应用层中任务解析单元提交的任务所需的资源依赖;ck文件库用于写入任务失败或达到创建时间时生成的ck文件;savepoint文件库用于写入任务停止时生成的savepoint文件。
[0093] 本实施例系统的Hadoop层的YARN计算引擎模块,包括:
[0094] 任务执行单元,用于为代理服务层中任务提交模块提交的flink任务分配计算空间,加载所述flink任务在HDFS模块中的依赖lib库,执行flink任务;
[0095] 任务执行日志单元,用于解析fink任务在应用层中任务适配单元适配的log4j依赖,生成任务执行日志,将任务执行日志写入存储层的elasticsearch;以及用于读取fink任务在应用层中任务适配单元适配的Prometheus参数,生成监控指标并将监控指标推送至监控层的Prometheus模块;
[0096] 任务记录单元,用于根据fink任务在应用层中任务解析单元添加的checkpoint参数,在任务失败或达到创建时间时生成ck文件,在任务停止时生成savepoint文件,为任务失败和任务续跑提供快照文件。
[0097] 本发明示例性第四实施例提供一种flink任务适配hadoop生态的方法,本实施例的方法采用图1所述flink任务适配hadoop生态的系统进行flink任务适配hadoop生态,本实施例方法的流程参见图2,具体的,采用图1所述flink任务适配hadoop生态的系统按照图2所示方法进行flink任务的发布提交,包括:
[0098] 采用应用层中任务发布模块的任务构建单元构建fink任务,采用任务需求配置单元根据任务场景配置任务需求并将fink任务提交至代理服务层;
[0099] 采用代理服务层中任务适配解析模块的任务适配单元将log4j依赖以及Prometheus参数适配于fink任务中,采用任务解析单元解析应用层提交的fink任务,为解析获得的fink任务添加checkpoint配置参数,将任务所需的资源依赖提交至Hadoop层HDFS模块的依赖lib库;
[0100] 采用代理服务层中任务提交模块自定义任务性能参数并将自定义的任务性能参数适配于经过解析的fink任务,将适配后的fink任务通过application模式提交至Hadoop层的YARN计算引擎模块;
[0101] 采用代理服务层中YARN计算引擎模块的任务执行单元,为代理服务层中任务提交模块提交的flink任务分配计算空间,加载flink任务在HDFS模块中的依赖lib库,执行flink任务;
[0102] 采用代理服务层中YARN计算引擎模块的任务执行日志单元,解析fink任务在应用层中任务适配单元适配的log4j依赖,生成任务执行日志,将任务执行日志写入存储层的elasticsearch;采用任务执行日志单元读取fink任务在应用层中任务适配单元适配的Prometheus参数,生成监控指标并将监控指标推送至监控层的Prometheus模块;
[0103] 采用代理服务层中YARN计算引擎模块的任务记录单元,根据fink任务在应用层中任务解析单元添加的checkpoint参数,在任务失败或达到创建时间时生成ck文件,在任务停止时生成savepoint文件,为任务失败和任务续跑提供快照文件。
[0104] 采用代理服务层中任务状态检查模块从监控服务层的Prometheus模块中获取flink任务的运行状态和性能指标,根据性能指标判断是否检查YARN计算引擎模块中flink任务的运行状态,将获取的flink任务的运行状态同步到存储层的kafka中记录。
[0105] 图3为按本实施例方法的flink任务发布时序图,调用方向代理服务层发送命令请求,代理服务层向用户返回等待提交的状态信息,并向HDFS模块请求下载对应要运行的jar,当flink sql和flinkDAG任务调用请求时使用获得的jar,将flink任务提交至YARN计算引擎模块,YARN计算引擎模块将结果返回至代理服务层,代理服务层将结果返回至调用方,并将对应的任务状态写入kafka。调用方将消费任务状态发送至kafka,kafka修改对应任务状态并将修改后的任务状态发送至调用方。
[0106] 图4为按本实施例方法中日志提交和获取时序图,YARN将对应任务日志写入elasticsearch,调用方向代理服务层发送命令请求,代理服务层从elasticsearch中查询对应的日志信息,获取对应的日志,将结果返回至调用方。
[0107] 本发明示例性第五实施例提供一种flink任务适配hadoop生态的方法,本实施例的方法采用图1所述flink任务适配hadoop生态的系统进行flink任务适配hadoop生态,本实施例方法的流程参见图2,具体的,采用图1所述flink任务适配hadoop生态的系统按照图2所示方法进行flink任务的停止,包括:
[0108] 采用Hadoop层YARN计算引擎模块中任务记录单元在任务停止时生成savepoint文件,将生成的savepoint文件写入Hadoop层HDFS模块的savepoint文件库;
[0109] 采用应用层中任务管理模块的任务停止请求单元向代理服务层的任务停止模块向发出任务停止的信息,任务停止模块根据任务停止请求信息,向Hadoop层的YARN计算引擎模块的任务执行单元提交任务停止请求,并记录该flink任务的执行参数、任务属性、任务名称和jobid信息,将停止任务对应的savepoint文件地址存储至存储层的Redis。
[0110] 图5为按本实施例方法的flink任务停止时序图,调用方向代理服务层发送命令请求,代理服务层取消YARN计算引擎模块中flink任务的运行,将任务停止时的savepoint信息写入redis并将任务状态(已停止)写入kafka,代理服务层向调用方返回任务停止的结果,kafka向调用方消费任务状态(已停止)。
[0111] 本发明示例性第六实施例提供一种flink任务适配hadoop生态的方法,本实施例的方法采用图1所述flink任务适配hadoop生态的系统进行flink任务适配hadoop生态,本实施例方法的流程参见图2,具体的,采用图1所述flink任务适配hadoop生态的系统按照图2所示方法进行flink任务的续跑,包括:
[0112] 采用Hadoop层YARN计算引擎模块中任务记录单元在任务失败或达到创建时间时生成ck文件,将生成的ck文件写入Hadoop层HDFS模块的ck文件库;
[0113] 采用应用层中任务管理模块的任务续跑请求单元向代理服务层的任务续跑模块发出任务续跑的信息,采用任务续跑模块中的地址获取单元从HDFS模块获取ck或savepoint快照文件的地址,并将地址存储至存储层的Redis;采用任务续跑模块中的任务续跑提交单元根据任务续跑请求信息从存储层的Redis中获取每个需要续跑的flink任务的ck或savepoint快照,向Hadoop层的YARN计算引擎模块重新提交任务续跑请求。
[0114] 图6为按本实施例方法的flink任务续跑时序图,调用方向代理服务层发送命令请求,代理服务层向Redis请求获取当前续跑任务的savepoint信息,续跑YARN中的flink任务,YARN将任务续跑请求结果返回至代理服务层,代理服务层将结果返回至调用方。
[0115] 本发明示例性第七实施例提供一种flink任务适配hadoop生态的方法,本实施例的方法采用图1所述flink任务适配hadoop生态的系统进行flink任务适配hadoop生态,本实施例方法的流程参见图2,具体的,采用图1所述flink任务适配hadoop生态的系统按照图2所示方法进行flink任务的试运行,包括:采用应用层中任务管理模块的任务试运行请求单元向代理服务层的任务试运行请求单元发出任务试运行的信息,采用任务试运行模块通过calcite模型解析试运行任务,将试运行的结果集写入临时数据存储服务模块中。
[0116] 图7为按本实施例方法的flink任务试运行时序图,调用方向代理服务层发送命令请求,代理服务层向YARN提交试运行任务,YARN将试运行结果暂存至临时数据存储服务模块。
[0117] 本发明还提供一种终端设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现所述方法的步骤。
[0118] 该终端设备具有上述flink任务适配hadoop生态的系统和方法相应的技术效果。
[0119] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。