刘春颖,张晓芬,张 悦沈阳师范大学,辽宁沈阳 110034
数据库集群研究中的一致性哈希算法分析
刘春颖,张晓芬,张悦
沈阳师范大学,辽宁沈阳110034
为了提高数据的运行速度以及运行的可靠性和安全性,需要设置合理的数据划分方法,并将一致性哈希算法运用到数据库集群研究中。本文分析了一致性哈希算法在数据库集群研究中的具体应用方法,并设计了具体的数据划分方案,为后期的数据研究工作提供参考和借鉴。
数据库集群研究;一致性哈希算法;数据划分
由于数据库中的数据信息分布并储存在多个节点上,因此,为了提高系统运行的性能以及数据处理的速度,要将数据库中所有的数据进行科学的划分,并提高其分布的合理性。在进行数据划分的过程中,要考虑到数据访问和处理的性能以及数据增长和集群的可扩展性,进而在确保其运行性能的情况下降低运行成本。而哈希算法是较为常见且运用十分广泛的数据分布技术,下文对其进行详细的分析[1]。
一致性哈希算法的工作方法大概可以分为两个步骤:第一,通过求模运算来计算储存节点上的哈希值,在计算过程中,可以将储存空间假设成一个环,并将所有的储存节点均匀的分布在环上,这样的话所有的节点就都拥有了一个哈希值。第二,应用哈希算法对第一步的数据进行计算,然后按照顺时针的方向将计算出来的结果映射到离它最近的节点上去。即使某个节点出现了故障导致离线,也能减少对其他节点的影响。而当需要在两个节点之间增加一个节点时,所产生的影响也仅仅存在于两个节点之间的位置。因此,通过一致性哈希算法,对节点进行分布和计算可以有效提高系统运行的稳定性和可靠性。
一致性哈希算法区分于传统哈希算法,也是在简单哈希算法的基础上进行改进,其应用优势可以从以下几点进行分析:第一,改进了传统哈希算法中需要增删节点的麻烦,提高了系统更新的效率,并避免在增删节点过程中对其它节点造成影响。同时节省传统哈希算法中进行数据移动的开销,降低了系统运行的成本。第二,增强了系统的平衡性。由于数据库中的每个点都有其自身的性能,有些性能较强,有些则较差,通过一致性哈希算法,可以对其节点性能进行科学分析,进而提高节点分布的合理性。第三,能够提高数据增长时的系统运行速度。当数据库内的数据出现持续增长状态时,对系统的运行压力比较大,很容易因为突然的数据数量增加而导致其运行速度迟缓或者直接造成瘫痪。而通过一致性哈希算法的应用,能够将包含数据较多的虚拟节点进行分类,并可以在服务器之间调整期储存分布情况,这样就可以提高系统服务器对于数据增长的适应性,避免造成运行不畅[3]。一致性哈希算法目前主要应用于分布式Key-Value存储系统中,其作用是存储高并发的事务性数据,并根据Key值的不同,存放在不同服务器中,比如一些大型网站通常会把一些访问频率较高但是变化频率较低的系统缓存页面储存在Key-Value系统中,以降低服务器的运行压力和后台的访问压力,进而提高其运行速度和运行的稳定性。
对于数据库的集群研究可以根据其研究目的以及数据特征等划分为不同的研究形式,其中对于结构化数据的分析称为分析性数据库。而随着现代化信息化程度的提高,以及基于智能平台的新媒体的不断深化和拓展,导致结构化数据的产生速度不断加快,进而提高了对于数据的分析工作难度。在这种情况下,传统的数据库分析方法已经不能够满足其数据数量和数据增长的需求,而针对大规模数据分析的并行计算和集群系统应运而生(以下并称为并行分析型数据库集群),提高了数据分析的扩展性和可靠性,并节省了分析成本。以下就对一致性哈希算法在并行分析型数据库集群中的应用进行分析。
3.1数据的基本划分方法
在对数据进行划分时,可以选择一个分区键,分区键和元组之间形成类似Key-Value的关系,并利用哈希函数计算出每个元组在分区键上的哈希值并作为新的分区键。如果分区键是基本型数值,可以将原来的分区键划分为新的分区键,称其为“数值型分区键”,并称数值型分区键的值空间“分区空间”。指定数值型分区键之后,即可将数值型分区空间划分为若干的分区。
3.2数据划分方案设计
HDSF是目前数据量较多情况下实用性很强的一种存储系统,能够保证存储数据的容差性和可扩展性。而MapReduce能够很好的完成数据进入存储引擎之前的抽
取、转换格式和加载的任务。因此,将利用这两种系统完成对数据划分方案的设计。具体划分方案可以分为以下几个流程:第一,输人划分所需的参数。输入的参数需要包括具体的采样数和分区数。并用a表示在HDFS上的数据表文件中总共采集了多少行参数作为样本,A表示数据划分最终要生成多少个分区,同时保证每个数据块的大小要基本均衡,最终这些数据块将会被导入到集群的存储系统中。第二,采样生成Partition File。对于采集到的每个行,获取或计算出其数值型分区键。采样到a个分区键后,对其进行排序,并按照这a个分区键的值将分区空间划分为A段,每段中包含的分区键个数基本相同,将划分后的A一1个分区端点写入到Partition File。第三,启动一个MapReduce Job对数据表进行一致性哈希划分。
3.3.1测试方法
在Presto中DDL部分的功能依赖于Hive的实现,所支持的数据划分和Hive是一致的。但是Hive不能直接对哈希划分哈范围互粉提供支持,因此可以指定一个字段作为分区键,导入数据时可以将分区键上值相同的元组导入一个分区中,相当于提供了对列表划分的支持。对于导入同一分区的数据,可以按照某个字段的值进行聚簇和排序。
3.3.2测试结果
采用TPC-DS作为测试基准,并利用其生成器生成了100GB数据集,同时把其中最大的一张事实表作为测试数据,数据量达到38.15GB。在实际的测试过程中,对Hive/Presto和哈希数据划分方法进行对比。从测试结果可以看出,哈希数据划分方法的性能更加良好,并且当数据集群规模增加时,哈希划分方法的适应性和扩展性都表现得比较优良[4]。
本文通过分析一致性哈希算法的具体工作原理以及应用优势,并以并行分析性数据库集群为例,分析了一致性哈希算法的实际应用效果,并建立了具体的应用方案,通过对方案的测试可以发现,一致性哈希算法的应用效果良好,能够提高数据划分的速度并保持其扩展性能,有利于维护系统的稳定性和安全性。
[1]颜吉强.数据库集群中的数据分布策略研究[J].煤炭技术,2013,32(4):154-155.
[2]姚墨涵,谢红蔹.一致性哈希算法在分布式系统中的应用[J].电脑开发与应用,2012(7):1-2.
[3]杨或剑,林波.分布式存储系统中一致性哈希算法的研究[J].电脑知识与技术,2011(22):5295.
[4]赵飞,苏忠.一致性哈希算法在数据库集群上的拓展应用[J].成都信息工程学院学报.2015,30(1):54.
TP3
A
1674-6708(2015)152-0068-01
刘春颖,讲师,硕士,研究方向:计算机科学与技术
张晓芬,副教授,研究生,研究方向:计算机科学与技术
张悦,硕士,副教授,研究方向:数据挖掘,LSBN