一种基于数据融合的数据中心数据清洗系统的制作方法

文档序号:26050444发布日期:2021-07-27 15:25阅读:126来源:国知局
一种基于数据融合的数据中心数据清洗系统的制作方法
本发明涉及一种基于数据融合的数据中心数据清洗系统。
背景技术
:以下以政务行业为例,介绍数据融合平台的相关技术背景。政务信息化现状:(1)重建设轻应用、重硬件轻软件的状况尚需改善;(2)条块分割、信息孤岛现象依然比较严重;(3)信息共享和业务协同的程度亟待提高;(4)网络和信息安全的态势不容乐观;数据开放共享诉求:法律法规层面:“信息孤岛”和数据壁垒,影响了数据开放与共享水平;阻碍政府公共服务能力提升;阻碍行业内数据、行业间数据的价值利用及创新等。政府层面:数据开放与共享,是推进政府公共服务体系现代化、以及提升政府公共服务能力的必由之路;数据开放与共享推动大众创新、挖掘数据价值,推动经济发展,服务实体经济。公众层面:公众期望得到更加优质的政府公共服务,及公开、透明的政务信息;行业数据价值挖掘推动数据交易市场发展,提升实体经济竞争力。安全层面:数据和网络的安全是数据开放与共享的核心基础与前提条件,事关国家的核心利益。数据开放共享需求多样性:数据需求方多,针对同一个数据源,需求方至少包括上级主管部门、同级部门之间、企事业单位、公众、大数据交易机构等;而不同的需求方对数据类别需求不一样;对数据内容要求不一样;对数据安全性要求不一样。数据开放共享现状:没有统一的接入标准:数据通路跨行业、跨地域、跨网络、跨业务领域。导致重复建设、成本高、周期长。没有统一的管控标准:接入方式单一、分头建设、无法实施集中的管控策略,数据审计缺失,导致传输时效性差、统一监管难、无法审计,无法追溯。没有统一的安全标准:网络、数据、应用安全需求多样;数据共享开放安全(数据访问权限、共享开放的范围与方式)标准缺失,导致通路安全无保障、数据共享无分级、敏感场景易泄密。没有统一的数据标准:,数据源异构、数据结构复杂、没有统一的数据标准,导致采集难度大、数据质量低、服务能力弱。数据开放共享解决方案:针对数据开放共享的现状,市面上开始出现各种解决方案产品,名称各异,统称为数据融合平台。数据融合平台“以数据源为中心,以数据开放共享需求为驱动,安全为保障”,为信息资源拥有者提供数据开放与共享统一解决方案,实现数据安全开放与共享;同时提供外部数据采集、导入等功能。数据融合平台对内连接所有数据源,对外连接有数据消费需求的应用,通过安全管道、服务管控、加密等功能,实现数据安全开放与共享,它是数据资源拥有者的数据进出的安全可控通道。目前主流的数据融合平台,其系统架构图如图1所示,其中采集器模块部署在数据源端,通常是业务部门的局域网中,主要用于采集数据和简单的数据清洗,一方面由于数据源部署在局域网中,无法直接访问,另一方面,数据源的数据需要加密传输,防止被网络黑客窃取,基于这两点考虑,需要在数据源端部署单独的采集器模块,通过双网卡,采集器既可以访问局域网内部的数据源系统,又可以连接到公网上的数据中心;数据融合管理模块,主要用于远程部署采集器模块、配置和管理数据采集任务、配置数据目录、配置和发布共享数据、管理数据等;数据中心模块,主要用于发布数据采集任务到各个采集器模块、接收和处理采集器模块传输的数据、对数据进行清理和存储、为数据融合管理模块管理数据提供支撑;数据存储模块用于存储海量数据,包括hdfs、hive、hbase、solr等大数据组件。现有技术的缺点:(1)数据清洗分散,很容易由于程序版本的差异导致错误数据融合平台中的采集器模块,需要每个数据源都部署一套,这样就产生了很多个采集器备份,采集器的部署是通过登录数据融合管理模块进行下载和本地安装或升级,因此部分采集器未及时更新版本时有发生。为了缓解数据中心的数据清洗压力,一些简单的、通用的清洗任务集成到采集器中,即采集器采集数据后,先进行简单的数据清洗工作,然后再加密传输数据,如果不同的采集器在数据清洗部分程序版本不一致,将会导致对于同样的数据结构,清理结果不一致;其次,为了保证能够存储尽可能原始的数据,避免过多的数据清洗导致数据变样,采集器模块仅承担一部分数据清洗任务,剩余的由数据中心承担,由此数据中心可以存储原始数据,这就涉及到采集器和数据中心的相互配合和匹配,若两者之间的程序版本不匹配,也可能导致一些问题。(2)数据清洗和数据采集耦合在一起,互相影响为了实现数据采集的自动执行,数据融合平台采用了任务管理机制,即通过新建采集任务,规定要发布的目的地,要采集的数据源信息、采集的时间和频率、对采集的数据做怎样的清洗工作、清洗完毕后如何存储等。任务将被发送到采集器进行执行,采集的数据回传任务编号,数据中心收到后,根据任务指定的数据清洗规则进行数据清洗处理,处理完毕后,给予采集器应答,尔后采集器开始采集下一批数据。由于数据清洗的过程和数据采集的过程合并在一起,形成一条流水线,当数据清洗过程发生错误,也会同时导致数据采集的任务失败,并且数据清洗的过程将会阻断数据采集的过程,影响采集的效率;通常数据清洗耗时比较久,若长时间占用采集器和数据中心之间的网络连接,那么其它采集器将排队等候资源空闲,这在一定程度上限制了数据中心的并发连接数量,不利于大规模数据源的数据采集。(3)数据清洗的可视化编程功能单一,不能适应复杂的数据清洗需求数据融合平台由于在设置采集任务的时候需要同时设置数据清洗规则,因此需要提供可视化编程的方式,让用户可以很轻松的配置数据清洗规则,由于数据的不可预知性,要涵盖尽可能全面的清洗规则,开发成本太高,因此目前的数据融合平台仅提供简单的清洗规则,无法适应复杂数据清洗的需求,而已有的专业的可视化etl工具,无法直接对接,只能作为额外的辅助模块,不能和系统融为一体,形成完整的自动化体系。技术实现要素:发明目的:为解决
背景技术
中存在的技术问题,本发明提出一种基于数据融合的数据中心数据清洗系统,包括数据融合管理模块、采集器模块、数据中心模块、数据存储模块、消息中间件模块、清洗中心模块和kettle集群模块;其中,所述数据融合管理模块用于配置和管理数据采集任务、数据清洗任务、数据清洗规则;启动数据采集任务时,将数据采集任务分发到任务描述中指定的采集器模块执行,停止数据采集任务时,停止向采集器模块分派数据采集任务;启动数据清洗任务时,标识相应的数据采集任务的数据清洗开关为需要对其采集的数据进行数据清洗;停止数据清洗任务时,标识相应的数据采集任务的数据清洗开关为不需要对其采集的数据进行数据清洗;所述采集器模块部署在数据源端,用于接收和执行来自数据融合管理模块分派的数据采集任务,从数据源抽取数据,然后发送到数据中心模块;所述数据中心模块用于接收和存储来自采集器模块采集的数据,并根据数据采集任务标识的数据清洗开关判断是否要对新增存储的数据进行清洗,如果需要清洗,则将新增存储的数据的描述信息存入消息中间件模块的指定消息队列中,然后继续接收采集器模块发送的数据,如果不需要清洗,则直接继续接收采集器模块发送的数据,所述数据的描述信息,即数据在数据存储模块中的数据名称、数据存储位置、数据起止编号或范围;所述数据存储模块用于数据的持久化存储;所述消息中间件模块用于存储数据中心模块投递的数据的描述信息;所述清洗中心模块用于调度和管理若干个称为“数据清洗task”的进程以执行数据清洗任务,每个数据清洗task进程自动侦听消息中间件模块中的数据描述信息的消息,并取出消息,将消息所包含的数据描述信息连同数据清洗任务中的清洗规则提交给kettle集群模块进行数据清洗处理,并在处理完成后获取处理的结果、记录结果,然后继续侦听消息中间件模块中的数据描述信息消息,循环往复;所述kettle集群模块用于可视化设计数据清洗规则并发布到数据融合管理模块进行管理和关联到数据清洗任务,并在启动数据清洗任务后由清洗中心模块调度清洗规则和要清洗的数据给kettle集群模块执行数据清洗工作。所述数据融合管理模块一方面用于新建数据采集任务,新建的数据采集任务启动后,所述任务将按照采集频率周期性地发送到相应的采集器模块,由采集器模块根据任务规定进行数据的采集,采集的数据被传输到数据中心模块后,由数据中心模块进行处理,当数据采集任务停止后,所述任务将不再发送到相应的采集器模块;所述数据融合管理模块另一方面用于新建数据清洗任务,在数据清洗任务中关联kettle集群模块设计的数据清洗规则文件,新建的数据清洗任务启动后,根据数据清洗任务中的数据名称匹配相应的数据采集任务,将数据采集任务的数据清洗开关标识为需要清洗数据,数据清洗任务停止后,根据数据清洗任务中的数据名称匹配相应的数据采集任务,将数据采集任务的数据清洗开关标识为不需要清洗数据,当数据中心模块接收到采集器模块的数据,并根据数据采集任务描述的存储位置存储数据后,进一步判断数据采集任务中的数据清洗开关是否打开,如果打开,通知清洗中心模块进行数据清洗,如果未打开,则不通知清洗中心模块进行数据清洗;所述采集器模块根据任务规定进行数据的采集,具体包括:步骤a1,采集器模块接收到数据采集任务后,解析任务中的数据源信息;步骤a2,采集器模块抽取数据源中的数据;步骤a3,采集器模块将抽取的数据和数据采集任务编号封装到xml文件中,并加密xml文件;步骤a4,采集器模块将加密后的xml文件发送到数据中心模块。所述采集的数据被传输到数据中心模块后,由数据中心模块进行处理,具体包括:步骤b1,数据中心模块接收采集器模块发送的加密的xml文件,并进行解密;步骤b2,数据中心模块解析xml文件,得到数据采集任务编号和数据;步骤b3,数据中心模块根据解析xml文件得到的数据采集任务编号在数据融合管理模块所管理的数据采集任务列表中匹配相应的采集任务,并从采集任务的数据结构中获取数据的存储位置和数据名称;步骤b4,数据中心模块按照数据采集任务规定的存储位置和数据名称对xml解析得到的数据进行存储,存储过程中,对每条数据进行升序编号,存储完毕后返回本次存储数据的起止编号;步骤b5,数据中心模块从匹配到的数据采集任务中再次获取数据清洗开关的状态值,判断数据是否需要清洗,如果开关状态值是关闭,则表示不需要数据清洗,结束任务,否则执行步骤b6;步骤b6,数据中心模块将要清洗的数据的描述信息存放到消息中间件模块,数据的描述信息包括存储数据名称、数据存储位置、数据起始编号和数据中止编号,即对本次存储的数据的名称、位置、范围描述,以便清洗中心模块能够知道要对什么数据名称进行清洗,怎么找到这些数据,找到后具体清洗哪些数据条目。所述清洗中心模块用于执行数据清洗任务,当启动清洗中心模块时,执行如下步骤:步骤c1,清洗中心模块初始化若干个称为数据清洗task的进程,得到一个数据清洗task进程池,具体的数量根据配置参数指定,可以灵活设置;步骤c2,清洗中心模块侦听消息中间件模块中的由数据中心模块投递的关于需要清洗的数据的描述信息,如果消息中间件模块没有任何信息,则继续侦听;如果消息中间件模块有数据的描述信息,则取出信息,进入下一步;步骤c3,清洗中心模块判断当前数据清洗task进程池是否有空闲进程,如果没有空闲的,则等待空闲,如果有空闲的,则从数据清洗task进程池中调度一个task进程运行,并将从消息中间件模块取出的数据描述消息传递给task进程,由task进程完成数据描述消息所描述的数据的清洗工作。步骤c3中,所述数据清洗task进程的执行过程如下:步骤d1,获取清洗中心模块调度当前task进程时传递过来的数据描述信息,从数据描述信息中得到存储数据名称、数据存储位置、数据起始编号和数据中止编号;步骤d2,根据存储数据名称,到数据融合管理模块所管理的数据清洗任务列表中匹配相对应的数据清洗任务,获取数据清洗任务中的“是否要全量清洗”和“上一次清洗进度”字段;步骤d3,判断当前消息所描述的数据是否要全量清洗,如果要全量清洗,则读取上一次清洗的进度,即数据清洗的截止编号,判断上一次清洗的进度与消息所描述的数据的起始编号是否连续,如果不连续,则调整本次数据清洗的起始编号为上一次数据清洗的截止编号,如果连续或者不需要全量清洗,则不对数据起始编号进行调整;步骤d4,从匹配到的数据清洗任务中,继续获取“数据清洗规则编号”字段,然后根据数据清洗规则编号,在数据清洗规则表中匹配“清洗规则文件存储路径”字段,并根据该文件的存储路径,调取该规则文件到内存中;步骤d5,将“数据存储位置、数据起始编号、数据中止编号”等信息,写入清洗规则文件中,对清洗规则文件的内存副本进行修改,用以描述实际对哪里存储的哪些数据进行清洗;步骤d6,调用kettle集群模块的作业提交接口,将修改后的数据清洗规则文件,以作业的形式提交,并由kettle集群模块执行该数据清洗规则文件中所描述的清洗过程;步骤d7,获取kettle集群模块执行数据清洗作业的结果,如果清洗成功,更新数据清洗任务中的上一次清洗进度字段,并记录本次清洗的成功记录;如果清洗失败,则记录本次清洗的失败记录。所述kettle集群模块执行数据清洗工作,具体包括:在本地安装kettle工具,配置数据源和目标加载系统为数据存储模块,通过kettle提供的可视化界面,能够浏览数据存储模块中存储的原始数据,并针对原始数据预先创建清洗规则,清洗规则创建完毕后,保存为一个规则文件,通过kettle的远程发布功能将规则文件直接上传到数据融合管理模块,并由数据融合管理模块存储到指定的目录下。通过kettle工具的前端工具设计的清洗规则文件,能够直接提交给分布式部署的kettle集群模块,并由kettle集群模块分配节点执行,并最终向提交清洗规则文件的清洗中心模块反馈结果。本发明中,消息中间件模块、清洗中心模块、kettle集群模块是在现有技术框架的基础上全新增加的模块,新增加的模块中,清洗中心模块属于完全自主发明的模块,与此同时,数据融合管理模块在现有技术的基础上增加对数据清洗任务、数据清洗规则文件的管理功能,去除对数据采集任务可视化配置数据清洗的功能;采集器模块在现有技术的基础上,去除对数据进行简单清洗的功能;清洗中心模块在现有技术的基础上增加对数据清洗的判断以及数据清洗请求的消息推送功能,去除对数据进行清洗的功能。通过新增模块和对已有模块的重大修改,使得本发明所述的一种基于数据融合的数据中心数据清洗系统相对于现有技术具备三大创新突破,分别为:数据清洗由分散式变为集中式;数据清洗和数据采集业务分离、异步执行、互不干扰,且数据清洗不再依赖数据源的数据结构,而是直接对数据采集存储的结果数据进行清洗;数据清洗任务调度和数据清洗规则分离,两者分别独立设计、管理和运行,通过接口对接的方式,巧妙地将数据清洗规则的具体执行交给专业的kettle集群模块处理。本发明具有如下技术效果(优点):1)数据融合的数据清洗工作不会因为前端程序和中心程序版本的差异而出现错误,也不需要针对每个数据源单独设置清洗规则;2)数据清洗工作不会阻塞数据采集的工作,两者异步执行,互不干扰;3)充分利用kettle的可视化编程能力,丰富数据清洗的功能,可实现复杂的自定义数据清洗工作;附图说明下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。图1是主流的数据融合平台系统架构图。图2是本发明系统架构图。图3是采集器模块业务处理流程图。图4是数据中心模块处理采集数据业务流程图。图5是启动数据清洗任务业务流程图。图6是停止数据清洗任务业务流程图。图7是清洗中心调度task进程工作流程图。图8是可视化设计数据清洗规则过程图。图9是清洗中心task进程提交数据清洗job流程图。具体实施方式伴随着大数据的发展和应用,越来越多与大数据相关的技术和产品不断涌现出来,其中最基础也是最关键的一项就是数据的采集,由于传统的应用系统彼此孤立,形成信息孤岛,并且数据结构各不相同,只有通过数据采集,将各个系统的数据汇聚融合到一起,形成数据资源池和数据集市,才能实现大数据的分析和应用,以及数据资源的管理、共享和交换。为了实现数据从抽取、传输、清洗、存储到数据管理,再到数据服务的完整过程,产生了相应的数据融合平台,数据融合平台立足商业应用,考虑到各种实际环境的复杂性,为了适应各种复杂的外部环境,在总体设计上形成了一定的主体框架,但目前的主体框架尚存在一些不足,仍可以针对一些局部进行一些调整和优化,这些不足也正是本发明要解决的技术问题,具体如下:1)数据清洗是分散式的,横向方面,数据清洗分散在各个数据源端,若不同的数据源具有相同或相似的数据结构,但是数据清洗模块版本不一致,则可能导致这些数据源的数据汇聚后格式不统一;纵向方面,数据清洗的完整过程被拆解分散在数据源端和数据中心之间,如果数据源端的数据清洗模块和数据中心的数据清洗模块版本不匹配,则可能导致数据中心进行数据清洗时发生错误;2)数据清洗和数据采集耦合在一起,一般数据清洗比较耗时,如果等数据清洗完毕后再采集下一批数据,势必会影响数据的及时采集和处理;同时数据清洗的步骤长时间占用了数据采集客户端与数据中心的网络连接,将导致数据中心的并发量受到一定的限制;3)由于数据的不可预知性,数据融合平台为了能够处理各种数据,需要由用户自定义数据清洗规则,这就需要提供可视化编程接口,开发成本太大,而已有的专业的可视化编程工具又与之脱节,无法直接对接使用,从而导致数据清洗的功能相对简单和单调。本发明的目的:1)实现数据清洗集中统一进行,避免分散导致的数据清洗不一致问题,同时升级数据清洗程序比较容易和便捷,同时也能集中监控和跟踪数据清洗的每个过程;2)将数据清洗的工作从数据采集的过程中剥离出来,异步执行,两者之间互不干扰,数据清洗不会影响数据采集的性能,也不会影响数据采集客户端的并发连接数量,同时,可以对多个数据源的数据进行合并清洗,提高效率;并且可以设置闲时清洗,提高资源利用率;3)集成专业的数据清洗可视化编程工具,能够使得用户轻松的设计自定义的复杂的数据清洗工作,并实现设计和执行一体化,能够无缝的对接到清洗中心,并最终为数据融合平台服务,减少数据融合平台的数据清洗开发成本;采用的技术方案:1)数据清洗采用集中式、统一式方式,所有的数据清洗工作在数据中心统一进行,数据源端只负责采集数据和传输数据;2)建设专门的清洗中心,与数据中心对等,负责对数据中心的原始数据进行清洗和二次存储,同时通过消息中间件实现两者之间的协作通知,保证数据中心每当有新的数据时,能够通知清洗中心进行及时处理;3)在清洗中心中集成kettle,通过kettle提供的可视化编程界面,设计数据清洗规则,然后发布到清洗中心,并由清洗中心在配置清洗任务时与数据清洗规则进行关联,当清洗任务开始执行数据清洗工作时,将相对应的数据清洗规则提交给kettle集群执行;本发明对于数据清洗集中统一式的具体实现:1)采用新的集中式数据清洗系统架构本发明提供了一种基于数据融合的数据中心数据清洗系统,如图2所示,在目前主流的数据融合平台的架构基础之上,添加消息中间件模块、清洗中心模块、kettle集群模块共3个模块,同时对原有的模块做重大功能调整,赋予其新的涵义。其中清洗中心模块专门用来对所有采集的数据进行清洗,数据源系统的数据汇聚到数据中心后,由清洗中心进行集中清洗处理,无须各个采集器分别清洗,也无须每个数据源的每个数据表分别单独清洗,可以合并到数据中心后,一起清洗,采用集中式清洗,无疑大幅简化了流程的复杂性,也避免了分散式清洗出现的错误难于追溯和管理,且容易导致数据丢失和不一致,同时数据中心不再承担任何数据清洗任务,所有的清洗工作完全由清洗中心承担,这样清洗中心作为数据清洗的唯一入口,可统一管控数据清洗过程的完整生命周期;消息中间件模块用于建立数据中心与清洗中心之间沟通的桥梁,每当数据中心增加新的原始数据后,可以将新的原始数据的信息写入消息中间件模块,清洗中心模块侦测到消息中间件模块中的增加新数据的通知后,即可自动对其进行清洗,无须人工干预;kettle集群模块用于可视化设计数据清洗规则并发布到数据融合管理模块进行配置管理,并由清洗中心模块调度清洗规则和要清洗的数据给kettle集群模块执行数据清洗工作,以此来实现灵活复杂的数据清洗功能。2)数据融合管理模块增加对数据清洗的管理在分散式数据清洗的架构下,数据清洗的管理是在创建数据采集任务时配置的,并最终发布到采集器进行执行,现在采用集中式数据清洗架构后,就必须对数据清洗进行单独管理,此时,对于数据清洗来说,无须关心数据源的数据结构,而只需要关心采集任务配置完成后,要存储的数据结构,用户只需要为每个存储的数据配置清洗任务即可,对于有些数据,若不需要清洗,则不用配置清洗任务,未配置清洗任务或者已经配置清洗任务的数据,也可以随时增加或者取消任务。清洗任务包含的信息如表1所示:表1清洗任务表新建数据清洗任务后,当点击启动按钮时,数据清洗任务描述的数据被采集器模块采集到数据中心模块后,将由数据中心模块通知清洗中心模块进行清洗,清洗中心模块会调度一个数据清洗task进程,负责对任务规定的数据按照相应的清洗规则进行数据清洗,并且清洗中心模块自动侦听是否有新的数据产生,若有新的数据产生,则自动调度task进程对其进行清洗,实现增量清洗的功能。当点击停止按钮时,数据清洗任务描述的数据被采集器模块采集到数据中心模块后,数据中心模块将不会通知清洗中心模块进行清洗,即后续采集的数据将不会进行清洗。本发明对于数据清洗和数据采集分离的具体实现:1)数据采集任务剔除数据清洗的配置数据融合管理模块在新建数据采集任务时,不再指定数据清洗的配置,而仅仅配置数据采集的规则即可。如表2所示,在管理数据采集任务时,需要指定任务归属的数据源端采集器、要采集的数据源系统中的具体数据、采集的频率、数据的存储位置、存储的名称等,其中是否清洗字段由数据融合管理模块根据是否启动了相应的清洗任务而自动维护。表2数据采集任务表启动数据采集任务后,该数据采集任务将被数据融合管理模块按照采集频率周期性地发送到相应数据源对应的采集器模块,并由采集器模块根据数据采集任务规定进行数据的采集,采集的数据被传输到数据中心模块后,由数据中心模块根据数据中包含的数据采集任务编号匹配相应数据采集任务,获取要存储的位置和名称,进而对数据进行存储,若数据采集任务标识需要进行数据清洗,则仅仅把要清洗的数据的描述信息投递到消息中间件模块,具体的清洗工作交由清洗中心模块处理。采集器模块和数据中心模块对数据采集任务的执行过程分别如图3和图4所示,具体包括:步骤a1,采集器模块接收到数据采集任务后,解析任务中的数据源信息;步骤a2,采集器模块抽取数据源中的数据;步骤a3,采集器模块将抽取的数据和数据采集任务编号封装到xml文件中,并加密xml文件;步骤a4,采集器模块将加密后的xml文件发送到数据中心模块。所述采集的数据被传输到数据中心模块后,由数据中心模块进行处理,具体包括:步骤b1,数据中心模块接收采集器模块发送的加密的xml文件,并进行解密;步骤b2,数据中心模块解析xml文件,得到数据采集任务编号和数据;步骤b3,数据中心模块根据解析xml文件得到的数据采集任务编号在数据融合管理模块所管理的数据采集任务列表中匹配相应的采集任务,并从采集任务的数据结构中获取数据的存储位置和数据名称;步骤b4,数据中心模块按照数据采集任务规定的存储位置和数据名称对xml解析得到的数据进行存储,存储过程中,对每条数据进行升序编号,存储完毕后返回本次存储数据的起止编号;步骤b5,数据中心模块从匹配到的数据采集任务中再次获取数据清洗开关的状态值,判断数据是否需要清洗,如果开关状态值是关闭,则表示不需要数据清洗,结束任务,否则执行步骤b6;步骤b6,数据中心模块将要清洗的数据的描述信息存放到消息中间件模块,数据的描述信息包括存储数据名称、数据存储位置、数据起始编号和数据中止编号,即对本次存储的数据的名称、位置、范围描述,以便清洗中心模块能够知道要对什么数据名称进行清洗,怎么找到这些数据,找到后具体清洗哪些数据条目。2)数据清洗任务启动或停止时,相应的数据采集任务标识是否要清洗点击数据清洗任务的启动按钮后,数据采集任务的“是否清洗”字段将被置为“是”,点击数据清洗任务的停止按钮后,数据采集任务的“是否清洗”字段将被置为“否”。后续数据中心模块将根据该字段判断是否要通知清洗中心模块对新采集的数据进行清洗。数据清洗任务和数据采集任务之间是通过存储的数据名称建立关联关系,为了实现数据增量清洗,并在新数据到来时能自动触发清洗工作,因此需要在清洗任务启动时,自动标识相应的数据采集任务要进行数据清洗,以便执行该采集任务时,数据中心每当收到新的数据时能及时通知清洗中心,当清洗任务停止时,自动标识相应的数据采集任务不需要进行数据清洗,数据中心收到数据后读取到清洗标识的值为否时,不会将数据描述信息投递到消息中间件。启动和停止数据清洗任务的业务流程如图5和图6所示;3)数据中心接收新的数据源数据后,采用消息通知的方式通知清洗中心进行数据清洗为了实现采集的数据能够第一时间得到清洗处理,需要数据中心每当接收到新的数据时,立即通知清洗中心,由于数据中心和清洗中心是对等的关系,两者各自独立工作,且对数据的处理时间不同步,因此采用消息队列机制,即数据中心模块每收到一批数据,存储完毕后,将新增数据的起止位置等数据描述信息投递到消息中间件模块的指定消息队列中,清洗中心模块实时侦听消息队列,每当队列有新增消息时,立即取出处理。消息队列中的数据描述信息的数据结构如表3所示:表3数据描述信息表存储数据名称数据存储位置数据起始编号数据中止编号雇员表hbase10001500薪资表hive2000020600雇员履历hdfs1002004)清洗中心模块调度task进程执行数据清洗任务用户通过数据融合管理平台针对已采集存储的数据新建数据清洗任务,当启动数据清洗任务时,清洗中心的进程调度器将在每次从消息中间件模块获取数据描述信息时启动一个task进程,执行该清洗任务,同时task进程启动时,将任务的描述信息传递该进程,根据清洗任务中描述的数据名称、数据类型、是否全量清洗、清洗规则以及数据描述信息中的数据起止编号,执行具体的清洗工作。清洗中心调度task进程的过程为,首先,清洗中心模块初始化若干个被称为数据清洗task的进程,得到一个数据清洗task进程池,具体的数量根据配置参数指定,可以灵活设置;然后,清洗中心模块侦听消息中间件模块中的由数据中心模块向其投递的关于需要清洗的数据的描述信息,若消息中间件模块没有任何信息,则继续侦听;若消息中间件模块有数据的描述信息,则取出信息,紧接着清洗中心模块判断当前数据清洗task进程池是否有空闲进程,若没有空闲的,则等待空闲,若有空闲的,则从数据清洗task进程池中调度一个task进程运行,并将从消息中间件模块取出的数据描述消息传递给该task进程,由其完成该消息所描述的数据的清洗工作。整个过程如图7所示;本发明对于无缝对接可视化etl工具kettle的具体实现:1)清洗规则的可视化设计管理员在本地安装kettle工具,配置数据源和目标加载系统为数据中心模块的hive、hbase、hdfs,通过kettle提供的可视化界面,用户可以浏览数据中心模块中存储的原始数据,并针对这些数据预先创建清洗规则,清洗规则创建完毕后,可以保存为一个规则文件,通过kettle的远程发布功能,设计完成清洗规则后,可以直接上传到数据融合管理模块,并由数据融合管理模块存储到指定的目录下。其过程如图8所示;2)数据融合管理模块管理数据清洗任务时,分配数据清洗规则用户通过数据融合管理模块管理数据清洗任务时,可以读取所有的可视化设计的清洗规则,并将清洗规则关联到数据清洗任务,多个数据清洗任务如果数据结构相同或类似,可以关联同一个清洗规则,清洗规则使用统一的编号进行唯一标识。数据融合管理模块同时管理着清洗规则表,如表4所示:表4数据清洗规则表用户通过kerttle工具设计并上传清洗规则后,即可登录数据融合管理模块进行清洗规则的描述信息编辑,以便于用户了解清洗规则文件内部的清洗流程,适用的数据等;通过适用的数据名称字段,系统可以自动匹配每个数据可选择的清洗规则列表,避免数据和清洗规则不匹配,导致清洗失败。3)清洗中心的数据清洗task进程提交清洗规则文件到kettle集群执行通过kettle前端工具设计的清洗规则文件,可以直接提交给kettle后端执行,为了提高并发效率,将kettle后端部署为分布式方式,清洗中心模块的各个task只需要提交执行数据清洗的任务job给kettle集群模块,由kettle集群模块分配节点执行,并最终向task反馈结果。数据清洗task进程的执行过程为,首先获取清洗中心模块调度当前task进程时传递过来的数据描述信息,从数据描述信息中得到“存储数据名称、数据存储位置、数据起始编号、数据中止编号”,根据存储数据名称,到所述数据融合管理模块所管理的数据清洗任务列表中匹配相对应的数据清洗任务,获取数据清洗任务中的“是否要全量清洗”和“上一次清洗进度”字段;然后判断当前消息所描述的数据是否要全量清洗,如果要全量清洗,则读取上一次清洗的进度,即数据清洗的截止编号,判断上一次清洗的进度与消息所描述的数据的起始编号是否连续,如果不连续,则调整本次数据清洗的起始编号为上一次数据清洗的截止编号,如果连续或者不需要全量清洗,则不对数据起始编号进行调整;接着从匹配到的数据清洗任务中,继续获取“数据清洗规则编号”字段,然后根据数据清洗规则编号,在数据清洗规则表中匹配“清洗规则文件存储路径”字段,并根据该文件的存储路径,调取该规则文件到内存中;然后将“数据存储位置、数据起始编号、数据中止编号”等信息,写入清洗规则文件中,对清洗规则文件的内存副本进行修改,用以描述实际对哪里存储的哪些数据进行清洗;再然后,调用kettle集群模块的作业提交接口,将修改后的数据清洗规则文件,以作业的形式提交,并由kettle集群模块执行该数据清洗规则文件中所描述的清洗过程;最后,获取kettle集群模块执行数据清洗作业的结果,若清洗成功,更新数据清洗任务中的“上一次清洗进度”字段,并记录本次清洗的成功记录;若清洗失败,则记录本次清洗的失败记录。过程如图9所示。本发明基于数据融合平台,将数据的清洗单独剥离出来,形成单独的清洗中心,使得数据清洗的工作集中统一,方便独立控制和统一监控;本发明数据采集任务和数据清洗任务分别独立配置和管理,数据采集任务由采集器和数据中心执行,数据清洗任务由清洗中心调度task进程执行,两者异步执行,互不干扰,数据清洗发生错误,不影响数据的正常采集;本发明采用消息中间件机制建立数据中心与清洗中心沟通的桥梁,实现了数据的增量清洗、及时清洗;本发明支持使用kettle前端可视化设计数据清洗规则,并发布到数据融合管理模块,由清洗中心直接提交清洗规则到kettle集群进行数据的复杂清洗,降低了开发成本;本发明支持对数据清洗规则的单独管理,并且清洗规则可以被多个数据源共享,有效降低数据清洗的配置冗余;本发明数据清洗支持全量式和分段式,可以自由灵活配置;本发明同一个数据源系统可以配置多个数据清洗task,并发执行,无须受数据源系统串行执行的限制,大幅提高数据的采集和处理性能。本发明提供了一种基于数据融合的数据中心数据清洗系统,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1