| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Hadoop纠删码(Erasure Coding)简介 -> 正文阅读 |
|
[大数据]Hadoop纠删码(Erasure Coding)简介 |
三副本机制1、什么是三副本默认情况下,HDFS会使用三副本机制来保证数据可用性,第一个副本存放在本地机架节点上,另一个副本存放在同一机架的另一个节点上,第三个副本存放在在不同机架的节点上。三副本机制可以减少机架间的数据传输,提高写操作的效率,保证数据的可用性,因为机架错误的概率要小于节点出错的概率 2、三副本带来的问题三副本会造成存储空间200%的额外开销,还会在其他资源上造成浪费,比如在写数据时会造成额外的带宽消耗。尤其对于冷数据,因为查询的频率很低,第二个和第三个副本很少被访问,却依然占用了同样大小的存储空间,在数据治理的过程中,我们需要着重关注这部分数据,能删掉的要及时下线,但对于一些必须保留却很少使用的冷数据(如某个已结束的促销活动),最好能有一种办法替代三副本,达到既能保证数据可用性,又能降低存储开销的效果。由此我们引入了 Erasure Coding(简称EC)技术。 Erasure Coding1、什么是 Erasure Coding纠删码技术(Erasure coding)简称 EC,是一种编码容错技术。最早用于通信行业,数据传输中的数据恢复。它通过对数据进行分块,然后计算出校验数据,使得各个部分的数据产生关联性。的数据产生关联性。当一部分数据块丢失时,可以通过剩余的数据块和校验块计算出丢失的数据块。 2、Erasure Coding 的原理EC 的基本思想是将k块原始的数据元素通过一定的编码计算,得到 m 块校验元素。对于这 k+m 块元素,当其中任意的 m 块元素出错(包括数据和校验出错),均可以通过对应的重构算法恢复出原来的k块数据。生成校验的过程被成为编码(encoding),恢复丢失数据块的过程被称为解码(decoding)。 目前 HDFS 中内置的 EC 编解码算法有以下三种:
HDFS 的内置 EC 策略有以下几种:
以 RS-6-3-1024k 为例解释下该 EC 策略的定义:
因为实际生产中几乎不会用到 RS-LEGACY,因此这里只介绍 XOR 算法和 RS 算法。 1)XOR码XOR 编解码是 EC 算法的最简单实现。XOR 代表异或运算,异或运算的一个特点就是:如果对一个值连续做两次 XOR,会返回这个值本身。以下图为例:
但 XOR 码的弊端也很明显,当丢失的数据超过一位时,如数据 X 和数据 Y 的第一位都丢失,则无法进行还原(因为无法确定 X 和 Y 是都为 0 还是都为 1)。 由此可见,XOR 码适合 可保证错误数较少的场景,但实际生产中并不能保证每次只有一个数据出错,要考虑多个数据丢失的情况,要尽量提高容错率,因此还要了解第二种编解码方法——RS码。 2)RS码RS 码全名为 Reed-Solomon Codes,中文名称里德所罗门码。RS 码通过线性代数计算生成多个奇偶校验块,因此可以承受数据多处出错,所以生产上我们一般都是用 RS 码。
RS(k,m)通过将 k 个数据块的向量与生成矩阵(GT)相乘来实现,相乘得到一个码字(codeword)向量,码字向量由 k 个数据块和 m 个校验块构成,如下图所示,即为 RS(4,2) 如果某个数据块丢失,可以用生成矩阵(GT)的逆矩阵乘以码字向量来还原出丢失的数据,**RS(k,m)https://img-blog.csdnimg.cn如果某个数据块丢失,可以用生成矩阵(GT)的逆矩阵乘以码字向量来还原出丢失的数据,RS(k,m)]最多可容忍 m 个块(包括数据块和校验块)丢失。 举个例子: 1、 假设现在有三个数据块组成一个向量,如下图所示: 在 RS 算法中,通过设置 k 和 m 的值,可以灵活调整 RS 算法下的数据持久性和存储效率,m 代表可以容忍的同时发生的故障数,k / (k+m) 代表了当前的存储效率。 HDFS 中的 RS-6-3-1024k、RS-10-4-1024k 和三副本相比,既可以同时容忍 3~4 个故障,又能大大降低存储开销,下图展示了 0 副本、3 副本、XOR、RS 算法的存储效率: 3、EC在 Hadoop 上的实现传统模式下,HDFS中的文件是由一个个块(block)组成,而在 EC 模式下,文件的组成单位变成了 block group,以 RS(10,4) 为例,一个 block group 包含了 10 个数据块,4个校验块。而 EC 模式下这些数据在 HDFS 上有着两种布局方式。 连续布局文件数据被依次写入块中,一个块写满之后再写入下一个块,这种分布方式称为连续布局。如下图所示: 优点:
缺点: 因此,只有在我们确定文件非常大,能连续、完整的写入多个数据块时,才能达到节省存储的效果。 条形布局条(stripe)是由若干个相同大小的单元(cell)构成的序列。文件数据被依次写入条的各个单元中,当一个条写满之后再写入下一个条,一个条的不同单元位于不同的数据块中。这种分布方式称为条形布局。条形布局如下图所示: 条形布局的优缺点正好与连续布局相反
缺点: 3 总结EC 虽然存在着与三副本转化麻烦、会增大 CPU 及网络开销等问题,但当数仓中存在大量冷数据时,EC 仍然是一种数据治理的高效手段,能大大降低集群的存储消耗同时保证数据的可靠性,在我们的生产实践中,EC 为我们带来了巨大的收益。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:33:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |