Hadoop容错恢复之纠删码

news/2024/5/20 3:09:22 标签: HDFS, Hadoop, Hadoop容错机制, 纠删码

HDFS中常见的容错恢复是副本机制,它会在部分文件丢失之后通过心跳机制发数据给NameNode然后寻找未丢失的副本,按照replication进行备份。这样的话会保证数据在绝大多数情况下不丢失。但是造成的问题就是这种机制使得Hadoop的空间利用率会很低。比如说在一个备份数量为3的情况下空间利用率仅为1/3,而从空间利用率这个维度来看的话用于容错恢复的纠删码机制表现的不错。

在这里我斗胆说一句纠删码基于信息论中的互信息,就是一个不知道的信息可以由其它和它相关的信息所推算出来。以下是叶老师(叶尚青)的例子:

在①丢失的情况下能够通过④⑤⑥推导出来(或者是②③④亦或是②③⑤⑥)。但是关键的信息都丢掉了的话比如说丢失其中的两个方程与两个值这时候就无法挽救了但是这种概率是非常低的。实务上纠删码是非常厉害的。

实务上里索码是纠删码思想的一种实现,在HDFS中会用主要的硬盘资源存储实际的数据,而使用少数的机器去存储数据之间的依赖关系如下图所示:

整个纠删码的使用包括编码和解码:

编码阶段让n个不同的数据块与m个数据校验块组成一个(n + m) * n的矩阵,然后再乘以原始数据组成的一个矩阵进而得到一个新的矩阵。这个过程称为编码如下图所示:

如果数据丢失了一些这时就需要通过已有的信息去解码,进而推算出丢失的信息也就是下图书中D矩阵的信息。我们首先得到出当前数据单位矩阵与校验块组成的矩阵B。然后计算这个矩阵的逆矩阵B-1 。然后通过B-1 * B * D = B-1 * Survivors 得到矩阵D(左边就只剩下单位矩阵与D矩阵的乘积)。计算的过程如下图所示:

这样就顺利的解出丢失的数据了。

在数据量较大状态下纠删码机制可以将磁盘的利用率收敛于100%,但是它的容错恢复会带来大量的计算这样会使得读写数据的效率低下。


http://www.niftyadmin.cn/n/988644.html

相关文章

不间断滚动 不间断跑马灯效果 比marquee连续

<div idmaq styleoverflow:hidden;height:100px;width:150px;><div idmtext>1.文字也是可以连续滚动的<br>2.文字也是可以连续滚动的<br>3.文字也是可以连续滚动的<br>4.文字也是可以连续滚动的<br>5.文字也是可以连续滚动的<br>6.文…

HBase基本原理

HBase概述 HBase是一款基于HDFS做存储的&#xff0c;Zookeeper做调度的能够存储半结构化与非结构化数据的数据库。它不同于Hive它是一个真正的数据库产品&#xff0c;它的内部基于顺序IO与内存读写&#xff0c;能够非常高效的实现数据的增删改查。 HBase的总体架构 …

mysql主从复制配置 工作原理

目录 MySQL主从复制的基本工作原理复制模式复制如何工作主从复制配置创建账号配置主库和从库启动复制扩展-配置GTID主从复制参考MySQL主从复制的基本工作原理 MySQL支持两种复制方法&#xff1a;基于语句的复制&#xff08;from Version3.23&#xff09;和基于行的复制&#xf…

2019.01.27-bzoj1010: [HNOI2008]玩具装箱toy

题目描述&#xff1a; P教授要去看奥运&#xff0c;但是他舍不下他的玩具&#xff0c;于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压缩&#xff0c;其可以将任意物品变成一堆&#xff0c;再放到一种特殊的一维容器中。P教授有编号为1...N的N件玩具&#xff0c;第i…

At.js – 用于 Web 应用程序的自动完成库

At.js 是一个自动完成库&#xff0c;用来实现自动完成提示&#xff0c;表情等&#xff0c;就像你在 Github 或 Twitter 上看到的一样。它支持 HTML5 contentEditable 元素。你可以听任何字符&#xff0c;而不仅仅是 符号&#xff0c;可为不同的字符设置多个监听器以实现不同的…

Cisco认证考试中几个ID号码的含义和作用

Cisco认证注册和考试后几个ID号码的含义和作用是什么&#xff1f;Cisco ID&#xff0c;Testing ID&#xff0c;Candidate ID&#xff0c;Registration ID&#xff0c;Validation ID的区别是什么&#xff1f;Cisco IDCisco ID是Cisco公司在考生完成第一次考试后生成的号码&#…

大数据开发实习面试经验

笔者的面经在牛客网上&#xff1a; https://www.nowcoder.com/discuss/146733?toCommentId2427869 在这里只是作为一个过来人做一个自己准备面试的过程&#xff0c;大家都可以比我做的更好。&#xff08;注&#xff1a;由于笔者没有进行很多的面试所以总结难免有过拟合的现象…

NodeJs 使用 multer 实现文件上传

Multer 是一个 node.js 中间件&#xff0c;用于处理 multipart/form-data 类型的表单数据&#xff0c;它主要用于上传文件 注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据 使用方法&#xff1a; 安装 Multer npm install multer --save 安装 uuid &#xff…