副本放置策略Copysets论文解读及工程实践

  • 概述
  • CopySet论文解读
    • 术语定义
    • Random Replication
    • Copyset Replication
      • Premutation
      • Replication
  • 工程实践
  • 参考链接

概述

分布式存储追求在系统成本允许的范围内(一般存储集群都是三副本,还想方设法的使用条带化、压缩等方式降低成本),降低数据丢失的概率,降低故障恢复的时间。好的副本放置策略可以优化整个集群的可用性和一致性。

斯坦福大学曾经出过一篇论文,Copysets: Reducing the Frequency of Data Loss in Cloud Storage,讲解了随机放置副本的问题,提出了copyset副本放置策略。这对很多分布式系统都有借鉴意义。

CopySet论文解读

本文出现以前,工业界的分布(包括HDFS、GFS、Azure Storage)经常使用随机副本放置(rack不同),但这种方式丢数据的概率也较大。作者提出使用CopySet放置副本,在5000个节点的RAMCloud集群中,将1%节点故障情况下集群丢数据的概率从之前的99.99%降低到0.15%。

术语定义

  • R:数据的副本数量
  • N:存储节点的数量
  • S:Scatter width,如果急群中某个存储节点故障,S个其他存储节点能参与到集群的修复中。显然,这个值越大,故障恢复时间就越短。(Ceph集群中S==N
  • copyset:存储某个数据(GFS中的chunk)的所有存储节点
  • permutation:存储节点的某种排列方式,例如,N=7可以分解为形如{4, 1, 3, 6, 2, 7 ,5}的premutation

Random Replication

系统对于每一份数据(存储数据的最小单位,例如GFS中的chunk,WAS中的extent),随机选出R个不同的存储节点复制数据。当然,这其中选择也是有一定技巧的,这些副本不能在同一个故障域(failure domain,如,不同的机架rack、交换机)中。

这种副本架构的工程实践中,丢数据的概率还是挺大的,根据作者的计算,在上千存储节点的分布式系统中吗,当1%的存储节点同时发生故障,三副本的RamCloud有99.99%的概率丢数据,FaceBook HDFS有22.8%的概率丢数据。

Copyset Replication

Copyset Replication分为两个阶段,Premutation和Replication,相比之前的随机策略,这种方式可以在缩短故障恢复时间的基础上降低丢数据的概率(副本分布较均匀)。

Premutation

系统根据R、N,划分出不同的copyset。每轮划分出N/R个copyset。每次确保其中的copyset不与当前和之前所有轮次中已经产生的copyset相同,同时需要考虑failure domain的限制。由于每个存储节点都会分布在每轮的copyset中,因此每轮premutation都可以增大集群的Scatter Width

Replication

集群根据Premutation选出的replica,寻找合适的copyset放置数据。某一个node可以选择多个relica

工程实践

根据上述的描述,一个简单的生成副本位置的算法如下:

  1. 根据系统的R、N,排列组合生成所有的copyset,共有CNRC_N^RCNR​个copyset
  2. 根据系统failure domain,排除不符合规则的copyset。
  3. 系统使用可用的copyset,构成存储系统的副本架构。

假设在实际工程中故障域只有rack限制,那么算法可以简化为:

假设有三个rack:A、B、C,每个rack有四个存储节点A:{1, 2, 3, 4}, B:{5, 6, 7, 8}, C:{9, 10, 11, 12},集群R=3

  1. 以每个rack的存储节点交错的形式,组成Premutation:{1, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8, 12}
  2. 以R为滑动窗口,顺序遍历整个Premutation,生成copyset:{1, 5, 9}, {5, 9, 2}, {9, 2, 6}...
  3. 这种方式生成的copyset可以满足故障域要求,并且副本分布均匀。

参考链接

  1. Copysets: Reducing the Frequency of Data Loss in Cloud Storage论文
  2. Data Availability and Durability with the Hadoop Distributed File System
  3. 副本放置&Copyset Replication

副本放置策略Copysets论文解读及工程实践相关推荐

  1. HDFS副本放置策略和机架感知

    副本放置策略 的副本放置策略的基本思想是: 第一block在复制和client哪里node于(假设client它不是群集的范围内,则这第一个node是随机选取的.当然系统会尝试不选择哪些太满或者太忙的 ...

  2. HDFS详解(架构设计、副本放置策略、读写流程、进程、常用命令等)

    前言:当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(Partition)并存储到若干台单独的计算机上.管理网络中跨多台计算机存储的文件系统成为分布式文件系统(distrib ...

  3. SDM原理解读与工程实践

    SDM原理解读与工程实践 本文主要介绍的是阿里在召回阶段使用的深度召回模型SDM,paper名称为<SDM: Sequential Deep Matching Model for Online ...

  4. DSSM原理解读与工程实践

    推荐算法实践 DSSM原理解读与工程实践 一.原理 DSSM(Deep Structured Semantic Model),由微软研究院提出,利用深度神经网络将文本表示为低维度的向量,应用于文本相似 ...

  5. Block的副本放置策略

    服务器有:塔式.机架.刀片3种. Block块的N个副本的放置策略: 第一个副本放置:如果在集群内上传1T文件,就放置在该DN上.如果在集群外上传,则找一个磁盘空间足够.CPU够用的节点. 第二个副本 ...

  6. HDFS副本放置策略

    1.第一个副本放置在上传文件的DataNode上,如果是集群外提交,则随机挑选一个磁盘不太满,CPU不太忙的节点. 2.第二个副本放置在与第一个副本不同的机架上. 3.第三个副本放置在与第二个副本同机 ...

  7. Video Object Segmentation with Adaptive Feature Bank and Uncertain-Region Refinement论文解读和代码实践

    NeurPIS2020的论文 官方代码 基础的框架采用STM,但是提出了自适应调整memory bank和一种新颖的refinement操作. Motivation STM是目前半监督VOS方向的SO ...

  8. 【天光学术】网络工程论文:网络工程实践中安全技术的应用(节选)

    摘要:随着我国经济的不断发展,信息化已经深入到我国各个领域.而网络信息技术的使用,改变了传统的信息交流方式,给人们的工作与生活带来了极大的便捷,其重要性不断提高.尤其是近年来,信息技术已经深入到经济发 ...

  9. Hadoop 副本存储策略的源码修改和设置

    Table of Contents BlockPlacementPolicy Hadoop 提供的 BlockPlacementPolicy 实现 BlockPlacementPolicyDefaul ...

最新文章

  1. 计算机应用为什么要学机械制图,机械制图为什么这么难学?
  2. mybatis中传入String类型参数的问题
  3. assert()函数_【工程师分享】避免Xil_Assert系列宏导致的死循环
  4. asp.net环境下的静态类以及静态变量
  5. 另一种Background job的 debug方法
  6. canvas图形编辑器
  7. 如何提升软件交付效能?答案未必如你所想
  8. 一句话解释什么是回归
  9. 前端与移动开发乐淘项目-day02
  10. python---python3 获取当前路径及os.path.dirname的使用;os.path.abspath(__file__)用法及意义
  11. 用git push代码到远程仓库的时候出现错误
  12. 类别不平衡学习的常用策略
  13. SQL入门:第一章 建立自己的数据库
  14. (附源码)计算机毕业设计ssm宠物管理系统
  15. 怎样用java抽签小程序,可以作弊的抽签小程序,急求java抽签小程序
  16. 复合函数高阶求导公式_复合函数求导公式有哪些
  17. 自制hdmi线一头改vga图_什么是VGA?
  18. Fast Deep Matting for Portrait Animation on Mobile Phone
  19. 密码爆破工具——九头蛇(hydra)
  20. 微信朋友圈附近推效果怎么样?

热门文章

  1. git 删除本地仓库中的分支_本地 Git 仓库与 GitHub 关联
  2. 个人常用Sublime Text 插件
  3. POJ3608(旋转卡壳--求两凸包的最近点对距离)
  4. 第一次使用OD和IDA动静结合找出软件的注册算法
  5. cocos2d-x游戏实例(9)-A星算法(5)
  6. linux常见问题及其解决方案集锦
  7. epoll背后的原理
  8. 五分钟快速理解 Reactor 模型
  9. 工具类用得好,下班下的早
  10. 力扣--统计全1子矩阵