论文部分内容阅读
近年来,随着信息技术的高速发展,我们正逐步迈入一个大数据的时代,每天有大量的数据从互联网中产生,如何对这些数据进行保存、分析已成为各大公司的主要挑战。在这种背景的驱动下,诞生了如Hadoop,Spark等大数据系统,这类系统已经成为应对大数据挑战的主要解决方案。为让有数据库背景的人员能够更好、更快地利用分布式技术对公司的数据进行分析,又诞生了诸如Hive,Pig等高层查询系统。它们可以让使用者以类SQL的方式进行数据查询,大大降低了使用门槛。 如今,Hive已广泛被各大公司作为大规模数据的查询分析工具。它提供一种类SQL的查询语言——HQL。为提高Hive的查询速度,可采用高效的文件格式进行存储,如RCFile、ORCFile,同时也可对数据建立索引,如CompactIndex、BitmapIndex、DGFIndex等。但由于不同的文件格式与索引的设计思路、实现方式不同,Hive用户难以根据应用特征选择合适的技术组合。而且,目前缺乏对类Hive系统中列式存储与索引技术的综合性评测工作,为解决这一问题,文本首先模拟真实企业中的数据处理流程,设计了一套对文件存储格式与多维索引的评测体系,然后基于该体系对Hive中的列式存储与索引技术进行了大量的综合性评测工作,最后基于评测的结果为Hive用户给出一个提升多维查询性能的实践方式。本文的具体工作内容包括以下几个方面: (1)设计并实现完成DGFIndex索引对列式存储文件格式RCFile,ORCFile的支持。DGFIndex是一种基于分布式网格文件的索引结构,它利用键值的方式加速索引读取,通过建立索引维度与多维空间的映射达到细粒度数据过滤的目的。但目前DGFIndex仅支持行式存储文件格式TextFile,数据存储与读取性能较低,无法过滤查询无关的列。因此使其支持列式存储不仅可以减少数据表的磁盘空间占用,还可以进一步过滤无关数据,显著提升其性能。 (2)实现创建DGFIndex索引时对数据片进行排布的功能。当前创建索引中数据片排布采用随机放置的策略,若可以将逻辑上相近的数据在物理空间也相近排布则可以减少查询过程中的数据I/O的次数,使得查询结果更快地被返回。本文采用Z-order算法对数据片进行排布,使逻辑上邻近的点,在空间上邻近加速了查询的速度。 (3)设计并提出一套评测体系,对比不同文件格式在不同的数据集,数据量下使用不同的索引,文件格式以及数据组织方式时,对查询性能的影响,并给出如何使用的指导意见。Hive虽然被企业,研究机构广泛使用,但是并没有一个专门评价标准来对比各类使用方式的优劣以及不同的文件格式,索引等适合使用的场景和优缺点。因此本文从该方面出发提出该评测体系为使用者以及做优化的人提供参考。