背景

随着大数据技术的发展,HDFS作为Hadoop的核心模块之一得到了广泛的应用。为了数据的可靠性,HDFS通过多副本机制来保证。在HDFS中的每一份数据都有两个副本,1TB的原始数据需要占用3TB的磁盘空间,存储利用率只有1/3。而且系统中大部分是使用频率非常低的冷数据,却和热数据一样存储3个副本,给存储空间和网络带宽带来了很大的压力。因此,在保证可靠性的前提下如何提高存储利用率已成为当前HDFS面对的主要问题之一。

Hadoop 3.0 引入了纠删码技术(Erasure Coding),它可以提高50%以上的存储利用率,并且保证数据的可靠性。

纠删码技术(Erasure coding)简称EC,是一种编码容错技术。最早用于通信行业,数据传输中的数据恢复。它通过对数据进行分块,然后计算出校验数据,使得各个部分的数据产生关联性。当一部分数据块丢失时,可以通过剩余的数据块和校验块计算出丢失的数据块。

原理

Reed-Solomon(RS)码是存储系统较为常用的一种纠删码,它有两个参数k和m,记为RS(k,m)。如下图所示,k个数据块组成一个向量被乘上一个生成矩阵(Generator Matrix)GT从而得到一个码字(codeword)向量,该向量由k个数据块和m个校验块构成。如果一个数据块丢失,可以用(GT)-1乘以码字向量来恢复出丢失的数据块。RS(k,m)最多可容忍m个块(包括数据块和校验块)丢失。

比如:我们有 7、8、9 三个原始数据,通过矩阵乘法,计算出来两个校验数据 50、122。这时原始数据加上校验数据,一共五个数据:7、8、9、50、122,可以任意丢两个,然后通过算法进行恢复。

HDFS EC 方案

传统模式下HDFS中文件的基本构成单位是block,而EC模式下文件的基本构成单位是block group。以RS(3,2)为例,每个block group包含3个数据块,2个校验块。

连续布局(Contiguous Layout)

文件数据被依次写入块中,一个块写满之后再写入下一个块,这种分布方式称为连续布局。

优点:

  • 容易实现
  • 方便和多副本存储策略进行转换

缺点:

  • 需要客户端缓存足够的数据块
  • 不适合存储小文件

条形布局(Striping Layout)

条(stripe)是由若干个相同大小的单元(cell)构成的序列。文件数据被依次写入条的各个单元中,当一个条写满之后再写入下一个条,一个条的不同单元位于不同的数据块中。这种分布方式称为条形布局。

优点:

  • 客户端缓存数据较少
  • 无论文件大小都适用
    缺点:
  • 会影响一些位置敏感任务的性能,因为原先在一个节点上的块被分散到了多个不同的节点上
  • 和多副本存储策略转换比较麻烦

HDFS EC 开发计划

整个HDFS EC项目主要分为两个阶段:

1、用户可以读和写一个条形布局(Striping Layout)的文件;如果该文件的一个块丢失,后台能够检查出并恢复;如果在读的过程中发现数据丢失,能够立即解码出丢失的数据从而不影响读操作。
2、支持将一个多副本模式(HDFS原有模式)的文件转换成连续布局(Contiguous Layout),以及从连续布局转换成多副本模式。

第一阶段 HDFS-7285 已经实现,第二阶段 HDFS-8030 正在进行中。

注意

1、EC存储策略下的文件,不支持append()、hflush()、hsync()
2、不同存储策略的目录或文件,目前没有提供转换的方法。比如想把一个以RS(3,2)存储的文件,转换为RS(6,3)存储策略,或者三副本存储策略,目前并没有转换方法,但可以通过把文件复制到相应存储策略的目录来达到这个目的(比如cp、distcp)

HDFS EC 读流程分析

先看一下代码流程图

引用

http://hadoop.apache.org/docs/r3.0.0-beta1/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html
https://www.iteblog.com/archives/1684.html
http://geek.csdn.net/news/detail/77338

Hadoop 3.0 纠删码技术分析(Erasure Coding)相关推荐

  1. Hadoop 3.0纠删码简单调研

    目录: 1.  背景 2. 纠删码(Erasure Coding)介绍 3. 纠删码(Erasure Coding)原理 4. 总结 一. 背景 随着大数据技术的发展,HDFS作为Hadoop的核心模 ...

  2. 全网最新最全的 HDFS 文件纠删码技术分析

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...

  3. 【hadoop】纠删码技术详解

    1 纠删码背景 随着大数据技术的发展,HDFS作为Hadoop的核心模块之一得到了广泛的应用.为了数据的可靠性,HDFS通过多副本机制来保证.在HDFS中的每一份数据都有两个副本,1TB的原始数据需要 ...

  4. 【海云捷迅云课堂】分布式存储系统纠删码技术分享

    云课堂专题 海云捷迅云课堂专题,旨在秉承开源理念,为大家提供OpenStack技术原理与实践经验,该专题文章均由海云捷迅工程师理论与实践相结合总结而成,如大家有其他想要了解的信息,可留言给我们,我们会 ...

  5. 分布式系统下的纠删码技术(一) -- Erasure Code (EC)

    近几个月主要参与一个分布式存储系统的纠删码部分(用于数据容错),纠删码在学术界出现比较早,现在ceph,微软的存储系统,Hadoop 3.0等都用了EC.文章会分为多篇,主要将Erasure Code ...

  6. 什么是纠删码(与纠错码的区别)|纠删码与副本对比|LDPC码

    什么是纠删码(与纠错码的区别) 存储领域来看,数据冗余机制其实这几十年来没有太多进展,RAID.副本一直是当仁不让的最终选择.而近几年,尤其是规模较大的应用场景下,纠删码越来越多的出现在选择的视野范围 ...

  7. Hadoop 3.0 Erasure Coding 纠删码功能预分析

    前言 HDFS也可以支持Erasure Coding功能了,将会在Hadoop 3.0中发布,可以凭图为证: 在HDFS-7285中,实现了这个新功能.鉴于此功能还远没有到发布的阶段,可能后面此块相关 ...

  8. 纠删码项目总结(1.0)

    1. 为什么要使用纠删码? 随着数据的持续增长,在 PB 级别的数据中心,多副本技术会引入极大的存 储开销.比如,现有的分布式存储系统,如 HDFS(Hadoop distributed file s ...

  9. CubeFS存储技术揭密(1) — 纠删码引擎系统设计

    00  背景 CubeFS 3.0.0以前版本只提供多副本存储,随着数据规模持续增长,业务面临着更大的成本挑战,用户对更低成本的纠删码(ErasureCode, 下文简称EC)的需求愈加强烈:Cube ...

最新文章

  1. 震惊!ConcurrentHashMap里面也有死循环,作者留下的“彩蛋”了解一下?
  2. Delphi 原生ADO(二)
  3. php+swoole
  4. 关于 Azure SQL 数据库你不知道的 5 件事
  5. webassembly_WebAssembly的设计
  6. Enterprise Library系列文章目录
  7. 数据仓库ETL之DataX(一)简介
  8. MySQL索引类型及创建
  9. DOS下文件操作命令
  10. java并发编程实战读书笔记之FutureTask
  11. cmake practice学习记录
  12. 不要把敏感信息写在k8s的env上
  13. Python数据可视化之美
  14. 技巧|微信个性签名,汽车手动挡效果,你喜欢这样的吗?
  15. 深蓝学院视觉slam十四讲第2章作业
  16. 英语学习APP—百词斩
  17. 黑客独角兽_写作是产品设计师真正的独角兽技能
  18. Data Oriented Analysis Design
  19. nest.js实战之Filter异常处理
  20. Elastic8.2下载和安装教程

热门文章

  1. DDoS科普系列:什么是 DDoS 攻击?
  2. google chrome支持建行网银
  3. 火车票抢票软件哪个成功率高更靠谱?
  4. 高压功率放大器ATA4014VS高压功率放大器HSA42014
  5. telnet与http
  6. 2021年12月网络教育大学英语B统考题库考试真题
  7. Piwigo 一款开源的图片管理系统PHP源码
  8. 3 Win98的文件系统
  9. 智慧园区综合管理系统的实用案例分析
  10. 我的ASP.NET MVC5工程中textarea的宽度为啥最大只能280px?