论文部分内容阅读
HBase是存储海量非结构化数据的数据库,在主键检索时具有较高的性能,但其在非主键检索时只能进行全表扫描,效率极其低下,且HBase对SQL查询语句支持较差。根据项目数据集的格式、项目对数据集检索的需求以及项目实时性目标,对以HBase为主数据库的存储与检索框架的设计与该框架性能的改进是本文的工作重点,其主要工作如下:(1)设计了LBase+IHive存储与检索框架。LBase存储层结合了HBase与Lucene,面对较大数据量时可兼顾稳定性与实时性,存储层数据分类存储,实时数据存入Lucene,历史数据存入HBase。IHive检索层结合了Hive和Impala,数据量较少时通过Impala检索减少了通过Hive检索启动MapReduce的延时,数据量较大时通过Hive检索避免了通过Impala检索的内存溢出、容错机制严格等问题。(2)设计了HBase二级索引。HBase数据记录的主键RowKey是由循环程序生成的前缀字段与项目数据集最常用的IP字段和时间字段拼接而成。根据该RowKey,HBase二级索引的索引键设计为由单节点中前缀最小值、组合索引标识符和RowKey拼接而成的字段,保证了索引与数据逻辑上分离。二级索引与相应数据记录存放在同一张表中,索引的值和数据记录的值存放在不同列族中,保证了索引与数据物理上分离。(3)将拓扑感知算法运用到LBase+IHive存储与检索框架中。拓扑感知算法将数据副本根据相关性动态分布在集群,减少了MapReduce处理流程中不必要的数据副本移动所带来的多余的网络流量开销,从而优化数据副本通信开销,降低时间延迟。最后本文实现了原型系统,并对其进行多组性能实验。本文使用数据生成器生成日志数据,对每一步改进的内容设计相应实验,实验过程中记录数据并分析实验结果。最终,实验结果证明本文做出的改进方案能够达到项目中大数据存储及检索的预期目标。