hadoop2.0 副本冗余策略和hadoop3.0 纠删码技术

hadoop2.0采用副本冗余(一般是3副本)策略而hadoop3.0引入了纠删码技术,现在就来分析两者的差别。
hadoop2.0 副本冗余策略和hadoop3.0 纠删码技术_第1张图片
hadoop1.0和hadoop2.0采用的是副本冗余策略存储文件,其中写(上传)流程如下:
hadoop2.0 副本冗余策略和hadoop3.0 纠删码技术_第2张图片
1、客户端client调用create函数创建文件;2、DistributedFileSystem用RPC调用元数据节点,在文件系统的命名空间中创建一个新的文件;3、元数据节点首先确定文件是否存在,并且客户端是否有创建文件的权限,然后创建新文件;4、DistributedFileSystem返回FSDataOutputStream给客户端用于写数据;5、客户端开始写入数据,FSDataOutputStream将数据分成块,写入data queue;6、Data queue由DataStreamer读取,并通知元数据节点分配数据节点,用来存储数据块(每块默认复制3块),分配的数据节点放在一个pipeline里;7、DataStreamer将数据块写入pipeline中的第一个数据节点,第一个数据节点将数据块发送给第二个数据节点,第二个数据节点将数据发送给第三个数据节点;8、FSDataOutputStream为发出去的数据块保存了ack queue,等待pipeline中的数据节点告知数据已经写入成功;9、如果数据节点在写入的过程中失败,则进行以下几个操作:一是关闭pipeline并将ack queue中的数据块放入data queue的开始;二是当前数据块在已写入的数据节点中被元数据节点赋予新的标示,错误节点重启后察觉其数据块过时而被删除;三是失败的数据节点从pipeline中移除,另外的数据块则写入pipeline中的另外两个数据节点;四是元数据节点被通知此数据块的复制块数不足,从而再创建第三份备份;10、当客户端结束写入数据,则调用close函数将所有的数据块写入pipeline中的数据节点,并等待ack queue返回成功,最后通知元数据节点写入完毕。

二、纠删码
1、什么是纠删码呢?
在编码理论里,有一种前向纠错(FEC)编码方式,也称为纠删码。
这种技术可以将原始数据中丢失的k字节数据从n个含编码字节的信息中进行恢复。
在纠删码技术中,Reed-Solomon(里所码)码是一种常见的纠删码。
2、纠删码的应用
对于在分布式环境下数据存储的可靠性保证,有两种策略:
1)引入副本冗余机制策略
2)利用纠删码技术,相比于副本策略,纠删码技术可以节省更多磁盘的空间。即有更高的磁盘利用率
拿Hadoop的HDFS来说,策略一般是三副本,当某个副本丢失时,可以通过其他副本复制回来。所以在这种情况下,Hadoop集群的磁盘利用率为1/3。而如果使用纠删码技术后,可以提高磁盘的利用率。
3、两种冗余技术对比如下:
hadoop2.0 副本冗余策略和hadoop3.0 纠删码技术_第3张图片

你可能感兴趣的:(hadoop,大数据,理论)