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,假设数据时均匀访问的)。- SpingFS: Bridging Agility and Performance in Elastic Distributed Storage 浅析
- Elastic Distributed Database
- Bigtable: A Distributed Storage System for Structured Data : part7 Performance Evaluation
- Concurrent and Distributed Computing in Java
- Amazon Elastic Block Storage Volumes
- Employee level and performance review in Microsoft
- Sector/Sphere:High Performance Distributed File System and Parallel Data Processing Engine
- Bigtable: A Distributed Storage System for Structured Data : part1 Abstract and Introduction
- Bigtable: A Distributed Storage System for Structured Data : part11 Conclusions and Acknowledgements
- Storage: Optimizing For Performance
- Java Performance (1) - distributed computing
- ExtremeDB performance-distributed sql engine
- Creating Components: Object Oriented, Concurrent, and Distributed Computing in Java
- Security in Distributed, Grid, Mobile, and Pervasive Computing
- Distributed and Parallel Systems: In Focus: Desktop Grid Computing
- Distributed transactions in Spring, with and without XA
- Steps and Tips in Distributed Mode——Cola
- Distributed transactions in Spring, with and without XA
- java 后台访问https
- 大话设计模式(三)动态代理设计模式
- JAVASE学习笔记:第七章 常用类Lang包之包装类
- linux mail命令用法浅析【用最简单的测试一下就可以了如 "mail 真实的邮箱账号"具体操作见下一篇文章】
- iOS通知传值
- SpingFS: Bridging Agility and Performance in Elastic Distributed Storage 浅析
- 百度地图线路规划 + 地理编码结合使用,精确找到终点的位置
- QTP远程运行无法对windos object进行操作
- 8道SAT完成句子题练习
- APACHE 2.2.8+TOMCAT6.0.14配置负载均衡
- 印度“塑料大王”裸捐6亿美元家产后遁入空门
- 开发中遇到的一些版本兼容问题-JsonObject
- 对测试的认识
- redis中文api