分布式存储系统可靠性系列五:副本放置算法 & CopySet Replication
本文来自网易云社区
作者:孙建良
在分布式存储系统 中说明了,在一定情况下,copyset的数量不是越多越好,在恢复时间确定的情况下,找到合适的copyset的数量可以降低数据丢失的概率。
在分布式存储系统可靠性系列文章分布式存储系统可靠性-设计模式一文中也总结道:
为了提高存储系统数据可靠性,首先在系统允许的成本范围内选择合适的副本数,再次在系统设计中我们首先优先考虑加快数据恢复时间,在此基础上减小系统的copyset数量。使得在既定的成本下达到尽可能高的可靠性。
其实在业界也已经有团队在这方面有过实践和经营总结。《Copysets: Reducing the
Frequency of Data Loss in Cloud Storage》,这篇paper是斯坦福大学的学生在facebook HDFS集群上作实验,为了有效降低数据丢失概率,数据放置算法,从原来的Random Replicaiton更改为copyset Replication 算法,实验结果说明可以将FaceBook HDFS集群1%节点故障时的数据丢失概率从22.8%降低道0.78%
Motivation: 降低数据丢失概率
Innovation: 减少copyset数量可以降低数据丢失概率
Implementation: copyset Replication
Evaluation: 在Facebook HDFS集群1%节点故障时,22.8% to 0.78%
以下总结分析3种较为典型的副本分布策略,即 Random Replication、Randon Relication With Failure Domain、CopySet Replication,并简单分析这些策略情况下的数据丢失概率。
1 Random Replication
如上为典型的副本随机放置策略,1个大文件分为很多chunk(或称为block),chunk的大小比如64M, chunk的放置并没有什么限制,每个chunk数据的放置基本是按照随机策略进行,当然也可能会考虑容量的均衡,但是基本上是属于一种随机策略。
在R副本,节点数为N的集群中:
集群放置方式(即最大copyset数量) K = C(N, R)
R个节点故障:C(N, R)
R个节点故障时,丢数据概率:Min(K, #chunk) / C(N, R) = 1
如果chunk很多,概率接近于1
2 Random Replication With Failure Domain
如上这种机架感知的副本放置策略情况下,主要的设计原因为保障数据可用性,在一个机架端点或者故障情况下,还有其他机架上的数据还是可用的。如图中所述,放置策略为:
一个副本放置在本节点
第二个副本放置在remote Rack的 节点上
第三个副本放置哎remote Rack 的另外一个节点上
如果还有其他副本,其他副本随机放置
在R副本,节点数为N,故障域数量为N的集群中:
集群放置方式(即最大copyset数量):K = C(Z, 2) C(N/Z, 1) C(N/Z, R-3)
R个节点故障:C(N, R)
R个节点故障时,丢数据概率:Min(K,#chunk) / C(N, R)
3 CopySet Replicaitions
从上面2中放置策略可以基本得出较为单一的结论:
放置方式越多,数据越分散,发生R节点故障时,数据丢失概率越大。
当然并不是说放置方式越少越好,最小的方式直接组织磁盘为RAID 0 mirror 方式,但是这种情况下数据恢复时间较长,从而会进一步加大数据丢失概率。
这里先不讨论,恢复时间和数据分散 在什么样子的搭配情况下会得到最优的情况。只探讨在固定恢复时间情况下,如何有效控制数据打散程度,得到最好的可靠性。
恢复速度与scatter width成正相关,所谓scatter width:
scatter width: 一块盘上的数据所对应的副本数据会打散到其他盘上,所谓scatter,就是所有这些副本数据所对应的盘的数量。scatter width 越大,参与进行数据恢复的节点越多,恢复速度越快,所以固定恢复速度情况下,是可以算出究竟需要多大的scatter width。
scatter width 确定情况下,如何副本放置算法如何确保磁盘的scatter width?
接下来就是轮到CopySet Replication 算法出场了。
其实算法原理很节点,看下下面这张图就成,算法根据系统节点数,和副本数量,进行多个轮次的计算,每一轮次把所有节点按照副本数划分为 N/R 个copyset。每次确保其中的copyset 不与当前和之前所有轮次中已经产生的copyset相同,最后数据写入的时候,选择一个copyset 写入即可。 由于每个排列会吧S(Scatter Width) 增加R-1,所以
算法执行P = S/(R-1) 次, K(CopySet数量) = P (N/R) = S/(R-1) (N/R)
显然相比前两种策略,CopySet Replication在保障恢复时间的基础上能够得到最佳的数据分布策略。
另外在随机放置情况下,其实如果使用小文件合并成大文件的存储策略,可以通过控制大文件的大小,从而控制每个磁盘上大文件的数量,比如100G一个文件,8T盘上的最大文件存储数量也就是8T/100G = 80个文件,显然也就是能够很好的控制一个数据盘的数据打散程度,但是相对而言CopySet Replication 更多的是一种较为通用的算法,而这种算法更多的是适用于特定构架的分布式存储系统,即小文件合并成大文件。
4 参考文献
《Copysets: Reducing the
Frequency of Data Loss in Cloud Storage》https://www.slideshare.net/sawjd/aziksa-hadoop-architecture-santosh-jha
云硬盘是网易云提供的数据持久化服务,为云服务器和容器服务提供弹性块存储设备。
网易云免费体验馆,0成本体验20+款云产品!
更多网易研发、产品、运营经验分享请访问网易云社区。
相关文章:
【推荐】 试水新的Angular4 HTTP API
【推荐】 如何从“点子”落地到“执行”?—完整解析1个手游传播类mini项目的进化
分布式存储系统可靠性系列五:副本放置算法 & CopySet Replication的更多相关文章
- 系列五AnkhSvn
原文:系列五AnkhSvn AnkhSvn介绍 AnkhSVN是一款在VS中管理Subversion的插件,您可以在VS中轻松的提交.更新.添加文件,而不用在命令行或资源管理器中提交.而且该插件属于开 ...
- java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别
java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别 目录 java基础解析系列(一)---String.StringBuffer.St ...
- CSS 魔法系列:纯 CSS 绘制各种图形《系列五》
我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...
- Netty4.x中文教程系列(五)编解码器Codec
Netty4.x中文教程系列(五)编解码器Codec 上一篇文章详细解释了ChannelHandler的相关构架设计,版本和设计逻辑变更等等. 这篇文章主要在于讲述Handler里面的Codec,也就 ...
- WCF编程系列(五)元数据
WCF编程系列(五)元数据 示例一中我们使用了scvutil命令自动生成了服务的客户端代理类: svcutil http://localhost:8000/?wsdl /o:FirstServic ...
- JVM系列五:JVM监测&工具
JVM系列五:JVM监测&工具[整理中] http://www.cnblogs.com/redcreen/archive/2011/05/09/2040977.html 前几篇篇文章介绍了介 ...
- SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型
原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...
- VSTO之旅系列(五):创建Outlook解决方案
原文:VSTO之旅系列(五):创建Outlook解决方案 本专题概要 引言 Outlook对象模型 自定义Outlook窗体 小结 一.引言 在上一个专题中,为大家简单介绍了下如何创建Word解决方案 ...
- HDFS副本放置策略和机架感知
副本放置策略 的副本放置策略的基本思想是: 第一block在复制和client哪里node于(假设client它不是群集的范围内,则这第一个node是随机选取的.当然系统会尝试不选择哪些太满或者太忙的 ...
随机推荐
- DB2数据库备份还原
恢复及备份NC DB2数据库步 一. 安装DB2数据库 解压db2v9.5ins.rar安装,在写此文档时客户一般用的是9.5: 注意不要将db2安装到系统盘: 二. Windows版本 1.数据库备 ...
- netbackup :nbu备份 Hyper-V 遇到快照错误(状态码 156)
遇到快照错误(状态码 156) 下表介绍与 NetBackup 状态码 156 有关的 Hyper-V 问题. 表:状态码 156 的可能原因 状态码 156 的原因 说明及推荐操作 NetBacku ...
- SSH框架快速搭建(Maven)
1.新建Maven项目ssh 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=& ...
- EM理解(转)
EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法.在之后的MT中的词对齐中也用到了.在Mitchell的书中也提到EM可以用于贝叶 ...
- Java不同对象之间复制属性
// 导入包import org.springframework.beans.BeanUtils; /** * 调用工具复制2个对象之间的属性 2个JavaBean对象复制的属性名相同 * @para ...
- Drupal7新装一个主题时页面白屏,如何设置一个默认主题?
问题: 请问我不小心退出登陆了 但这个主题没有登录口 而且之前不知道为什么我其他界面都不能显示内容所以 ?q=user 也不行,怎么办呢?看网上说更换默认主题 去variable表里把默认主题换了,我 ...
- js字符串的使用
Javascript的内置功能之一就是字符串连接,如果+号用于两个字符串连接 var s="hello,world" //想要查找给定位置的字符 s.cha ...
- cocoapods 类库管理利器
作为iOS开发者,第三方类库的使用是最经常的,但鉴于第三方类库的不断更新以及其可能需要依存其他类,如果要使用最新版那么我们需要重新下载再添加到项目中,无疑带来一些繁琐的麻烦,那么现在这里就有一款能解决 ...
- rem适配方案
页面布局单位计算 一般有两大类:绝对长度单位和相对长度单位 绝对长度单位: px 像素:是显示屏上显示的每一个小点,为显示的最小单位 in 英寸,1in = 96px cm 厘米,1cm = 37.8 ...
- grep过滤目录或文件方法
在使用grep在指定目录下查找包含指定字符串的文件是,我们想过滤(即不递归查询指定目录)时!可以使用 –exclude-dir 参数 单个目录实例 搜索.目录但不搜索在.目录下的.svg目录中包含&q ...