APP下载

HDFS数据动态分布设计与实现

2020-06-15蔡宇昂张鑫

绿色科技 2020年6期
关键词:存储介质阈值客户端

蔡宇昂,张鑫

(1.湖北警官学院,湖北 武汉 430034;2.华中科技大学,湖北 武汉 430074)

1 引言

为适应大数据对于存储系统的要求,人们提出了许多分布式文件系统,分布式文件系统HDFS就是其中之一。在分布式系统Hadoop中,由于SSD(Hard Disk Driver,HDD)的不对称I/O特性和价格因素,使得由SSD和HDD组成混合存储系统是一种有效的解决方案。HDFS是针对同构集群设计的,对存储介质的类型未加以区分,在为数据块分配存储空间和保存数据块的过程中,不考虑存储介质之间的性能差异,导致新型存储介质的优势无法完全的发挥出来。对HDFS的数据分布进行优化、提高HDFS的数据存取速度具有重要意义。

论文根据数据被读写的频率确定数据应存放的存储介质,解决数据在不同读写性能的存储介质间的分布与其热度无关的问题,期望能为大数据在高效存取与处理、多种数据及多种应用并存且并发服务等方面提供一些解决方案。在对数据分布策略进行优化之前将分析各类数据的时间和空间访问特征,将其与多种特性的存储设备关联,达到将数据存储在最合适的位置的目的,使之能够被快速地获取和存储。

基于负载访问的数据管理策略在发挥SSD优良读性能的同时借助磁盘来减少对SSD的写和擦除操作[1,2],系统通常采用静态或动态监测的方法对页面访问情况进行统计,当访问负载变化较为频繁时,I/O 统计带来的累积效应将会使该模型在访问负载变化时不能快速反应,文献[3]对此进行了改进,提出了一种时间敏感的SSD和HDD高效混合存储模型。但是这两种方法都是基于内存页的I/O统计信息来决定数据分布,一方面当数据量和内存增大时所需的元数据迅速增加,不能满足大数据数据量大的需求;另一方面在页级别难以利用各请求之间的相关性来加速存储性能,难以很好地支持大数据高效处理。MapReduce框架还为另一种异构计算平台做了改进,比如多核处理器和核加速器,很多文章优化了同构集群下多租户MapReduce工作,这些文章无论用哪种方式都是提出调度程序在面临多重工作时让本地任务的优先级高于远程任务,但是在异构集群中,这些方法都不太适用。有论文提出一种称为Tarazu的解决方案[4],对异构集群下的MapReduce系统进行了优化,但其所做的优化主要是针对任务调度方面,并未对异构集群下数据的存取方式进行改进。现有国内外研究在大规模分布式存储、数据分布与存储性能隔离等问题上都提供了充足的解决方案,但是大数据环境下需要合理分布数据以获得更高的访问效率,数据在异构的存储集群上的合理分布问题有待进一步研究。

2 HFDS数据分布优化方案

2.1 数据分布优化的基本原理

HDFS集群中具体执行数据存储逻辑功能的从节点都会驻留一个数据节点(DataNode)的守护进程,来执行分布式文件系统中的数据块操作。DataNode会将HDFS数据块保存在Linux本地文件系统的实际文件中,并将其视为Linux文件系统上的普通文件进行管理。在原HDFS中,DataNode在接收到数据块后,会在本地文件系统中随机选择存储介质加以存放,且一经确定,数据块的位置将不再发生改变,数据块所处存储介质的性能优劣是随机的,不会根据数据的热度智能的选择数据块的存放位置。为实现数据的更合理分布,新增一项工作:在DataNode初始化时,统计处于自身管理下的存储介质的种类,并确定每种存储介质的读写性能值,在DataNode运行的过程中,新增一个调度线程BlockScheduler,对存储介质进行分类管理。

当DataNode收到客户端创建新文件的请求时,会在写性能较好的存储介质上为客户端分配对应存储空间(而不是原来的随机分配存储空间),当客户端频繁的对DataNode上的某个数据块进行读操作时,BlockScheduler会将该数据块迁移到读性能更好的存储介质上去,当客户端频繁的对DataNode上的某个数据块进行写操作时,BlockScheduler会将该数据块迁移到写性能更好的存储介质上去。当某种存储介质的剩余空间不足时,BlockScheduler会对其进行阈值调度,根据存储在其上的数据块的读写频率将数据块分散到其他存储介质上,以保持各存储介质的良好状态。通过以上的数据块迁移工作,就可以使被频繁访问的热数据存放在对应性能最好的存储介质上,从而提高DataNode对外提供服务的效率,缩短系统响应时间。

2.2 数据分布优化的过程

调度线程BlockScheduler以一个固定时间为周期(TIME_GAP)对本DataNode管理下的所有数据块的存储位置进行调度。每个周期内,BlockScheduler线程处于休眠状态(最大限度降低调度线程带来的系统开销),DataNode在处理客户端请求后,会额外增加一项计数工作:客户端执行修改数据块(Append)请求后将涉及到的数据块对应的被写次数(writeCount)加1;客户端执行读数据块(Read)请求后会将涉及到的数据块对应的被读次数(readCount)加1。

每个周期结束时,BlockScheduler会统计每个数据块被读写的次数,同时考虑数据块所在存储介质的性能参数,对针对每个数据块进行以下计算:

readCount/READ_PARAMETER + writeCount/WRITE_PARAMETER = needMove

(1)

readCount - writeCount = moveDest

(2)

把它们定义成参数,统计得到所有数据块的needMove的最大值moveStandard,根据moveStandard和存储介质种类数COUNT以及每个数据块needMove计算得到每个数据块应提升的性能指数finalNeedMove:

finalNeedMove = COUNT/2 * needMove/moveStandard

(3)

设定一个判定读写性能是否平衡的阈值标准RW_Blance_Threshold,根据moveDest与RW_Blance_Threshold的差值格式化为[-1,1]:

* 如果moveDest < -RW_Blance_Threshold,则置moveDest为-1;

* 如果moveDest > RW_Blance_Threshold,则置moveDest为 1;

* 如果 |moveDest| < RW_Blance_Threshold则置moveDest为 0。

依次对各数据块进行判断,如果finalNeedMove大于0,则将此数据块根据moveDest移动到其他存储介质,移动方向为:性能平衡性[moveDest-1,moveDest+1],综合性能指数提高needMove,如果对应存储器不可用,则将性能指数再加1,依次类推,最高提高到性能平衡性[moveDest-1,moveDest+1]中综合性能的最大值。

以上的调度过程持续不断的将数据从低性能存储介质上迁移数据到高性能存储介质之上,当热数据被大量的迁移到性能较好的存储介质上后,相应的存储空间可能会被用尽,所以需要对各存储介质设相应的阈值,以保证存储介质剩余空间状态良好。当存储器的容量达到阈值时,依然可以接收数据块。上文提到,每个周期结束时,会对热数据进行调度,如果调度的过程中发现数据迁移的目标存储介质容量不足,则会对此存储介质进行阈值调度。

在对某存储介质进行阈值调度时,BlockScheduler会统计得到系统中所有数据块被读写次数的值(同上文提到的readCount、writeCount),并进行以下计算:

readCount + writeCount = needLie

(4)

计算出所有数据块的needLie值之后,BlockScheduler会统计needLie的最大值lieStandard,并以此为标准,结合系统中存储器种类数(COUNT)计算出此存储介质上的所有数据块应处于何种性能参数的存储介质之上。

finalNeedLie = COUNT* needLie/lieStandard

(5)

最后,BlockScheduler会根据每个数据块的finalNeedLie值和moveDest(上午提到,在进行数据块调度时,已经计算得到了moveDest的值)将其转移到综合性能为对应值的存储介质上。统计平衡性[moveDest-1,moveDest+1]内可用的存储器,根据finalNeedLie的值进行转移,如果对应性能的存储器的容量达到阈值LOAD_THRESHOLD时,则将性能指数加1进行转移,依次类推,加到最大值还未找到则重新从性能最小值开始循环。

2.3 数据分布优化方案分析

论文提出的数据分布优化方案,将数据块在DataNode内部各存储介质间进行迁移,能否高效的完成并去取得预期的效果取决于以下几个关键因素。

(1)合理确定存储介质的性能参数。 为了较准确的确定数据块的合理位置,必须为存储介质的读写性能确定一个合理的参数。如果这个参数不能科学的确定,调度工作就没有科学的依据,也就变得毫无意义。

(2)合理评估数据被访问的频繁程度。 对数据块进行调度最大的根据就是数据块被访问的频率,在系统实现中,必须根据数据块被读写的次数对数据块的热度有一个科学的评估,同时联系该数据块所在的存储介质的性能参数,合理的判定该数据块是否需要被迁移。如果无法对数据的热度进行合理的评估,对数据块的迁移就没有了正确的方向,还有可能导致某个数据块被迁来迁去,造成系统的震荡,反而降低了原系统的性能。

(3)保证各个存储介质有足够的剩余空间。 在对数据进行迁移的过程中,必须保证数据块的合理分布,使各类型存储介质都能有足够的剩余空间,以保证调度过程能正常的进行。如果某种存储介质剩余空间太小,就会导致无法接收更适合存储在其上的数据块,导致调度过程异常。

为使以上关键点得到有效的保证,本方案综合考虑多种因素,并根据各要素对数据块应处的位置做出合理的判断。

(1)合理确定数据块的存储位置。 对数据块进行调度的重点就是确定数据块存储在何种性能的存储介质之上最为合理。本方案在确定这一问题时依据了存储介质的性能参数和数据块被读写的次数这两个因素。在热数据调度和阈值调度的过程中,确定数据块应处位置的参数都是依据数据块被读写次数和所在存储介质性能参数的比例关系,这样会使读写次数较多而存储介质性能很差的数据块得到较快的性能提升,而读写次数与存储介质性能参数相符的数据块会由于两者比值很小而保持在当前位置或仅有较小的性能提升,较好的照顾到所处存储介质较差的热数据,同时也使处于合理位置的数据块不会被频繁的迁移,从而提高数据块调度的效率,避免为系统增加过多的额外负担。

(2)保证数据在各存储介质间分布的平衡性。 随着热数据的迁移,性能较好的存储介质上的数据量会越来越大,如果不对数据分布的平衡性进行考虑并建立相应的机制加以保证,性能较好的存储介质的存储空间会很快被耗尽,使更应该被迁移到此种介质上的数据块无法完成迁移。本方案中的阈值调度较好的保证了数据在各存储介质间分布的平衡性。当某种存储介质剩余存储空间不足时,会对其进行阈值调度,将存储在其上的数据块迁移到其他存储介质中。在进行数据块的迁移时,本方案重点考虑了数据块被读写的次数,根据读写次数将数据块迁移到性能最合适的存储介质上,使得相应数据块在之后的调度过程中再次被迁移的可能性降到最低,从而提高了数据调度的整体性能。

3 测试与分析

3.1 测试环境

论文所实现方案测试环境配置如表1所示。

表1 测试环境配置

3.2 性能测试与分析

3.2.1 读性能测试

如图1、图2所示,在对原Hadoop系统进行读性能测试时,测试程序先频繁地随机读取预存好的测试文件,持续一段任意长时间(测试时设定的时间为1 min)。然后测试程序将十个测试文件分别读入内存并统计完成整个读取过程花费的时间。在原Hadoop系统中,测试文件的位置整个测试的过程中保持其原来位置不变,未根据数据的热度进行迁移,客户端读取文件的平均速度为94.67 MB/s。在改进后的Hadoop系统中,有3个文件(Text6、Text8、Text9)的读取速度有显著提升,这表明这些文件在被读取的过程中存储位置发生了改变,从低性能的存储介质迁移到了高性能的存储介质上,这使得客户端读取文件的平均速度提高为139.47 MB/s。改进方案使Hadoop系统的数据读取速度提高了47.3%。

图1 改进前后系统数据读速度对比

图2 改进前后系统数据写速度对比

3.2.2 写性能测试

在对原Hadoop系统和改进的系统进行写性能测试时,测试程序从外部存储介质(保证此存储介质未被Hadoop系统使用,测试中用的是移动硬盘)将预先准备好的8个文件依次读入内存,然后写入到Hadoop系统中,并统计从内存中写入Hadoop系统花费的时间。在原Hadoop系统中,文件的写入位置是根据容量来随机分配的,而在方案改进后的Hadoop系统中,文件的写入位置被尽可能的安排在写性能较好的存储介质上,只有高性能存储介质上容量不足时文件才会写到低性能存储介质上,这使得更多的文件被写入了写性能较好的存储介质。如图2所示,原Hadoop系统的平均写入速度为71.56 MB/s,改进后的Hadoop系统的平均写入速度为79.56 MB/s,改进方案使Hadoop系统的数据写入速度提高了11.2%。

4 结语

随着越来越多的内存、SSD等新型存储设备被广泛使用,混合存储系统逐步成为目前研究的重点。当前HDFS是针对同构集群设计的,无法将混合存储系统中存储介质的优势无法完全的发挥出来。现有的对HDFS进行改进的方案都是针对任务调度、存储性能隔离等问题而提出的,但是大数据环境下需要合理分布数据以获得更高的访问效率,论文对Hadoop数据分布方案进行了研究,提出一种在原系统处理逻辑基础上的数据动态分布方案,在多种存储介质组成的混合存储系统中优化数据的分布,使Hadoop的读速度提高了47.3%,写速度提高了11.2%。同时方案根据数据块的读写频率,合理的判断出数据块的热度并将数据块迁移到最合适的存储介质之上,在数据迁移的过程中也为各存储介质的剩余空间的健康提供了保证机制,避免因数据块的调度导致高性能存储介质爆满。

猜你喜欢

存储介质阈值客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
改进的软硬阈值法及其在地震数据降噪中的研究
土石坝坝体失稳破坏降水阈值的确定方法
基于小波变换阈值去噪算法的改进
改进小波阈值对热泵电机振动信号的去噪研究
电子档案离线存储介质的选择分析
媒体客户端的发展策略与推广模式
新华社推出新版客户端 打造移动互联新闻旗舰
浅析声像档案的保存与利用