论文部分内容阅读
流式数据是指不断产生、实时计算、动态增加且要求及时响应的数据,因其海量和实时性等特点,流式数据系统一般仅存储最近一段时间内的数据。已有的流式数据存储查询方式主要采用基于分布式文件系统的数据库,即:底层存储采用Hadoop分布式文件系统HDFS,上层采用以大规模并行处理MPP架构作为调度引擎的数据库。目前,基于HDFS的数据库在流式数据的存储与查询方面中存在以下不足:1.HDFS适于批量数据的存储,直接将流式数据单条存入HDFS,将产生大量文件碎片,使数据访问寻址时间增大,难以满足实时性查询的应用需求;2.现有的数据库系统查询时一般需启动MapReduce,因有较大延时,查询实时性比较差。3.当需要在数据仓库工具与传统数据库进行关联查询时,已有的数据全复制策略对空间和时间占用较大,查询效率较低。针对上述问题,本文基于分布式文件系统HDFS和数据查询系统Impala,采用缓存策略对单源和多源流式数据存储与查询方法进行研究,并对传统数据库与基于分布式文件系统的数据仓库工具间跨平台关联查询方法进行了研究和应用测试。本文的主要工作包括:1.基于缓存的单源数据查询方法研究,即:单源流式数据经格式处理后,采用缓存机制存储到分布式文件系统,并使用数据仓库工具Impala实现流式数据的实时查询。2.多源数据实时查询及多级缓存优化方法研究,即:当多源流式数据共存时,采用多源单队列和多源多队列两种方法对数据来源进行区分和缓存,然后将多源数据的查询归类到单源数据的查询,以提升系统对多数据源的支持;同时,本文还提出一种多级缓存优化策略,该策略可支持对缓存的数据进行查询,以提升查询的实时性。3.传统数据库与数据仓库工具跨平台查询方法研究,即:面向传统数据库与数据仓库工具的关联查询,提出一种能够支持跨越这两种平台的数据查询方法,该方法将关联查询中传统数据库的查询结果以临时表的形式存储到Impala,然后在Impala平台上进行本地的关联查询。本文的创新点为:1.提出一种基于缓存的单源流式数据查询方法,该方法采用缓存机制存储数据,并使用查询效率较高的Impala对存储的数据进行查询,有效地提升了查询的实时性。2.采用面向多源数据查询的多源单队列和多源多队列两种方法,是单源数据缓存方法的扩展;同时提出一种多级缓存优化策略,该策略支持对缓存的数据进行查询,可大大提升查询的实时性。3.提出了一种能够支持跨越传统数据库和数据仓库工具的数据关联查询方法,该方法将关联查询中传统数据库的查询结果以临时表的形式存储到数据仓库工具,可大大减少两平台间的数据传输量,节省数据传输时间和存储空间,提高关联查询的效率。本文基于清华大学CPU中心国家实验室搭建的Impala集群框架,对所提出的基于缓存的单源和多源数据查询以及跨平台查询方法,分别进行了实验,实验结果验证了所提出方法的可行性和有效性。