实时分析大数据往往会遇到时间与空间的限制。由于实时产生的数据大多数以数据流的方式进入分析系统中,其特点十分明显。首先,数据是无限的;其次,数据是实时到来的;再次,数据往往是按序流过来的;最后,以上特点导致了数据流中的数据无法全部保存下来,这就需要做一个近似查询而不是完全查询。以下方法都是为了应对以上数据流的特点而采用的策略,有时混合的方法会更有效。下面以三个典型的计算模型为例来介绍实时分析的技术。
(一)滑动窗口计算模型
滑动窗口计算模型是基于以下假设而来的,在给定的一个数据流处理应用中,最近的数据比以往的数据要更有用和更相关。在此情况下,我们回应查询所需要访问的数据只包括最后N个最近的数据元素即可(N在此可以作为参数),这种计算模型也十分符合在规定的时间与空间内完成一定任务的实时要求。
滑动窗口有基于顺序和局域时间两种定义方式。前者定义的滑动窗口是在窗口内保存最近到来的K个元组,其大小固定;后者定义的滑动窗口则是存储最近T时间内到达的元组,其大小可变。滑动窗口查询也是数据流上经常使用的一类查询,具有自身独特的查询处理方法,例如,查找一个数据流中的最大值时,滑动窗口查询若计算一个N元组中的最大值就需要Ω(N)的空间,而随着新数据的到来,滑动窗口中的旧数据就要被淘汰,如果当前窗口的最大值在某个时刻移出了窗口,那么就要重新找出一个新的最大值。据此可以看到,滑动窗口问题还会涉及更多的问题,比如基本计数问题、求和问题、相似计算和摘要等,所以可以把很多传统的查询问题和分析方法引入滑动窗口模型中来,目前很多工作都集中在滑动窗口连接、多滑动窗口查询优化及滑动窗口中数据流的挖掘等方面。
(二)流数据立方计算模型
流数据除了动态性和瞬时性这两个特点之外,还具有多元维度这个重要的特点。大多数流数据处于一个多维空间和相当低的抽象层次,而大多数数据分析人员对在部分维度组合中相关高层的动态变化更感兴趣。只有对流数据进行多层次、多维度的联机分析处理(OLAP)才能发现高层的动态变化和不断演变的特点,这就要求研究便于多维流数据联机分析处理的新的体系结构。流立方正是这样的一种尝试和研究成果,它可以满足上述对发现数据流的高层动态变化特征及联机分析处理的需要,但它需要以下三个关键技术的支撑。
倾斜时间框架模型:主要用来在多分辨率模型中记录时间相关的数据,越近的数据记录在越精细的分辨率中,越远的数据记录在越粗糙的分辨率中。此设计可以减少时间相关数据的整体存储需求并更好地适应实际遇到的数据分析任务。常见的有三种模型,即自然倾斜时间框架模型、对数尺度倾斜时间框架模型和渐近对数倾斜时间框架模型,如图5-17所示。
图5-17 倾斜时间框架模型示意图(www.daowen.com)
第一种模型如图5-17(a)所示,按照自然时间的各种粒度来进行组织,从最近的15分钟、45分钟、24小时直至7天甚至更远;第二种模型如图5-17(b)所示,依据对数尺度来对时间进行组织,从一个15分钟到两个15分钟,再到4个15分钟,如此按指数级增长;第三种模型实际上是将快照根据新旧程度的不同存储到不同的粒度级别中。
实现观测层和最小兴趣层:这两个关键层可以在最小计算代价下支持例行任务及灵活的分析,而不是实现流立方的各个层。最小兴趣层也称为M 层,它既不考虑成本效益也不关注数据流的细节;观测层则称为O 层,它需要对异常的信号或者对异常单元下钻到较低层来发现低层异常后继续完成检查和决策。
一个有效的流数据立方算法:因为流数据立方算法是针对在线计算和查询处理而设计的,所以它需要只沿一个普遍的路径来计算各层,而这种计算中层与层是独立的。基于以上设计方法,流数据立方可以以合理的存储空间、计算代价和查询响应时间来增量地构建和维持。
(三)分布式计算与挖掘模型
由于网络中的数据是连续地到达,快速的单遍扫描算法对于实时查询处理和流数据挖掘就显得尤为必要,但是传统的方法已无法应对分布式计算和存储处理要求。分布式数据挖掘(DDM)则主要解决数据分析中与分布式的计算、存储、交流和人力因素相关资源等有关的问题,与传统的中心化系统不同,它提供了无须将数据收集到一个单独中心点的分布式解决方案,如图5-18所示。可以看到分布式计算节点更贴近分布的数据源,这些计算节点可完成部分运算并在必要时让本地模型和中心节点进行必要的通信。这样做有三个好处,首先可以通过分布式的计算节点来提高推导的并行程度从而缩短计算响应时间,其次可以仅让本地模型进行通信从而减少通信量并提高其扩展性,最后,以上两点有助于节约功耗。
现实中很多数据挖掘任务都能使用上述分布式模型来实现,比如离群点检测,这是一种基于计算两点间距离的一类算法,那些与其他点的距离都很远的点就视为离群点,而分布式离群点检测的典型例子就是网络入侵检测。首先,网络入侵和攻击往往是从一组不同的网络上的主机发起的,其形式是分布式的;其次,互联网中的不同主机的异质性增加,从而导致同一子网中的主机安全需求也会不一样;再次,移动和无线网络的动态性不断增加,其动态拓扑结构导致很难采取中心化的防护措施。在此种情景下,有效地防御和检测策略依赖于分布式节点间的协作,这些分布式节点可以收集攻击的信息,如果可以共享网络审计数据、主机监视名单等,那么一个更好的全球网络模式就可以建立起来。
图5-18 中心化与分布式流处理的对比图
当然,除了离群点检测以外,很多方法诸如聚类、频繁项挖掘、分类和摘要都可以通过分布式的方式来解决。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。