Hadoop3.2.4纠删码基础操作(二)

耀灵5个月前技术文章129


1、纠删码基础操作

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

1.首先我们在HDFS中建立一个目录。

1.png

2.使用命令获取该目录的纠删码策略,提示未指定,说明新建目录不会被默认增加纠删码策略属性。

[root@hd2 hadoop]# hdfs ec -getPolicy -path /ec_xor

2.png

3.我们先启用XOR-2-1-1024k策略。

[root@hd2 hadoop]# hdfs ec -enablePolicy -policy XOR-2-1-1024k
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop-3.2.4/share/hadoop/common/lib/slf4j-reload4j-1.7.35.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-tez-0.10.2-bin/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Reload4jLoggerFactory]
Erasure coding policy XOR-2-1-1024k is enabled

3.png



4.给目录设置纠删码策略

[root@hd2 hadoop]# hdfs ec -setPolicy -path /ec_xor -policy XOR-2-1-1024k
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop-3.2.4/share/hadoop/common/lib/slf4j-reload4j-1.7.35.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-tez-0.10.2-bin/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Reload4jLoggerFactory]
Set XOR-2-1-1024k erasure coding policy on /ec_xor
[root@hd2 hadoop]#

4.png

[root@hd2 hadoop]# hdfs ec -getPolicy -path /ec_xor

5.png

5.这里再测试一下给目录设置另外一些没启用的纠删码策略

[root@hd2 hadoop]# hdfs ec -setPolicy -path /ec_xor -policy RS-10-4-1024k
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop-3.2.4/share/hadoop/common/lib/slf4j-reload4j-1.7.35.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-tez-0.10.2-bin/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Reload4jLoggerFactory]
RemoteException: Policy 'RS-10-4-1024k' does not match any enabled erasure coding policies: [RS-3-2-1024k, XOR-2-1-1024k]. An erasure coding policy can be enabled by enableErasureCodingPolicy API.

6.png

报错,说明在使用某个纠删码策略是,需要先启用。

6.我们启用策略RS-6-3-1024k,然后再给/ec_xor目录set策略。同时往这个目录写入数据。

[root@hd2 hadoop]# hdfs ec -enablePolicy -policy RS-6-3-1024k
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop-3.2.4/share/hadoop/common/lib/slf4j-reload4j-1.7.35.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-tez-0.10.2-bin/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Reload4jLoggerFactory]
Erasure coding policy RS-6-3-1024k is enabled

7.png

[root@hd2 hadoop]# hdfs ec -setPolicy -path /ec_xor -policy RS-6-3-1024k
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop-3.2.4/share/hadoop/common/lib/slf4j-reload4j-1.7.35.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-tez-0.10.2-bin/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Reload4jLoggerFactory]
Set RS-6-3-1024k erasure coding policy on /ec_xor

8.png

[root@hd2 mnt]# hadoop fs -put ec_test.txt /ec_xor
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop-3.2.4/share/hadoop/common/lib/slf4j-reload4j-1.7.35.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-tez-0.10.2-bin/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Reload4jLoggerFactory]
put: File /ec_xor/ec_test.txt._COPYING_ could only be written to 3 of the 6 required nodes for RS-6-3-1024k. There are 3 datanode(s) running and 3 node(s) are excluded in this operation.
[root@hd2 mnt]#

9.png

发现启用纠删码策略,设置目录策略都可以成功,但是在往目录丢数据的时候会报错,这是因为RS(6,3)策略需要6份原始数据,3份校验校验,至少需要9台DataNode,但是测试环境只有3个数据节点。所以接下来会基于XOR-2-1-1024k策略来进行实操,因为XOR(2,1)只需要2份原始数据,1份校验数据,3台DataNode可以进行操作。


相关文章

Linux进程管理详解

Linux进程管理详解

1 进程分类系统进程可以执行内存资源分配和进程切换等管理工作,而且该进程的运行不受用户的干预,即使是root用户也不能干预系统进程的运行。用户进程通过执行用户程序、应用程序或内核之外的系统程序而产生的...

.gitlab-ci.yml 语法

.gitlab-ci.yml 语法

介绍管道配置从作业(job)开始, 作业是 .gitlab-ci.yml 文件的最基本元素。job是:定义了约束,指出应在什么条件下执行具有任意名称的顶级元素,并且必须至少包含 script 子句不限...

rabbitmq-监控告警

rabbitmq-监控告警

插件安装rabbitmq_prometheus这个插件包含在RabbitMQ3.9.x版本中。与所有的插件一样,必须启用它才能使用;在node1,node2,node3 三台机器上执行如下命令:rab...

借助cwRsync工具迁移

借助cwRsync工具迁移

服务端安装服务端软件如下,会自动在系统内创建一个系统用户,用户名为:xxx  ,密码为:xxx查看系统用户,会发现自动创建了如下用户:修改配置文件:rsyncd.confuse chroot = fa...

副本集的管理(二)

五、用户管理MongoDB默认是不开启用户认证模式的,但是为了数据库的安全和管理,我们需要开启用户认证。数据库用户角色:read、readWrite; 数据库管理角色:dbAdmin、dbOwner...

Hbase&Hive区别对比

Hbase和Hive定义区别Hbase,其实是Hadoop database的简称,是一种NoSQL数据库,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为等。Hiv...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。