一种整合实时和非实时模式的大数据分析***
技术领域
本发明涉及大数据分析技术,更具体地,涉及一种整合实时和非实时模式的大数据分析***。
背景技术
伴随着以互联网为基础的信息化服务的深度发展,例如社交网络全面应用、物联网技术的逐渐推广、电子商务和线上支付的日益普及等等,各种互联网平台所生成的数据量也呈现出急剧增长的态势。据统计,目前全球互联网之上的数据总量已经达到ZB级别(1ZB等于1万亿GB),并且以每两年提高一倍的速度继续快速增加。预计在2020年,人均拥有数据量将达到5200GB,届时人们的工作、教育、社交、娱乐、购物、医疗、投资等活动有可能都将依托各种互联网服务展开,并且产生各种形式的相关数据。
大数据分析技术就是将互联网平台上的海量数据作为对象进行查询、挖掘和分析,获得海量数据中的有效部分,并且从有效部分中提取出反映某些规律性的信息。通过对这些信息加以利用,可以取得互联网平台用户的总体和个体特征,执行用户需求的合理预测,改善服务和用户体验。在基于大数据分析技术的后台之上,可以实现有针对性的服务流程优化、目标化消息及广告推送、用户体验的个性化改善等功能。
互联网平台的大数据分析体现出如下的特点:首先,作为分析目标的数据规模庞大,一般只有具备100TB以上的可分析数据才能够称之为大数据分析,但实际大数据分析***的目标数据量都远远超过这一下限。第二,作为分析目标的数据呈现充分的多源化和异构性。在早期的数据分析模式当中,数据多是通过专门用于执行用户反馈信息收集或采样的表单页面生成的结构化数据,数据的单位和格式也基本相同,而在当前的互联网服务平台当中,分析目标数据伴随着整个互联网服务的运行流程而生成,例如用户在网络论坛的发帖、在社交网络平台的转发、在多媒体内容提供服务中的点播记录以及在电子商务行为中的浏览和交易记录,都是大数据分析的目标,可见数据来源呈现出复杂的多源化状态。而且,目标数据的数据类型和数据结构繁多,具有预定格式的结构化数据只占目标数据的一部分,海量的照片、视频、动态图形、聊天记录、网帖等等以非统一结构的数据形式存在,还具有非结构化的数据流,例如传感器实时数据等。多源化的数据来源和复杂化的数据结构使得大数据分析***难以用传统的数据库表单加以表示,因而大数据分析***必须具有面向非结构化的数据的处理和分析机制。第三,大数据分析***要求较快的处理速度,理想状态是达到实时分析。一方面,互联网数据量呈现迅速增长的趋势,客观上要求大数据分析***实现较快的数据处理;另一方面,互联网数据的价值具有随着时间延迟而迅速衰减的特点,互联网服务自身的特性也要求能够对用户状态作出尽可能快的响应。例如,在线电子商务活动中,用户的购买需求具有很强的时效性,当用户针对某一类产品进行浏览时,就要求电子商务平台在该用户行为持续的有效时间内正确分析用户的需要并给予相关的产品推荐等服务,而这一有效时间可能只有十分钟以内的持续期,可见支持这一运行模式的大数据分析***必须具备快速的数据处理和分析能力。第四,大数据分析的目标数据价值密度低。大数据分析的目标数据主体是非统一结构化的原始数据,而且通常不执行采样处理,而是采用全体数据,这样能够呈现出原始数据的全部细节,但是也会引入大量的错误或者无用数据,因此从整体上看,目标数据的低价值密度必然意味着大数据分析***需要持续性地执行大量的分析运算,才能从海量的目标数据当中挖掘足够的有效信息。
通过上述特点,我们可以看到,大数据分析的数据运算量、多源异构性数据的处理复杂度以及对高速处理分析的需要,都对大数据分析***的运算性能提出了较高的要求。在实际应用当中,由于受到软硬件及网络资源的限制,难以使大数据分析的全部任务均达到实时处理和响应。因此,现有技术中的大数据分析***一般需要构建由实时分析***和非实时分析***组成的双平台架构。
在现有技术中,实时分析***和非实时分析***基于各自业务不同的时间性要求,按照不同的数据结构形式组织互联网平台的目标数据,响应不同的需求而分别执行不同分析计算,然后将目标数据存储于不同的数据库***。为了外部访问大数据分析结果的便利,可以为实时和非实时分析***提供统一的中间层接口。具体如图1所示,采集***101实时性地获取互联网服务平台的业务数据;进而,面向实时分析***102和非实时分析***103,采集***101分别提取符合各***预定分析条件的目标数据,进而按照不同的数据结构对目标数据进行组织。其中对于需要执行实时分析的数据,采集***101按照消息流进行组织,然后把消息流实时传输到实时分析***102。而对于执行非实时分析的数据,则由采集***101将数据集成为日志数据,然后按照定时传输给非实时分析***103进行处理和分析。实时分析***102基于对所述消息流的分析所形成实时性结果数据,该实时性结果数据被传送至对外部查询请求的响应具有良好的时间性的实时集中数据库***104;实时分析***102和非实时分析***103均可以产生非实时性结果数据,该非实时性结果数据可以被传送至非实时性分布数据库***105进行保存。各个具有实时或者非实时响应要求的外部应用线程107通过统一的中间层接口106访问实时集中数据库***104和非实时性分布数据库***105,对实时性和非实时性结果数据进行查询,所获得的查询结果能够为外部应用线程107的功能实现提供支持。
现有技术由于采用了实时分析***和非实时分析***二者分立存在的双平台架构,因而存在一定的缺陷。具体来看,虽然整个***采用了统一的接口向外部应用提供服务,但是在内部,实时分析***和非实时分析***在数据结构、分析处理算法和结果反馈等方面都呈现完全不同的机制,因而基本上处在彼此分离运行的状态,二者无法进行有效的整合,具有对相同目标数据执行重复分析造成资源配置低效的问题,也存在实时分析和非实时分析之间不能实现数据和结果交互的缺陷。例如,在线电子商务活动中,用户针对产品的浏览、搜索、加入购物车等行为记录数据会在实时分析***中得到处理,从而获得实时性的响应结果,例如对用户给予同类商品或者关联商品的即时广告推送;另一方面,用户的上述行为记录也会被纳入相关日志数据的一部分,在之后的特定定时期间被传送至非实时分析***,用于执行对用户行为模式的分析。上述模式在一定程度上存在重复性计算,对实时和非实时分析结果的融合在现有架构中也比较难以实现。
同时,双平***立架构以及平台当中完全异构化的数据和计算方式也造成大数据分析***整体复杂度加大,难以用统一的模式进行资源分配、任务管理和过程控制,使得大数据分析***在建设、运行和维护方面的难度和成本都会增加。
发明内容
基于现有技术中的上述缺陷,本发明提供了一种整合实时和非实时模式的大数据分析***。本发明对外通过统一的中间层接口提供具有实时响应和非实时响应的大数据分析业务,内部则建立了面向实时模式与非实时模式二者统一的数据结构、分析处理运算和结果反馈机制,并且通过基于优先权重参数的资源分配和任务调度,满足不同分析任务实时或者非实时性的响应时间要求。
本发明所述的整合实时和非实时模式的大数据分析***,其特征在于,包括:
采集***,用于各类互联网服务平台当中获得业务数据;
任务接口模块,用于接收具有实时性或者非实时性响应时间要求的各种任务请求,以及任务请求附带的任务参数;
数据整合模块,用于针对由任务接口模块提供的各个任务请求,基于每个任务请求的任务参数,按照统一的封装结构将与各任务请求相关的业务数据分别整合为对应于各任务请求的任务数据块;
任务管理模块,用于从任务接口模块接收所述任务请求以及相关的任务参数,确定各任务请求的优先级;
资源调度模块,用于将分析处理集群中的运算资源分别分配给各优先级;
分析处理集群,由分布式运算终端构成,分布式运算终端作为所述运算资源由资源调度模块进行调配;其中,被分配用于为某优先级的任务请求进行分析计算的分布式运算终端从任务管理模块提取该优先级的任务请求,并且根据该任务请求,从数据整合模块当中调取该任务请求针对的任务数据块,并且针对该任务数据块执行分析计算获得结果数据;
结果处理模块,用于从分析处理集群的各分布式运算终端接收结果数据,并将结果数据按照分布数据库集群当中的数据库定义的数据结构进行格式处理,然后分配到分布数据库集群的各个数据库当中进行保存,形成分析结果记录;
中间层接口,用于为外部应用访问分布数据库集群提供统一的接口,从而使外部应用可以对所述分析结果记录进行查询和调用。
优选的是,所述任务请求的任务参数包括该任务请求对大数据分析***的响应时间要求。
优选的是,所述数据整合模块根据各任务请求的任务参数,选取被封装到相应任务数据块的业务数据,并设定封装数据量。
优选的是,任务数据块封装业务数据所采用的统一封装结构包括数据块头部以及数据块载荷。
优选的是,所述数据块头部包括任务标志字段、块大小字段、块属性字段以及关联块序号字段;其中,所述任务标示字段记录该任务数据块所对应的任务请求的标识符;块大小字段表示当前任务数据块的整体大小;块属性字段表示任务数据块是否具有关联块;关联块序号字段表示当前的任务数据块在全部关联块当中的排序。
优选的是,数据整合模块根据各任务请求的响应时间要求决定对应于各任务请求的任务数据块的数据块载荷部分的数据量。
优选的是,所述数据整合模块将任务数据块被保存在该模块的数据缓存当中。
优选的是,任务管理模块根据任务参数中的响应时间要求来确定各任务请求的优先级。
优选的是,任务管理模块包括任务分配开关模块以及至少一个任务队列,其中任务分配开关模块将各任务请求按照所确定的优先级分配给对应其优先级的任务队列。
优选的是,资源调度模块通过查询所述任务管理模块的各个任务队列,确定当前各优先级下正在等待处理的任务请求的数量,并且,所述资源调度模块通过查询所述数据整合模块确定各优先级下任务请求分别对应的任务数据块的数据量;资源调度模块根据各优先级下任务请求的数量以及各优先级下任务请求分别对应的任务数据块的数据量,分配分析处理集群中的运算资源。
可见,对于实时性和非实时性的任务请求,本发明的大数据分析***并未对二者区别对待,而是采用了统一封装结构对相关业务数据进行封装;并且对于实时性任务请求和非实时性任务请求,本发明也采用了统一的优先级调度机制和资源分配机制,这样实际上改变了现有技术中对实时和非实时性的大数据分析采用双平台的架构,而是利用统一的平台整合实时性和非实时性的分析任务。从而,本发明统一的平台和机制降低了大数据***的构成复杂度,简化了大数据***在资源分配、任务管理和过程控制等方面的管理维护过程,降低了大数据分析***在建设、运行和维护方面的难度和成本。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明:
图1是现有技术的大数据分析***结构框架图;
图2是本发明所述整合实时和非实时模式的大数据分析***的总体结构示意图;
图3是本发明所述表示任务请求的响应时间要求与任务数据块对应关系的映射表示意图;
图4是本发明所述任务管理模块维护对应于不同优先级的任务队列的结构框架示意图;
图5是本发明所述资源调度模块维护的终端运算能力登记示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合实施例及实施例附图对本发明作进一步详细的说明。
图2是本发明所述整合实时和非实时模式的大数据分析***的总体结构示意图。该大数据分析***包括采集***201、任务接口模块202、数据整合模块203、任务管理模块204、资源调度模块205、分析处理集群206、结果处理模块207、分布数据库集群208以及中间层接口209。
采集***201用于从以本发明的大数据分析***作为后台支撑的各类互联网服务平台当中获得必要的业务数据。这些业务数据处于原始形态,也是本发明的大数据分析***的目标数据。例如,如果所述互联网服务平台是在线电子商务平台,注册用户当前在该平台的浏览、搜索、加入购物车等实时性的行为记录数据将作为本发明所针对的所述业务数据;注册用户的一些非实时性的状态记录数据,例如会员等级、年龄、性别、购买历史记录、浏览历史记录、搜索关键词历史记录、累积消费额度等,也同样作为本发明的业务数据。采集***201可以通过互联网服务平台针对数据统计分析需求而设置的各种后台接口完整性地取得全部所述业务数据,作为大数据分析所针对的目标数据。
任务接口模块202用于接收具有实时性或者非实时性响应时间要求的各种任务请求,以及任务请求附带的任务参数。所述任务请求可以是由外部应用向本发明的大数据分析***提出的。
例如,在电子商务平台当中,伴随着用户的产品浏览、搜索、加入购物车等行为,会触发名为“实时推荐”的外部应用向大数据分析***的任务接口模块202发起对用户的上述实时行为进行分析的第一任务请求。该任务请求要求大数据分析***对用户实时性的行为所产生的业务数据进行抽取和归类。具体来说,该任务请求可以要求抽取作为业务数据的产品浏览记录当中的产品名称,以及搜索记录当中作为关键词的产品名称,以及被加入购物车的产品名称,然后,基于产品名称进行归类产生结果数据,该结果数据表明了用户在本次实时性活动中最关注的产品类型。与此同时,名为“用户偏好”的外部应用也会向任务接口模块202发起第二任务请求,该任务请求会要求对用户在较长的时间范围(如过去24小时)的购买历史记录、浏览历史记录、搜索关键词历史记录等进行抽取和归类,获得在过去一段时间范围之内关注较多的若干产品类型,这些产品类型会作为用户的偏好而被加入到用户特征画像当中,以便为长期广告投放等业务提供依据。本发明的大数据分析***会响应以上第一和第二任务请求,提供用户在本次实时性行为当中以及过去一段时间范围当中分别所关注的产品类型。而所述“实时推荐”或者“用户偏好”的外部应用则能够根据大数据***反馈的产品类型,从推荐列表中选择与该产品类型相同或者相匹配的推荐产品,将推荐产品相关信息以各种方式推送给用户。
任务请求可以携带任务参数,其中每个任务请求对大数据分析***的响应时间要求也被作为任务参数而通过任务接口模块202传输给大数据分析***。对于要求给予实时性的结果反馈的任务请求,该任务请求的响应时间要求将会比较短,例如要求在1分钟甚至更短时间内提供结果数据响应;相反,对于要求非实时性结果反馈的任务请求,任务参数所限定的响应时间要求会比较长。可见,对于本发明将实时和非实时分析整合为一体的***架构来说,实时性和非实时性的任务请求并不是被彼此独立地提交给不同的平台,而是将二者统一处理,而通过任务参数当中响应时间要求的不同而区分任务请求的实时性与非实时性。
数据整合模块203从所述采集***201取得来自互联网服务平台的原始形态的业务数据,并且针对由任务接口模块202提供的各个任务请求,基于每个任务请求的任务参数,按照统一的封装结构将与各任务请求相关的业务数据分别整合为对应于各任务请求的任务数据块。其中,数据整合模块203根据各任务请求的任务参数,选取被封装到相应任务数据块的业务数据,并设定封装数据量,从而各任务数据块在统一的封装结构的基础上包含不同的数据量。经数据整合模块203整合之后的任务数据块被保存在该模块的数据缓存203a当中。
任务数据块封装业务数据所采用的统一封装结构包括数据块头部以及数据块载荷,其中数据块头部包括任务标志字段、块大小字段、块属性字段以及关联块序号字段。其中,任务标示字段记录该任务数据块所对应的任务请求的标识符。块大小字段表示当前任务数据块的整体大小。在大数据分析当中,某些任务请求可能会涉及到相当多的业务数据作为其分析目标,如果将这些业务数据封装为一个任务数据块,则会产生过大的数据块,这样不利于传输和处理。因此,在这种情况下,可以将该任务请求对应的业务数据封装到若干个任务数据块,这些任务数据块构成关联块。每个任务数据块通过块属性字段表示是否具有关联块,并且,在块属性字段表明具有关联块的情况下,采用关联块序号字段表示当前的任务数据块在全部关联块当中的排序。
任务数据块的数据块载荷部分用于封装与各任务请求相关的业务数据。数据整合模块203根据各任务请求的响应时间要求决定对应于各任务请求的任务数据块的数据块载荷部分的数据量。所述数据整合模块203可以保存如图3所示的映射表,该映射表是基于被大数据分析***所处理的任务数据块大小与平均处理时间关系的历史统计而建立的经验性表格,该映射表当中记录了任务请求响应时间要求与任务数据块大小之间的一一对应关系。大数据分析***的资源调度模块205在为各个任务请求相应的任务数据块分配运算资源之后,从分析处理集群206接收各个任务数据块实际处理时间的反馈,从而统计大数据分析***中任务数据块大小与平均处理时间的对应关系,该对应关系可以用于定期更新所述映射表。例如,对于上面提到的具有实时性的响应时间要求(例如要求1分钟内提供结果数据响应)的第一任务请求,数据整合模块203根据该响应时间要求决定封装到任务数据块的业务数据的数据量不超过100M,然后数据整合模块203从由用户实时性的浏览、搜索或者加入购物车行为所产生的业务数据当中提取距离当前最近的一个时间段内的业务数据(例如由距当前时间30分钟以内的用户行为产生的业务数据),保证所提取的业务数据的数据量不超过100M,然后将所提取的业务数据封装到第一任务请求对应的任务数据块的数据库载荷部分。相类似的,数据整合模块203可以根据第二任务请求较长的响应时间要求,决定将更大数据量的业务数据封装到与第二任务请求对应的任务数据块的数据载荷部分。
任务管理模块204从任务接口模块202接收所述任务请求以及相关的任务参数,确定各任务请求的优先级,例如可以按照优先程度的从高到低依次确定“最高”、“高”、“一般”、“低”、“最低”五个优先级。各任务请求的优先级可以根据任务参数中的响应时间要求来确定,例如将响应时间要求小于最低阈值的任务请求确定为最高优先级,将响应时间要求大于最低阈值但小于次低阈值的任务请求确定为高优先级,依次类推。
任务管理模块204负责维护对应于不同优先级的任务队列。如图4所示,任务管理模块204包括任务分配开关模块204A以及任务队列204B、204C、204D、204E、204F,其中任务分配开关模块204A将各任务请求按照所确定的优先级分配给对应其优先级的任务队列,例如任务分配开关模块204A将最高优先级的任务请求分配给任务队列204B,将高优先级的任务请求分配给任务队列204C,等等。任务队列中保存的任务请求作为大数据分析***当前正在等待处理的任务。
资源调度模块205通过查询所述任务管理模块204的各个任务队列,确定当前各优先级下正在等待处理的任务请求的数量,同时获得每个任务请求的响应时间要求参数。并且,所述资源调度模块通过查询所述数据整合模块203确定各优先级下任务请求分别对应的任务数据块的数据量。在此基础上,资源调度模块205将分析处理集群206中的运算资源分别分配给“最高”、“高”、“一般”、“低”、“最低”五个优先级。
分析处理集群206由分布式运算终端构成,分布式运算终端作为所述运算资源由资源调度模块205进行调配。
具体来说,资源调度模块205确定针对各优先级的任务请求的分配策略,所述分配策略包括并行处理和串行处理。并行处理指的是为某优先级的任务队列当中等待处理的全部任务请求一一分配分布式计算终端或者分布式计算终端组,从而使这些任务请求被同时予以处理。而串行处理指的是针对某优先级的任务队列当中等待处理的全部任务请求分配一定数量的分布式计算终端或者分布式计算终端组,从而使得部分任务请求被提取和执行,而其它的任务请求继续在任务队列当中进行等待,直至自身在其它任务请求处理完毕后被提取。为了满足响应时间要求,“最高”优先级可以采用并行策略,而其它优先级则可以视情况采用并行策略或者串行策略。资源调度模块205为分析处理集群206中的各分布式运算终端维护终端运算能力登记,如图5所示的其中某一个运算资源的登记,该登记表示某个分布式运算终端或者某个分布式运算终端组的运算数据量与运算时间的对应关系。对于“最高”优先级的任务请求,由于采用了并行策略,因而资源调度模块205分别为每个任务请求分配一个分布式运算终端或者分布式运算终端组,其中基于所述终端运算能力登记,能够确认该分布式运算终端或者分布式运算终端组处理各任务请求对应的任务数据块的时间短于响应时间要求。对于其它执行并行策略的优先级的任务请求,资源调度模块205也采用相同的方式为其分配运算资源。对于执行串行策略的优先级下的任务请求,资源调度模块205分配一个或者若干个分布式运算终端或者分布式运算终端组,其中基于所述终端运算能力登记,能够确认分布式运算终端或者分布式运算终端组处理完任务请求对应的任务数据块的总时间不长于任何一个任务请求的响应时间要求。显然,并行策略适用于实时或者准实时的任务请求,而串行策略适用于具有比较长的响应时间要求的非实时性的任务请求。
假设分析处理集群206中的分布式运算终端被所述资源调度模块205分配用于为最高优先级的任务请求进行分析计算,则下一步由该分布式运算终端从任务管理模块204的最高优先级任务队列中逐一地提取任务请求,并且根据该任务请求,从数据整合模块203的数据缓存当中调取该任务请求针对的任务数据块,进而针对任务数据块执行分析计算获得结果数据。
可见,对于实时性和非实时性的任务请求,本发明的大数据分析***并未对二者区别对待,而是采用了统一封装结构对相关业务数据进行封装;并且对于实时性任务请求和非实时性任务请求,本发明也采用了统一的优先级调度机制和资源分配机制,这样实际上改变了现有技术中对实时和非实时性的大数据分析采用双平台的架构,而是利用统一的平台整合实时性和非实时性的分析任务。在统一平台下,主要通过赋予实时性任务和非实时性任务不同的优先级并相应地分配不同资源,以及对实时性任务和非实时性任务的任务数据块按照不同的规模进行整合,满足了实时性和非实时性分析不同的相应时间要求。
结果处理模块207从分析处理集群206的各分布式运算终端接收经过分析计算产生的结果数据,并将结果数据按照分布数据库集群208当中的数据库定义的数据结构进行格式处理,然后分配到分布数据库集群208的各个数据库当中进行保存,形成分析结果记录。如上文所述,本发明采用统一的平台整合实时性和非实时性的分析任务,因此所产生的结果数据也不像现有技术那样区分实时分析结果和非实时分析结果,而是以统一的数据结构存储在分布数据库集群208当中,可以供实时或者非实时性的外部应用加以调用。针对实时和非实时性任务请求产生统一可用的结果数据,也有利于减少对相同业务数据的重复分析。中间层接口209为外部应用访问分布数据库集群208提供统一的接口,从而使外部应用可以通过中间层接口209对所述分析结果记录进行查询和调用。
可见,本发明对外通过统一的中间层接口提供具有实时响应和非实时响应的大数据分析业务,内部则建立了面向实时模式与非实时模式二者统一的数据结构、分析处理运算和结果反馈机制,并且通过基于优先权重参数的资源分配和任务调度,满足不同分析任务实时或者非实时性的响应时间要求。
以上描述中的尺寸和数量均仅为参考性的,本领域技术人员可根据实际需要选择适当的应用尺寸,而不脱离本发明的范围。本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。