1.本发明属于大数据技术领域,具体提出一种基于流计算的集群数据共享方法及装置。
背景技术:2.在集群数据管理业务中,经常有业务方要求将集群内数据共享,并对共享的数据进行处理,例如过滤、字段筛选、数据脱敏、加密等。
3.现有的数据共享流程一般由业务方提出数据共享的需求,数据开发人员根据需求以及业务数据的实际情况,使用离线计算框架,开发代码或者编写脚本;并向集群维护人员申请相关数据的使用权限、存储空间和计算资源等;获得相关资源后,将可执行文件注册到集群某个主机的启动过程或者定时任务,以此实现任务的执行管理。
技术实现要素:4.本发明公开了一种基于流计算的集群数据共享方法及装置,聚焦于解决集群数据共享的功能实现、以及共享过程中的各种辅助功能的实现。
5.为达到上述目的,本发明采用如下技术方案:
6.一种基于流计算的集群数据共享方法,其步骤包括:
7.获取数据共享需求,所述数据共享需求包括:业务规则和数据发送方式;
8.基于所述数据发送方式,生成参与数据共享的用户以及所述用户的用户凭证;
9.对所述业务规则进行转换,获取具有流式sql语法规则的sql语句;
10.基于系统资源配额与所述具有流式sql语法规则的sql语句,生成数据共享任务;
11.执行所述数据共享任务。
12.进一步地,所述业务规则包括:是否对数据进行筛选、指定共享的字段、是否加密、否脱敏和将数据发送给外部用户的方式。
13.进一步地,所述基于所述数据发送方式,生成参与数据共享的用户以及所述用户的用户凭证,包括:
14.根据所述数据发送方式,创建ftp目录与kafka topic;
15.基于所述ftp目录与所述kafka topic,生成参与数据共享的用户以及所述用户的用户凭证。
16.进一步地,对所述业务规则进行转换,获取具有流式sql语法规则的sql语句,包括:
17.将所述业务规则转变为大于等于或小于等于的语句片段;
18.拼接所述语句片段中的内容,以生成sql语句,所述内容包括:名称、表名和关键字;
19.依据flink引擎的流式sql语法规则,对所述sql语句进行修改,得到具有流式sql语法规则的sql语句。
20.进一步地,所述对所述sql语句进行修改,包括:
21.添加共享位置、添加watermark字段和添加用于实现加密脱敏的自定义函数。
22.进一步地,所述执行所述数据共享任务之前,还包括:
23.系统管理员审批所述数据共享任务;
24.审批通过后,将所述数据共享任务中的共享操作保存为系统审计记录。
25.进一步地,所述执行所述数据共享任务,包括:
26.将所述数据共享任务的任务信息转换为json数据文件;
27.将所述json数据文件作为任务启动的参数传入,并在执行所述数据共享任务时,基于json数据文件,按照所述数据共享任务的描述内容执行数据共享操作。
28.进一步地,所述执行所述数据共享任务,还包括:
29.将所述数据共享任务提交到flink执行引擎;
30.所述数据共享任务中的底层任务执行通过flink实现,其中,实现的模式包括:负责大流量kafka输出任务的集群执行模式和负责ftp目录共享的单机执行模式;
31.以restful api的形式开放接口,由最上层的可视化界面调用。
32.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为处理器运行时执行上述任一所述方法。
33.一种电子装置,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一所述方法。
34.与现有技术相比,本发明至少具有以下有益效果:
35.1.流数据处理能够减少数据延迟,提高执行效率。使用离线数据处理的方式,一般在每天或者每个小时执行数据,任务的执行时间相对集中,难以有效利用集群资源。
36.2.一体化的数据共享任务管理,解决了以前数据共享任务零散、难以追溯的管理问题。同时可以灵活的配置任务的启停时间、有效期限,保证数据的安全。
37.3.对业务友好的配置方式。原有的数据共享任务一般是让开发人员根据业务的要求编写脚本或者代码,通过注册定时任务管理。这种方式需要开发人员熟悉业务,增加实施的成本。在界面中,业务人员可以根据需求进行配置,解除了对开发人员的依赖。
附图说明
38.图1本发明的集群数据共享方法的流程图。
39.图2页面转换规则的界面配置示意图。
40.图3本发明的集群数据共享装置的系统架构图。
具体实施方式
41.为了使本技术领域的人员更好的理解本发明,下面结合附图和实施方式对本发明作进一步的详细说明。
42.本发明的集群数据共享方法,使用流处理框架执行数据共享任务,通过建立统一的共享任务管理模块,用于任务的创建、分发、状态管理和监控,并开放对应的api接口,依据部署的可视化界面,实现任务配置、资源申请、审核和任务数据展示等功能,并调用管理引擎的相关接口。具体来说,如图1所示,本发明的方法包括:
43.步骤1:获取数据共享需求。
44.一示例中,本发明的数据共享需求包括:业务规则和数据发送方式。其中,业务规则是指对外数据共享的描述,例如是否对数据进行筛选、指定共享的字段、是否加密或者脱敏、将数据发送给外部用户的方式等。
45.步骤2:生成用户。
46.一示例中,本发明根据上述的数据发送方式,创建ftp目录、kafka topic等,并生成用户与用户凭证。ftp目录的访问信息包括ftp主机和端口号、用户名、密码等,消息队列kafka的访问信息包括bootstrap servers、kerberos principal、keytab等。外部用户可以使用访问信息获取共享数据。
47.步骤3:业务规则转换。
48.一示例中,本发明先将上述的业务规则转变为规则配置,第一部分过滤规则分为四项:组合关系、字段、操作符、值。组合关系可选and或者or,表示配置项之间的条件叠加,操作符可选大于、大于等于、小于、小于等于、等于、包含值、包含字符串、匹配正则等。四项组合可以满足基础过滤功能要求。第二部分针对字段的加密、脱敏或者其他操作,直接保存一个字段与处理方式的二元组;第三部分选择输出的字段列表,如图2所示,界面通过元数据访问接口,获取数据库、表、字段等内容,并预置操作符、处理方式等内容,用户可以在界面点击选择完成上述配置操作,对系统用户更友好,提高效率。界面配置完成后,在后端程序中转换成条件语句和加密、脱敏操作的udf函数,然后再拼接上述配置的字段列表、表名、关键字等,从而生成sql语句;最后依据flink引擎的流式sql语法规则,对sql语句做一定的修改,例如添加共享位置、watermark字段等,或者添加自定义函数,用于实现加密脱敏等功能。
49.步骤4:生成任务。
50.一示例中,本发明基于上述修改后的sql语句,用户信息和凭证以及任务的cpu、内存等资源配额等,生成任务信息并保存到任务数据库,并等待审批。
51.步骤5:任务审批管理。
52.一示例中,本发明通过系统管理员的审批,防止在数据共享的过程中出现信息泄漏的情况。进一步地,系统会记录所有共享相关的操作,保存为系统审计记录。
53.步骤6:启动任务。
54.一示例中,本发明将任务信息转换为json数据文件,作为任务启动的参数传入,执行时程序读取json,按照任务的描述内容执行数据共享操作。系统将编写好的sql语句提交至flink执行引擎,flink执行引擎对所述sql语句进行解析获得udf函数、数据源和数据目标,所述flink执行引擎基于udf函数、数据源和数据目标进行数据处理,并将处理后的数据输出。
55.此外,本发明还公开了一种基于流计算的集群数据共享装置,如图2所示,该集群数据共享装置的系统运行在数据共享集群中,底层任务执行通过flink实现,模式分别是集群和单机执行。其中集群执行负责大流量的kafka输出任务,单机执行负责ftp目录共享的模式。共享任务管理模块用于任务的创建、分发、状态管理和监控和调度方式配置等,该模块负责调用将任务提交到flink执行引擎,同时以restful api的形式开放接口,由最上层的可视化界面调用。
56.流式输出提供接近于批处理的数据处理性能,以数据过滤任务为测试用例,分别写入ftp和kafka消息队列,对比单个任务的数据流量,得出以下测试数据:
57.测试内容流处理框架速率离线框架速率单个条件ftp输出112.4mb/s120.7mb/s单个条件kafka输出502.2mb/s536.1mb/s
58.表1测试数据对比
59.尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变换和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
技术特征:1.一种基于流计算的集群数据共享方法,其步骤包括:获取数据共享需求,所述数据共享需求包括:业务规则和数据发送方式,所述数据发送方式包括:参与数据共享的客户端;基于所述数据发送方式,生成共享任务中的用户以及所述用户的用户凭证;对所述业务规则进行转换,获取具有流式sql语法规则的sql语句;基于系统资源配额、所述用户、所述用户凭证以及所述具有流式sql语法规则的sql语句,生成数据共享任务;执行所述数据共享任务。2.如权利要求1所述的方法,其特征在于,所述业务规则包括:是否对数据进行筛选、指定共享的字段、是否加密、否脱敏和将数据发送给外部用户的方式。3.如权利要求1所述的方法,其特征在于,所述基于所述数据发送方式,生成共享任务中的用户以及所述用户的用户凭证,包括:根据所述数据发送方式,创建ftp目录与kafka topic,并设定所述ftp目录的访问信息包括:ftp主机、ftp主机的端口号、用户名和密码,所述kafka topic相应的消息队列kafka的访问信息包括:bootstrap servers、kerberos principal和keytab;结合所述ftp目录的访问信息与所述消息队列kafka的访问信息,得到所述用户的用户凭证。4.如权利要求1所述的方法,其特征在于,对所述业务规则进行转换,获取具有流式sql语法规则的sql语句,包括:基于过滤规则,过滤所述业务规则,所述过滤规则包括:组合关系、字段、操作符与值;对过滤后的业务规则,进行字段的加密与脱敏处理,以得到字段与处理方式的二元组;依据是业务规则中指定的共享字段,将从数据管理方获取所有数据的topic名称、字段名称和字段类型,展示在界面上;结合在所述界面上预置的操作符与所述处理方式,用户业务规则配置操作;将过滤规则转换成条件语句;将共享字段和处理方式转换为udf函数,以生成语句片段;拼接所述条件语句与所述语句片段,得到sql语句;依据flink引擎的流式sql语法规则,对所述sql语句进行修改,得到具有流式sql语法规则的sql语句。5.如权利要求4所述的方法,其特征在于,所述对所述sql语句进行修改,包括:添加共享位置、添加watermark字段和添加用于实现加密脱敏的自定义函数。6.如权利要求1所述的方法,其特征在于,所述执行所述数据共享任务之前,还包括:系统管理员审批所述数据共享任务;审批通过后,将所述数据共享任务中的共享操作保存为系统审计记录。7.如权利要求1所述的方法,其特征在于,所述执行所述数据共享任务,包括:将所述数据共享任务的任务信息转换为json数据文件;将所述json数据文件作为任务启动的参数传入,并在执行所述数据共享任务时,基于json数据文件,按照所述数据共享任务的描述内容执行数据共享操作。8.如权利要求1所述的方法,其特征在于,所述执行所述数据共享任务,还包括:
将所述数据共享任务提交到flink执行引擎;所述数据共享任务中的底层任务执行通过flink实现,其中,实现的模式包括:负责大流量kafka输出任务的集群执行模式和负责ftp目录共享的单机执行模式;以restful api的形式开放接口,由最上层的可视化界面调用。9.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为处理器运行时执行权利要求1-8中任一所述方法。10.一种电子装置,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-8中任一所述方法。
技术总结公开了一种基于流计算的集群数据共享方法及装置,所述方法包括:获取数据共享需求,所述数据共享需求包括:业务规则和数据发送方式,所述数据发送方式包括:参与数据共享的客户端;基于所述数据发送方式,生成共享任务中的用户以及所述用户的用户凭证;对所述业务规则进行转换,获取具有流式SQL语法规则的SQL语句;基于系统资源配额、所述用户、所述用户凭证以及所述具有流式SQL语法规则的SQL语句,生成数据共享任务;执行所述数据共享任务。本发明降低流数据处理系统的数据接入难度,提高整个数据处理系统的吞吐量。本发明减少数据延迟,提高执行效率,并且可以灵活的配置任务的启停时间、有效期限,保证数据的安全。保证数据的安全。保证数据的安全。
技术研发人员:李晓雪 任彦 郑礼雄 薛晨 易立 窦禹 王一宇 杨昕雨 张博文
受保护的技术使用者:国家计算机网络与信息安全管理中心
技术研发日:2022.06.17
技术公布日:2022/11/1