Hadoop官网翻译【HDFS Erasure Coding】

目的

HDFS Datanode 3X复制使用的资源多用是200%的资源。但是一些数据的IO并不频繁。着实浪费资源。
因此,一个设置是使用EC纠删码代替复制,相同级别的容错能力,但是存储开销降到50%以下。EC不复制,所以复制因子始终是1.

背景

文件存储时,EC使用冗余的RAID实现的。HDFS的EC是通过存储数据+(一半的)奇偶校验块来实现的。从而实现减少储存间空间。

EC纠删码可能是通过将一个块分散成不同的cell来,比如说策略(3,2)是将一个块分散成3个cell,分别存储到不同的机器(机器/架上).另外2是纠删码,放到另外的地方。
如果纠删码丢失了,重新生成就可以了。
如果3个中两个块丢失了,可以通过1个块+纠删码恢复出来新的块,新的块+纠删码恢复出最后一个块,从而实现了丢失2个,也可以恢复的效果。

架构

  • NameNode扩展
    消灭存储额外信息比如说Block GroupID的内部块。
  • Client 扩展
    并行的读取所有的块,协调器负责快组的读取,新的块组的分配。如果发生故障,需要发出额外的请求来恢复。
  • DataNode扩展
    DN启动ErasureCodingWorker来进行恢复,NN检测,NN选择DN来恢复。
    DN通过源和纠删码恢复数据
  • EC策略
    定义数据和奇偶校验块数目以及奇偶校验算法。
    设置单元格大小,每个单元格是一个EC处理单位。
    支持目录级别使用复制策略

部署

集群硬件配置

CPU和网络提供了额外要求,HDFS Client和DataNode使用额外的CPU。
如果提供机架级别的容错,对机架数目有要求。默认是通过机架容错。
一些关于DN恢复的配置参数如下:

dfs.datanode.ec.reconstruction.stripedread.timeout.millis  5000ms
dfs.datanode.ec.reconstruction.stripedread.buffer.size  64k
dfs.datanode.ec.reconstruction.threads                          8
dfs.datanode.ec.reconstruction.xmits.weight 用来配置恢复任务

管理员命令

hdfs ec

  • setPolicy -path [ policy ] [-replicate]
    目录下,设置EC策略,可以强制指定该目录下采用复制策略
  • listPolicies
  • listCodecs
  • getPolicy -path
  • removePolicy -policy
  • enablePolicy -policy

还有一些其他命令,目前感觉不太需要

不足之处

不支持hflush,hsync,concat,setReplication,truncate等。

你可能感兴趣的:(Hadoop,大数据,hadoop,hdfs,大数据)