RS(纠删码)技术浅析及Python实现
前言
在Ceph和RAID存储领域,RS纠删码扮演着重要的角色,纠删码是经典的时间换空间的案例,通过更多的CPU计算,降低低频存储数据的存储空间占用。
纠删码原理
纠删码基于范德蒙德矩阵实现,核心公式如下所示(AD=E)
假设某些数据丢失,右式部分行丢失,变成E’,则左式也相应去掉对应行,变成A’。
函数Inverse[A′]Inverse[A′]代表A’的逆矩阵,I代表单位矩阵
Python实现
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import numpy as np# 备份数量
backup_up = 2
# 原始数据
data = np.array([1, 0, 0, 8, 6])
# 根据纠删码原理生成的数据
vander_data = np.concatenate((np.identity(len(data)), np.vander(data, 3).transpose()[::-1]), axis=0)
storage_data = vander_data.dot(data)
print('生成数据',storage_data)
# 模拟数据丢失
loss_data = np.concatenate((storage_data[0:3], storage_data[5:7]), axis=0)
print('丢失后数据', loss_data)
# 恢复数据
recover_data = np.linalg.inv(np.concatenate((vander_data[0:3], vander_data[5:7]), axis=0)).dot(loss_data)
print('恢复数据',recover_data)
基于Python的Numpy库可以很容易地模拟纠删码数据恢复的流程。效果如下所示
伽罗华域优化
实际上,上述的Python代码只是纠删码的最基础版本,可以发现校验数据大于原始数据,这样就导致校验数据需要更多的存储位,并没有很好的优化存储空间。
在现实场景中,纠删码一般通过自定义的伽罗华域进行运算,保证位数在一定范围内。伽罗华域GF(2w)代表所有运算结果只能在[0,2w)之间。
伽罗华域的加法和减法为异或运算,乘法和除法需要基于生成多项式计算出gfilog表。GF(24)的gfilog表如下所示。
以8*9为例,计算过程如下所示,需要注意如果值大于2w,需要模2w。
更多优化
范德蒙德矩阵求逆矩阵的时间复杂度为O(N3),柯西矩阵求逆矩阵的时间复杂度为O(N2),因此可以采用柯西矩阵替代范德蒙德矩阵用于编码运算。
RS(纠删码)技术浅析及Python实现相关推荐
- RS 纠删码为什么可以提高分布式存储可靠性?| 原力计划
作者 | .NY&XX 来源 | CSDN博客专家,责编 | 夕颜 封图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 前言 Erasure Code(EC),即 ...
- 全网最新最全的 HDFS 文件纠删码技术分析
前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...
- Hadoop 3.0 纠删码技术分析(Erasure Coding)
背景 随着大数据技术的发展,HDFS作为Hadoop的核心模块之一得到了广泛的应用.为了数据的可靠性,HDFS通过多副本机制来保证.在HDFS中的每一份数据都有两个副本,1TB的原始数据需要占用3TB ...
- 【海云捷迅云课堂】分布式存储系统纠删码技术分享
云课堂专题 海云捷迅云课堂专题,旨在秉承开源理念,为大家提供OpenStack技术原理与实践经验,该专题文章均由海云捷迅工程师理论与实践相结合总结而成,如大家有其他想要了解的信息,可留言给我们,我们会 ...
- 【hadoop】纠删码技术详解
1 纠删码背景 随着大数据技术的发展,HDFS作为Hadoop的核心模块之一得到了广泛的应用.为了数据的可靠性,HDFS通过多副本机制来保证.在HDFS中的每一份数据都有两个副本,1TB的原始数据需要 ...
- fabric通过java怎么整合RS纠删码的实现
fabric是一个分布式账本平台,它提供了一种简单的方式来构建区块链应用程序.如果想要在fabric中使用RS纠删码,可以按照以下步骤进行整合: 首先,需要在fabric中定义一个新的链码(chain ...
- go分布式存储,rs纠删码
rs.txt 内容 AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDSDG 分片和解码 ...
- 分布式系统下的纠删码技术(一) -- Erasure Code (EC)
近几个月主要参与一个分布式存储系统的纠删码部分(用于数据容错),纠删码在学术界出现比较早,现在ceph,微软的存储系统,Hadoop 3.0等都用了EC.文章会分为多篇,主要将Erasure Code ...
- 信道编码之纠删码编码
简介 随着数据的存储呈现出集中化(以分布式存储系统为基础的云存储系统)和移动化(互联网移动终端)的趋势,数据可靠性愈发引起大家的重视.集群所承载的数据量大大上升,但存储介质本身的可靠性进步却很小,这要 ...
最新文章
- 照葫芦画瓢-python editors(编辑器 IDE)
- 代码分析 公用类库
- [Student.Achieve] 学生教务管理系统开源
- 怎样在linux系统上安装r,Linux系统之路——如何在CentOS7.2安装R(示例代码)
- 学习推荐《精通Python网络爬虫:核心技术、框架与项目实战》中文PDF+源代码
- jeecg开源项目的IDEA的部署
- 一个c++程序员一年前的生活笔记
- 为什么nodejs是单进程的_Nodejs探秘:深入理解单线程实现高并发原理
- 解决mysql从windows迁移到centos出现乱码问题
- 正则表达式 IP域名
- 工资10000元,应该交多少税?
- 2013年第一季度中国移动互联网应用安全检测与分析报告
- dex2jar官网和jdgui官网链接
- Navicat premium11 一键破解 无需注册码
- Spring boot yml的格式
- 回溯法中解空间树的组织
- vue解决Not allowed to load local resource
- unity实现简单的地图编辑器,实现跑酷地图编辑器 2d地图编辑器,导出地图json数据,导入地图json数据
- 怎么更改Visual Studio项目名字
- 【笔记】SSH服务:基本概述、相关命令“ssh、scp、sftp”、验证方式、场景实践、安全优化