论文部分内容阅读
Spark Streaming是大数据环境下流处理系统中的新秀,它使用有向无环图的方式依照当前操作父子数据集间的依赖关系划分操作执行顺序。但其评价标准过于单一,对于多连接操作只能做出简单的顺序划分,无法结合各条数据流基础信息和数据流间连接关系做出针对性处理,难以找到执行效率较高的连接顺序。同时针对多条数据流连接下的窗口持续查询操作,其采用重复独立计算的方式执行,每次都要根据当前窗口下全部信息重新计算结果,相邻窗口间存在大量冗余计算,整个查询执行效率较低。针对以上问题,本文提出了基于启发式搜索的多数据流连接策略和基于时间戳的中间结果缓存策略。根据数据流集合对应的无向赋权图构建连接树,求解合适的连接顺序,再结合连接树各节点间便于数据存放的优势建立缓存机制,在相近窗口内复用中间结果,减少冗余计算量。本文主要贡献如下:1)基于启发式搜索的多数据流连接策略:通过分析关系型数据库系统和流处理系统中已有的连接技术与图的相关概念特征,将数据流之间的连接关系转化为无向连通图;根据数据流的流速为图中各点赋权,根据相关数据流间中间量的规模为图中各边赋权,分析多流连接代价构建启发函数,提出了一种基于启发式搜索的多数据流连接查询优化策略,通过连接树的方式寻找最为合适的连接顺序;针对流处理中数据持续不断到来的特性,提出一种连接树权值标准,在构建树的同时计算树权值;依照新时段数据流基础特征,周期性更新点边权值,根据评价函数重建连接树,比对新旧连接树权值选择更优解,实现连接树的动态化,以保证连接操作的持续高效。2)基于时间戳的中间结果缓存策略:在上一点的基础上,借助连接树各个父节点上可以存放计算结果的优势,结合滑动窗口技术和Spark平台弹性分布式数据集存储特性,设计出一种基于时间戳的中间结果缓存策略,进一步降低了连接操作执行过程中的计算量。并依照此缓存策略下多数据流连接操作计算规律,提出了一种基于时间戳的缓存回收机制,使计算过程更加准确高效。3)实验分析:基于Kafka消息队列和Spark Streaming平台,通过Kafka生产者API生成多个测试数据流,Spark Streaming平台作为消费者接收和处理数据,执行数据流连接操作,验证前两点中策略的可行性。从实验结果中可以看出,本文所提出的多数据流连接策略和中间结果缓存策略可以有效降低多数据流连接操作执行时间。