SpingFS: Bridging Agility and Performance in Elastic Distributed Storage 浅析

来源:互联网 发布:xvideos软件中文版下载 编辑:程序博客网 时间:2024/05/19 15:43

本文主要针对一般elastic storage system动态增减服务器数量(降低能耗),导致大规模数据迁移,从而降低服务器性能入手,提出了SpringFS,一种分布式的存储系统,在提供弹性存储的同时,能兼顾性能和敏捷(能轻易的缩小和扩大集群规模)。SpringFS基于HDFS实现了多个agent提供resize和migration的功能。其主要思想为: 对HDFS进行改进,在数据布局上实现bounded writesoffloading技术(对写过载服务器实现重定向),同时结合read offloading 和passive migration政策,减少服务器数量变动所需要的工作。

技术细节

本文分析了两种分布式弹性存储系统Sierra和Rabbit,提出了两者的优缺点,在两者的基础上提出了自己的存储系统。

1.      Sierra、Rabbit和SpringFS的比较          

Non-Elastic:HDFS是非弹性存储系统的代表,采用三副本的方式保证数据的容灾性,三副本不存储于同一server,随机的分配在所有server中,峰值写性能能达到N/3,其中N为系统中所有服务器数量。但是,为保证数据的可访问性,需要保证所有server活跃,所以namenode需要定时查询所有server是否存活,这类存储系统不具有动态增减系统server数量的特性。

Sierra:弹性存储系统,将所有服务器划分为Primary Servers(存储主副本),Secondary Servers(存储第二份副本),Tertiary Servers(存储第三份副本),如图1所示。优点在于各server分工明确,可动态增减server数量,最好峰值写性能能达到N/3。缺点在于,限制了弹性程度,active server数量不能少于集群规模的三分之一。


图1. Sierra数据布局

Rabbit:弹性存储系统,通过equal-work 数据层进行数据存储。系统中,假设B blocks,其中p个primary server存储主副本,所以每个primary server存储B/p blocks。其中x个active server存储数据的一份副本,所以每个active server至少存储B/x blocks。数据布局如图2所示在系统中  远远小于Sierra中的N/3,所以Rabbit的弹性程度大于Sierra。其缺点在于由于主副本全部存储在p个primary server中,所以写性能可能成为瓶颈。峰值写性能较小。当写过载时,主副本会平均分配到所有active server中,相当于HDFS,如图3所示。

                                                                                        

                                             图2. Rabbit的数据布局                  图3. Rabbit写过载与不过载时主副本布局

SpringFS:结合两者的设计思路,使用Rabbit的equal-work数据布局,当主副本写过载时,使用offload set,对过载server实现重定向,将写数据重定向至offset set中写性能较低的server中(而不是所有active server中)。这样既满足当前写吞吐量需求,又不会扩大之后的cleanup工作。同时,对offload set,实现动态调整(ps:此处,文章未细讲)。

       以上三者的峰值写性能与主副本数量比较如图4所示。从图中可以看出,SpringFS可以实现Rabbit与Sierra端点与两点之间的性能,在写过载或不过载情形下,性能都能达到最优。

                                                                                                           

图4. 弹性存储系统在敏捷和性能间的比较SpringFS数据层和过载策略

2  Data Layout:

       主要思想是,动态设定offload set,对写过载的主副本进行重定向至offload set中,其中,offload set根据过载程度与相应的cleanup work进行动态调整。即当少量的写过载时,offload set较小,相应的cleanup工作较少,若写大量写过载时,offload set值增大,cleanup工作增多。如图4所示,offload set为m时,当m=p,则相似与Rabbit,当m=N/3时,则相似与Sierra,所以SpringFS可以实现Rabbit与Sierra端点与两点之间的性能。

Read offloading:

       因为写只能发生于primary server中,所以写性能最可能成为系统瓶颈。SpringFS通过实现读写分离来降低primary server瓶颈。文章对读进行重定向,优先选择写请求较少的server,因为系统实行最小的offload set,所以编号越低的server具有越多的写请求。因此,将读发送至较高的server中,可以实现读写分离。

Replica placement:

       主副本放置在m server中,其他副本根据equal-work决定放置位置,即第二副本放置于 到  之间,第三副本放置于 到  之间(此处尚未明白为什么为)。如果由equal-work决定的位置在 与m之间(offload set之间),则重定向至m之外。

3.   数据恢复时被动迁移方法

作者认为,激活一个server相比较于吊销一个server,实时性要求更低,因此,不同于一般的主动迁移政策,作者使用了被动迁移政策,即激活更多的server,既满足于吞吐量需求,又具有额外带宽用于数据迁移,而不是提前激活满足吞吐量的最小server数,提前进行数据迁移。激活的server数的选择,主要基于两个原则:满足吞吐量,可以在阈值T(默认的调整时间间隔)时间内完成迁移。目前阈值T为实验测试最好结果,作者未来工作是完成T的实时变化。

总结

       作者首先强调了elastic system中敏捷性对降低机器时间,减少能耗方面的重要性,由此,结合Sierra和Rabbit优缺点,设计了SpringFS系统,能最大化峰值写性能,又能最小化系统规模,同时提出了一系列措施用于最小化迁移政策,从而减低能耗。作者未来的工作主要在于实现不均匀数据访问的数据层优化策略(目前基于HDFS,假设数据时均匀访问的)。
0 0
原创粉丝点击