基于实时计算的基数估计的方法和系统技术方案

技术编号:16557111 阅读:21 留言:0更新日期:2017-11-14 16:43
本发明专利技术提供一种基于实时计算的基数估计的方法和系统,能够基于概率和统计理论进行高效的基数估计计算,从而满足大数据场景的实时基数计算需求。该方法包括在Storm系统中的执行下列步骤:实时获取日志消息;解析所述日志消息以获取指标信息,所述指标信息包括各指标的名称及对应的指标值;利用HLL基数估计算法对各指标进行基数估计;输出各指标的基数。

Method and system for Radix estimation based on real time computation

The present invention provides a method and system for real-time computation of the cardinality estimation based on probability and statistics theory, can efficiently based on the cardinality estimation calculation, so as to meet the real-time data base scene computing needs. The method comprises the following steps in the Storm system: real-time access to log messages; the log message to obtain the index information, the index index information includes the name of each index and the corresponding value; estimation algorithm for cardinality estimation of each index by using the HLL base; output of each index base.

【技术实现步骤摘要】
基于实时计算的基数估计的方法和系统
本专利技术涉及计算机技术及软件领域,尤其涉及一种基于实时计算的基数估计的方法和系统。
技术介绍
基数计数是对一个可重复集合中不重复元素个数的计算。例如计算整个网站或店铺的独立访客等。在大数据的背景下,传统的基数计算方法遇到一些困难,主要表现在随着数据量和分析维度的增加,所需的计算资源和存储资源迅速膨胀。因此需要一种高效的基数估计机制。基数估计算法是一类概率算法,可以在误差可控的前提下以远低于精确计算的时间和空间消耗对基数进行估计。算法特点:1.误差可控2.时间和空间复度仅与估计值标准差及基数上限有关3.可合并。现有的基数估计计算通常采用Redis的HyperLogLogCounting功能,完成对基数的估计计数。其中,但是利用Redis的HyperLogLogCounting进行基数估计计算仍然存在如下缺点:Redis并没有实现基数算法的可合并特性,导致大数据量下处理能力不可扩展;由于将整个计算环节交给Redis进行处理,系统和Redis形成强依赖关系;此外,搭建Redis集群也产生较大的运营成本。
技术实现思路
有鉴于此,本专利技术提供一种基于实时计算的基数估计的方法和系统,能够基于概率和统计理论进行高效的基数估计计算,从而满足大数据场景的实时基数计算需求。为实现上述目的,根据本专利技术的一个方面,提供了一种基于实时计算的基数估计的方法。本专利技术的基于实时计算的基数估计的方法包括在Storm系统中的执行下列步骤:实时获取日志消息;解析所述日志消息以获取指标信息,所述指标信息包括各指标的名称及对应的指标值;利用HLL基数估计算法对各指标进行基数估计;输出各指标的基数。可选地,所述方法还包括:解析所述日志消息之后,对获取的指标信息进行校验,以删除异常指标信息。可选地,利用HLL基数估计算法对各指标进行基数估计还包括:将所述指标信息随机分配至基数计算层的多个线程,各线程根据分配到的指标信息,为各指标创建HLL对象,利用HLL基数估计算法中的Offer方法将各指标的指标值加入到对应的HLL对象中,然后定时将HLL对象发送到基数集合合并层;以及所述基数集合合并层接收HLL对象,并按各HLL对象的指标名称创建各指标的总HLL对象,然后利用HLL算法中的Merge方法将HLL对象按照指标名称合并到各自对应的总HLL对象中,以及定时利用HLL算法中的Cardinality方法对各指标的总HLL对象进行计数,以获得各指标的基数。可选地,所述方法还包括:所述HLL对象及所述总HLL对象均保存在位于其所在服务器内存中的LRUmap中。可选地,所述方法还包括:定时将总HLL对象保存至外部的数据库。可选地,所述方法还包括:定时将各指标的基数保存到外部的数据库。可选地,所述方法中的定时是指:记录上次操作的时间,若当前时刻与上次操作的时间差小于预设阈值,则不进行相应操作,若当前时刻与上次操作的时间差大于预设阈值,则进行相应操作。为实现上述目的,根据本专利技术的另一个方面,提供了一种基于实时计算的基数估计的系统。本专利技术的基于实时计算的基数估计的系统包括:存储器和处理器,其中,所述存储器存储指令;所述处理器执行所述指令用于:在Storm系统中的执行下列步骤:实时获取日志消息;解析所述日志消息以获取指标信息,所述指标信息包括各指标的名称及对应的指标值;利用HLL基数估计算法对各指标进行基数估计;输出各指标的基数。可选地,所述处理器还用于:解析所述日志消息之后,对获取的指标信息进行校验,以删除异常指标信息。可选地,所述处理器还用于:将所述指标信息随机分配至基数估计计算层的多个线程,各线程根据分配到的指标信息,为各指标创建HLL对象,利用HLL基数估计算法中的Offer方法将各指标的指标值加入到对应的HLL对象中,然后定时将HLL对象发送到基数集合合并层;以及所述基数集合合并层接收HLL对象,并按各HLL对象的指标名称创建各指标的总HLL对象,然后利用HLL算法中的Merge方法将HLL对象按照指标名称合并到各自对应的总HLL对象中,以及定时利用HLL算法中的Cardinality方法对各指标的总HLL对象进行计数,以获得各指标的基数。可选地,所述处理器还用于:将所述HLL对象及所述总HLL对象均保存在位于其所在服务器内存中的LRUmap中。可选地,所述处理器还用于:定时将总HLL对象保存至外部的数据库。可选地,所述处理器还用于:定时将各指标的基数保存到外部的数据库。可选地,所述处理器还用于:其中的定时是指记录上次操作的时间,若当前时刻与上次操作的时间差小于预设阈值,则不进行相应操作,若当前时刻与上次操作的时间差大于预设阈值,则进行相应操作。根据本专利技术的技术方案,通过利用实时计算系统Storm可水平扩容、容灾等机制以及基数估计算法HLL的低存储空间、集合可合并等特性的结合,从而可以保证在扩容方便、占用存储空间少的前提下,实现对大数据环境下的基数进行实时高效的计数;通过在解析日志消息后对获取的数据进行校验,从而可以保证计算的精确性,避免计算的浪费;通过将HLL对象及总HLL对象均保存在位于其所在服务器内存中的LRUmap中,从而可以避免因长期运行而占用过大内存的现象的发生;通过定期将各指标的总HLL对象保存至Storm系统外部的数据库,从而可以保证在系统宕机或任务的部分节点重启时,从数据库中恢复中间结果;通过定时将各指标的基数保存到Storm系统外部的数据库,从而可以保证对基数计算结果保存以及实时统计和呈现;通过设置在内存中记录Bolt中上次的操作时间,并进行时间差比较的定时机制,而非在Storm系统中为“定时”另启线程维护定时,从而可以降低程序的复杂度。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术实施例的基于实时计算的基数估计的方法的主要步骤的示意图;图2是根据本专利技术实施例的基于实时计算的基数估计的方法的主要流程的示意图;图3是根据本专利技术实施例的基于实时计算的基数估计的系统的主要部分的示意图。具体实施方式以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。图1是根据本专利技术实施例的基于实时计算的基数估计的方法的主要步骤的示意图。如图1所示,本专利技术实施例的基于实时计算的基数估计的方法主要包括在Storm系统中的执行下列步骤:步骤S11:实时获取日志消息。基数计数是实际应用中一种常见的计算场景,它是对一个可重复集合中不重复元素个数的统计。实际应用中可以用作计算各类指标的基数,例如在电子商务领域,可以计算整个网站当天“独立访客数(UniqueVisitors,即UV)”和“浏览商品SKU种类数(即SKUSum)”。本专利技术实施例中以此举例说明具体计算过程。随着数据量和分析维度的增加,所需的计算资源和存储资源迅速增多。在计算的过程中,待计数的指标可能有多种数据来源。例如,在上述统计一个网站的当天的“UV”的时候,可能需要获取来自计算机端的本文档来自技高网...
基于实时计算的基数估计的方法和系统

【技术保护点】
一种基于实时计算的基数估计的方法,其特征在于,包括,在Storm系统中的执行下列步骤:实时获取日志消息;解析所述日志消息以获取指标信息,所述指标信息包括各指标的名称及对应的指标值;利用HLL基数估计算法对各指标进行基数估计;输出各指标的基数。

【技术特征摘要】
1.一种基于实时计算的基数估计的方法,其特征在于,包括,在Storm系统中的执行下列步骤:实时获取日志消息;解析所述日志消息以获取指标信息,所述指标信息包括各指标的名称及对应的指标值;利用HLL基数估计算法对各指标进行基数估计;输出各指标的基数。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:解析所述日志消息之后,对获取的指标信息进行校验,以删除异常指标信息。3.根据权利要求1所述的方法,其特征在于,利用HLL基数估计算法对各指标进行基数估计还包括:将所述指标信息随机分配至基数估计计算层的多个线程,各线程根据分配到的指标信息,为各指标创建HLL对象,利用HLL基数估计算法中的Offer方法将各指标的指标值加入到对应的HLL对象中,然后定时将HLL对象发送到基数集合合并层;以及所述基数集合合并层接收HLL对象,并按各HLL对象的指标名称创建各指标的总HLL对象,然后利用HLL算法中的Merge方法将HLL对象按照指标名称合并到各自对应的总HLL对象中,以及定时利用HLL算法中的Cardinality方法对各指标的总HLL对象进行计数,以获得各指标的基数。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:所述HLL对象及所述总HLL对象均保存在位于其所在服务器内存中的LRUmap中。5.根据权利要求3所述的方法,其特征在于,所述方法还包括:定时将总HLL对象保存至外部的数据库。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:定时...

【专利技术属性】
技术研发人员:王向长邵先凯李威张鹏
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

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

1