关键词:
Hadoop
数据仓库
列存储
摘要:
随着互联网技术的不断发展和互联网用户的不断增多,互联网的数据近几年呈现爆炸式地增长。互联网数据的急骤增长,使得传统数据库、数据仓库技术面临巨大的挑战,单结点的数据库系统和数据仓库系统往往难以存储和分析海量的数据。而Hadoop则可以通过将廉价的商用计算机组成分布式集群的方式,以极低的成本、极高的扩展性,轻易地解决海量数据存储和分析的难题。这也使得擅长解决大数据而新兴的Hadoop分布式计算平台在两到三年的时间里快速成长、成熟并流行开来。随着数据规模的不断增长,以Hadoop为代表的基于集群的分布式数据处理平台必将成为未来的数据分析和处理的主流。
本文分析了分布式系统和数据仓库的基本原理,并对Hadoop原理进行了详细的研究和分析,重点研究了两个核心子项目MapReduce和HDFS的底层的实现机制,并详细分析了基于Hadoop的数据仓库基础架构——Hive的原理、架构及实现。
由于Hadoop目前在数据处理时均是以行或行组的形式进行分布式存储,IO瓶颈是影响Hadoop数据处理性能的主要瓶颈,CPU利用率较低,未达到充分利用。同时,列存储技术具有减少查询1O数据量和易于压缩的重要优点。本文将列存储技术和Hadoop分布式计算平台加以结合,设计了基于Hadoop的分布式的列存储技术解决方案。该方案基于HDFS客户端和服务端程序,可利用列存储减少IO量,并利用实时压缩技术进一步减少IO量和提升CPU利用率,提升整个分布式系统的性能。
本文首先设计了列存储的分布式存储格式及数据冗余和分布式数据本地化方案,以满足在HDFS上以列存储的方式存储数据并充分利用了MapReduce的本地计算能力。由于MapReduce'‘移动计算比移动数据更划算”的设计思想,数据本地化成为了分布式列存储的核心问题,本文通过修改HDFS的客户端和服务端的程序,解决这一问题。
同时,本文设计了一种基于冗余字符串的两阶段实时数据压缩算法,以满足具有一定压缩密度的高速实时列存储数据块压缩和解压。本文将该算法封装在列存储文件格式的实时压缩和解压缩模块中,并与其它相似算法进行了测试和对比。结果显示该算法具有较高的效率和较高的压缩率。
本文使用70个结点的商用服务器构成的Hadoop集群测试了分布式列存储系统的性能,并做了分析。实验结果表明,基于Hadoop的分布式列存储系统具较好的IO性能和合理的CPU利用率,适用于查询密集型的应用。
最后,本文将列存储文件系统应用于Hive数据仓库基础架构的文件存储格式。