9 DataNodes are required for the erasure coding policies: RS-6-3-1024k

CDH6.2.1版本的集群:

172.30.81.203 manager
172.30.81.204 node1
172.30.81.205 node2
172.30.81.206 node3

存在隐患:9 DataNodes are required for the erasure coding policies: RS-6-3-1024k.The number of DataNodes is only 3.

解决方案

使用RS-6-3-1024k编码纠删码策略至少需要9个DataNodes,当前只安装了3个,所以再增加6个DataNodes节点即可解决该问题。
修改编码纠删码策略同样也可以解决,不过会比较麻烦

补充:

纠删码基本操作
1. 查看当前支持的纠删码策略

命令如下

hdfs ec -listPolicies

查看Hadoop版本命令:

hadoop version

目前hadoop-3.0.0beta1共支持5种纠删码策略,分别是:

RS-10-4-1024k:使用RS编码,每10个数据单元(cell),生成4个校验单元,共14个单元,也就是说:这14个单元中,只要有任意的10个单元存在(不管是数据单元还是校验单元,只要总数=10),就可以得到原始数据。每个单元的大小是1024k=1024*1024=1048576。

RS-3-2-1024k:使用RS编码,每3个数据单元,生成2个校验单元,共5个单元,也就是说:这5个单元中,只要有任意的3个单元存在(不管是数据单元还是校验单元,只要总数=3),就可以得到原始数据。每个单元的大小是1024k=1024*1024=1048576。

RS-6-3-1024k:使用RS编码,每6个数据单元,生成3个校验单元,共9个单元,也就是说:这9个单元中,只要有任意的6个单元存在(不管是数据单元还是校验单元,只要总数=6),就可以得到原始数据。每个单元的大小是1024k=1024*1024=1048576。

RS-LEGACY-6-3-1024k:策略和上面的RS-6-3-1024k一样,只是编码的算法用的是rs-legacy,应该是之前遗留的rs算法。

XOR-2-1-1024k:使用XOR编码(速度比RS编码快),每2个数据单元,生成1个校验单元,共3个单元,也就是说:这3个单元中,只要有任意的2个单元存在(不管是数据单元还是校验单元,只要总数=2),就可以得到原始数据。每个单元的大小是1024k=1024*1024=1048576。

以RS-6-3-1024k为例,6个数据单元+3个校验单元,可以容忍任意的3个单元丢失,冗余的数据是50%。而采用副本方式,3个副本,冗余200%,却还不能容忍任意的3个单元丢失。因此,RS编码在相同冗余度的情况下,会大大提升数据的可用性,而在相同可用性的情况下,会大大节省冗余空间。

2. 设置纠删码策略

纠删码策略是与具体的路径(path)相关联的。也就是说,如果我们要使用纠删码,则要给一个具体的路径设置纠删码策略,后续,所有往此目录下存储的文件,都会执行此策略。

例子如下

首先在/下创建目录rs-6-3,然后查看其是否设置了纠删码策略,结果显示没有指定策略(新建的目录不会指定策略)

[root@manager ~]# hdfs dfs -mkdir /rs-6-3

[root@manager ~]# hdfs ec -getPolicy -path /rs-6-3

The erasure coding policy of /rs-6-3 is unspecified

接下来,给此目录设置纠删码策略RS-6-3-1024k,此策略名是从前面list策略中查到的。可以看到已经设置成功。

[root@manager ~]# hdfs ec -setPolicy -path /rs-6-3 -policy RS-6-3-1024k

Set erasure coding policy RS-6-3-1024k on /rs-6-3

注意:

RS-6-3-1024k可以直接设置成功,其它的策略需要enable后,才能设置:

设置RS-3-2-1024k,这个需要先enablePolicy

[root@manager ~]# hdfs ec -enablePolicy  -policy RS-3-2-1024k
Erasure coding policy RS-3-2-1024k is enabled
[root@manager ~]# hdfs ec -setPolicy -path /rs-3-2 -policy RS-3-2-1024k
Set erasure coding policy RS-3-2-1024k on /rs-3-2

验证

[root@manager ~]# hdfs ec -getPolicy -path /rs-3-2
RS-3-2-1024k

设置RS-10-4-1024k,如果不enablePolicy,会报错

[root@manager ~]# hdfs dfs -mkdir /rs-10-4
[root@manager ~]# hdfs ec -setPolicy -path /rs-10-4 -policy RS-10-4-1024k

报错:

RemoteException: Policy 'RS-10-4-1024k' does not match any enabled erasure coding policies: [RS-3-2-1024k, RS-6-3-1024k]. An erasure coding policy can be enabled by enableErasureCodingPolicy API.

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AllenGd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值