论文部分内容阅读
随着互联网的快速发展,大数据领域的应用和技术层出不穷。企业面临来自这个领域的诸多挑战,它们需要充分地了解并利用新技术来提高自身的竞争力,使海量数据所带来的价值最大化。在众多企业数据分析需求中,快速检索与查询(或称交互式分析)是日益受重视的一种分析类型,它为企业提供了高效的分析,缩短了决策周期,节省了时间成本。面向这种分析类型的技术在不断发展,业界开始出现较为成熟的解决方案,也有一些新兴的技术从不同的角度考虑问题,使得它们在针对特定的分析类型时有更好的表现。本文主要从面向结构化数据的快速查询和面向半/非结构化数据的快速查询两个方面来研究或实现解决方案。前者包括SQL-on-Hadoop和MOLAP引擎Kylin,后者包括基于HBase二级索引的查询系统和基于HDFS随机访问的查询系统。对于这四种技术方向,本文分别描述了它们的实现原理,分析了它们的性能表现,并在一定程度上对它们做了性能优化,并展示了优化的效果。从结果上可以知道,在主流的SQL-on-Hadoop解决方案中,Cloudera公司的Impala性能表现最佳,其次为SparkSQL。利用合理的数据压缩格式Snappy和列存储格式Parquet能极大提高查询效率,另外通过设置缓冲区的方法也能提高二者的性能表现。而对于MOLAP引擎Kylin来说,因为其利用离线计算的方法,用数据的延迟为代价换取了查询速度,在决策支持类查询中表现优异,较SQL-on-Hadoop等在线计算的查询系统更佳。另外,基于HBase二级索引/HDFS随机访问的查询系统提供了对整行数据的快速查询,二者在查询符合某种条件的多行数据时较SQL-on-Hadoop/Kylin有更优异的表现(因为它们提供了索引)。二者的主要差别在于基于HBase二级索引的查询系统有较低的数据时延,但因为被查询数据需要存储在HBase中,造成不必要的数据冗余;而基于HDFS随机访问的查询系统则有更大的数据时延,但却因为无需将数据存储在HBase中而节省了大量的存储空间。