hadoop3 EC测试

只知道Hadoop 3副本容错?用这种方式给公司节省五十万硬盘成本 目录 EC的设计目标 EC背景 EC在RAID应用 EC与HDFS EC在Hadoop架构的调整 NameNode元数据存储 Client DataNode EC存储方案 EC编码和解码 容错性和存储效率 连续存储还是条纹单元存储 EC策略关键属性 EC策略命名 online-EC 自定义EC策略 XOR算法与RS算法 部署HDFS EC 集群配置要求 EC配置 EC命令 验证测试 新上传一个293M的文件到冷数据目录 使用distcp迁移数据 基于H. 阅读详情

ec有关的全部命令:

 hdfs ec [通用选项]
     [-setPolicy -path <path> [-policy <policyName>] [-replicate]]
     [-getPolicy -path <path>]
     [-unsetPolicy -path <path>]
     [-listPolicies]
     [-addPolicies -policyFile <file>]
     [-listCodecs]
     [-enablePolicy -policy <policyName>]
     [-disablePolicy -policy <policyName>]
     [-help [cmd ...]]

由于编码出来的数据,要分布到多台datanode上,例如rs-6-3-1024K,就需要至少6+3=9台datanode。所以一般要有对应数量的dn。

1.查看当前支持的纠删码策略

命令如下

hdfs ec -listPolicies
[hadoop@hadoop-master1 shellUtils]$ hdfs ec -listPolicies
2019-06-28 20:10:52,329 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Erasure Coding Policies:
ErasureCodingPolicy=[Name=RS-10-4-1024k, Schema=[ECSchema=[Codec=rs, numDataUnits=10, numParityUnits=4]], CellSize=1048576, Id=5], State=DISABLED
ErasureCodingPolicy=[Name=RS-3-2-1024k, Schema=[ECSchema=[Codec=rs, numDataUnits=3, numParityUnits=2]], CellSize=1048576, Id=2], State=DISABLED
ErasureCodingPolicy=[Name=RS-6-3-1024k, Schema=[ECSchema=[Codec=rs, numDataUnits=6, numParityUnits=3]], CellSize=1048576, Id=1], State=ENABLED
ErasureCodingPolicy=[Name=RS-LEGACY-6-3-1024k, Schema=[ECSchema=[Codec=rs-legacy, numDataUnits=6, numParityUnits=3]], CellSize=1048576, Id=3], State=DISABLED
ErasureCodingPolicy=[Name=XOR-2-1-1024k, Schema=[ECSchema=[Codec=xor, numDataUnits=2, numParityUnits=1]], CellSize=1048576, Id=4], State=DISABLED

可以看到支持5种ec策略,上述显示默认开启了RS-6-3-1024k策略:

  • 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。

2.查看路径下的ec策略

hdfs ec -getPolicy -path /user/ec/test

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

[hadoop@hadoop-master1 shellUtils]$ hadoop fs -mkdir -p /user/ec/rs-3-2
2019-06-28 20:42:24,522 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@hadoop-master1 shellUtils]$ hdfs ec -getPolicy -path /user/ec/rs-3-2
2019-06-28 20:43:42,593 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
The erasure coding policy of /user/ec/rs-3-2 is unspecified

接下来,给此目录设置纠删码策略RS-3-2-1024k,此策略名是从前面list策略中查到的。可以看设置出错,原因是与默认开启的策略不同。

3.更换策略

hdfs ec [-enablePolicy -policy <policyName>]命令启用一组策略
[hadoop@hadoop-master1 shellUtils]$ hdfs ec -disablePolicy -policy RS-6-3-1024k
2019-06-28 20:59:00,453 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Erasure coding policy RS-6-3-1024k is disabled
[hadoop@hadoop-master1 shellUtils]$ hdfs ec -enablePolicy -policy RS-3-2-1024k
2019-06-28 20:59:15,340 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Erasure coding policy RS-3-2-1024k is enabled

设置rs-3-2-1024k

[hadoop@hadoop-master1 shellUtils]$ hdfs ec -setPolicy -path /user/ec/rs-3-2 -policy RS-3-2-1024k
2019-06-28 21:00:26,066 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Set RS-3-2-1024k erasure coding policy on /user/ec/rs-3-2

4.上传文件到ec目录下

[hadoop@hadoop-master1 test]$ hadoop fs -put hello.txt /user/ec/rs-3-2
2019-06-28 21:14:11,947 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2019-06-28 21:14:13,182 WARN erasurecode.ErasureCodeNative: ISA-L support is not available in your platform... using builtin-java codec where applicable

可以看到最后打印了ec的有关信息。

hdfs fsck /user/ec/rs-3-2/hello.txt  -files -blocks -locations
[hadoop@hadoop-master1 test]$ hdfs fsck /user/ec/rs-3-2/hello.txt  -files -blocks -locations
2019-06-28 21:17:25,502 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Connecting to namenode via http://hadoop-master1:9870/fsck?ugi=hadoop&files=1&blocks=1&locations=1&path=%2Fuser%2Fec%2Frs-3-2%2Fhello.txt
FSCK started by hadoop (auth:SIMPLE) from /10.179.83.24 for path /user/ec/rs-3-2/hello.txt at Fri Jun 28 21:17:26 CST 2019
/user/ec/rs-3-2/hello.txt 52 bytes, erasure-coded: policy=RS-3-2-1024k, 1 block(s):  OK
0. BP-1486153034-10.179.83.24-1559101838489:blk_-9223372036854775792_1003 len=52 Live_repl=3  
[blk_-9223372036854775792:DatanodeInfoWithStorage[10.179.52.55:9866,DS-be87c547-e130-41e2-8910-09ad4096ef19,DISK], 
blk_-9223372036854775788:DatanodeInfoWithStorage[10.179.131.90:9866,DS-efa0dabb-9912-41a9-8c8a-1f6b5672d928,DISK], 
blk_-9223372036854775789:DatanodeInfoWithStorage[10.179.100.195:9866,DS-0b1470fc-cfac-484a-971c-8aa439528950,DISK]]


Status: HEALTHY
 Number of data-nodes:	6
 Number of racks:		3
 Total dirs:			0
 Total symlinks:		0

Replicated Blocks:
 Total size:	0 B
 Total files:	0
 Total blocks (validated):	0
 Minimally replicated blocks:	0
 Over-replicated blocks:	0
 Under-replicated blocks:	0
 Mis-replicated blocks:		0
 Default replication factor:	2
 Average block replication:	0.0
 Missing blocks:		0
 Corrupt blocks:		0
 Missing replicas:		0

Erasure Coded Block Groups:
 Total size:	52 B
 Total files:	1
 Total block groups (validated):	1 (avg. block group size 52 B)
 Minimally erasure-coded block groups:	1 (100.0 %)
 Over-erasure-coded block groups:	0 (0.0 %)
 Under-erasure-coded block groups:	0 (0.0 %)
 Unsatisfactory placement block groups:	0 (0.0 %)
 Average block group size:	3.0
 Missing block groups:		0
 Corrupt block groups:		0
 Missing internal blocks:	0 (0.0 %)
FSCK ended at Fri Jun 28 21:17:26 CST 2019 in 8 milliseconds


The filesystem under path '/user/ec/rs-3-2/hello.txt' is HEALTHY

可以看到52字节,<1024k,直接整体编码,不用分割。存于1个block,一个dn就够了。

Live_repl=3 表示还有2个是校验块。

可以看到显示了该数据块的信息:0. BP-1486153034-10.179.83.24-1559101838489:blk_-9223372036854775792_1003 len=52 Live_repl=3 长度52字节。一共三个块,后边是3个块的信息:
[blk_-9223372036854775792:DatanodeInfoWithStorage[10.179.52.55:9866,DS-be87c547-e130-41e2-8910-09ad4096ef19,DISK],
blk_-9223372036854775788:DatanodeInfoWithStorage[10.179.131.90:9866,DS-efa0dabb-9912-41a9-8c8a-1f6b5672d928,DISK],
blk_-9223372036854775789:DatanodeInfoWithStorage[10.179.100.195:9866,DS-0b1470fc-cfac-484a-971c-8aa439528950,DISK]]
其中 9223372036854775792_1003 即为实际数据块,后边2个为校验块。登录到 10.179.52.55 机器上看:

[hadoop@hadoop-slave6 ~]$ ls -l  data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775792
-rw-rw-r-- 1 hadoop hadoop 52 Jun 28 21:14 data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775792

整个块就是52字节。另外块:

[hadoop@hadoop-slave3 ~]$ ll data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775788
-rw-rw-r-- 1 hadoop hadoop 52 Jun 28 21:14 data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775788

如此以来,共有3个块,并没有节省空间。
我们再看有多个数据块的情况。我们传一个大文件。


再看大于1024k的文件,我们上传一个9.26M的文件,信息:

[hadoop@hadoop-master1 ~]$ hdfs fsck /user/ec/rs-3-2/apache-tomcat-8.5.42.tar.gz -files -blocks -locations
2019-06-29 14:13:07,137 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Connecting to namenode via http://hadoop-master1:9870/fsck?ugi=hadoop&files=1&blocks=1&locations=1&path=%2Fuser%2Fec%2Frs-3-2%2Fapache-tomcat-8.5.42.tar.gz
FSCK started by hadoop (auth:SIMPLE) from /10.179.83.24 for path /user/ec/rs-3-2/apache-tomcat-8.5.42.tar.gz at Sat Jun 29 14:13:08 CST 2019
/user/ec/rs-3-2/apache-tomcat-8.5.42.tar.gz 9711748 bytes, erasure-coded: policy=RS-3-2-1024k, 1 block(s):  OK
0. BP-1486153034-10.179.83.24-1559101838489:blk_-9223372036854775760_1005 len=9711748 Live_repl=5 
[blk_-9223372036854775760:DatanodeInfoWithStorage[10.179.131.90:9866,DS-efa0dabb-9912-41a9-8c8a-1f6b5672d928,DISK], 
 blk_-9223372036854775759:DatanodeInfoWithStorage[10.179.131.21:9866,DS-5cc43afe-3c9e-400b-93d0-1146c7d1ce9f,DISK], 
 blk_-9223372036854775758:DatanodeInfoWithStorage[10.179.52.182:9866,DS-e91f4a19-3503-4a45-a5ea-208748281dfa,DISK], 
 blk_-9223372036854775757:DatanodeInfoWithStorage[10.179.100.195:9866,DS-0b1470fc-cfac-484a-971c-8aa439528950,DISK], 
 blk_-9223372036854775756:DatanodeInfoWithStorage[10.179.100.210:9866,DS-ef32ee8c-32b8-4d3a-b432-cfbaa3b4ef72,DISK]]

可知共有5个块,我们看第一个块信息:

[hadoop@hadoop-slave3 ~]$ ll -h  data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775760
-rw-rw-r-- 1 hadoop hadoop 3.3M Jun 29 14:12 data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775760

第二个块:

[hadoop@hadoop-slave4 ~]$ ll -h data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775759
-rw-rw-r-- 1 hadoop hadoop 3.0M Jun 29 14:12 data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775759

第三个块:

[hadoop@hadoop-slave5 ~]$ ll -h data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775758
-rw-rw-r-- 1 hadoop hadoop 3.0M Jun 29 14:12 data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775758

第四个块:

[hadoop@hadoop-slave2 ~]$ ll -h data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775757
-rw-rw-r-- 1 hadoop hadoop 3.3M Jun 29 14:12 data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775757

第五个块:

[hadoop@hadoop-slave1 ~]$ ll -h data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775756
-rw-rw-r-- 1 hadoop hadoop 3.3M Jun 29 14:12 data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775756

可以看到有3个块都是3.3M,两个块是3M,这是为什么呢?


再传一个文件测试。1.79M的文件
显示信息4和块:

[hadoop@hadoop-master1 ~]$  hdfs fsck /user/ec/rs-3-2/songxia.pdf -files -blocks -locations
2019-06-29 22:34:28,714 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Connecting to namenode via http://hadoop-master1:9870/fsck?ugi=hadoop&files=1&blocks=1&locations=1&path=%2Fuser%2Fec%2Frs-3-2%2Fsongxia.pdf
FSCK started by hadoop (auth:SIMPLE) from /10.179.83.24 for path /user/ec/rs-3-2/songxia.pdf at Sat Jun 29 22:34:30 CST 2019
/user/ec/rs-3-2/songxia.pdf 1881522 bytes, erasure-coded: policy=RS-3-2-1024k, 1 block(s):  OK
0. BP-1486153034-10.179.83.24-1559101838489:blk_-9223372036854775744_1006 len=1881522 Live_repl=4 
[blk_-9223372036854775744:DatanodeInfoWithStorage[10.179.52.182:9866,DS-e91f4a19-3503-4a45-a5ea-208748281dfa,DISK], 
blk_-9223372036854775743:DatanodeInfoWithStorage[10.179.52.55:9866,DS-be87c547-e130-41e2-8910-09ad4096ef19,DISK], 
blk_-9223372036854775741:DatanodeInfoWithStorage[10.179.131.21:9866,DS-5cc43afe-3c9e-400b-93d0-1146c7d1ce9f,DISK], 
blk_-9223372036854775740:DatanodeInfoWithStorage[10.179.100.210:9866,DS-ef32ee8c-32b8-4d3a-b432-cfbaa3b4ef72,DISK]]

第一块刚好1M,即1024K:

[hadoop@hadoop-slave5 ~]$ ll -h data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775744
-rw-rw-r-- 1 hadoop hadoop 1.0M Jun 29 22:33 data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775744

第二块,814k,表明是刚好:

[hadoop@hadoop-slave6 ~]$ ll -h data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775743
-rw-rw-r-- 1 hadoop hadoop 814K Jun 29 22:33 data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775743

第三个块:

[hadoop@hadoop-slave4 ~]$ ll -h data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775741
-rw-rw-r-- 1 hadoop hadoop 1.0M Jun 29 22:33 data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775741

第四块:

[hadoop@hadoop-slave1 ~]$ ll -h data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775740
-rw-rw-r-- 1 hadoop hadoop 1.0M Jun 29 22:33 data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/blk_-9223372036854775740

总结下来:一次分隔最小单位1024k,即1M。

  1. 如果不够1M,连一次都不都分隔,则只存一块,不分割。校验块大小数据块一样。
  2. 如果够分隔,则按1M大小均匀分隔成指定数据块数量,如 rs-3-2的数据块为3块。如大于3M,则每块都均匀分,最后不足1M的直接放在一个块中。(2M以内的文件,即使有三个数据块也只会存2个)

恢复测试

上边的策略是rs-3-2即丢失任意两个块,数据仍然能完整读出。我们将9.3M的文件的三、四块dn slave2/5关掉。

[hadoop@hadoop-slave2 ~]$ hdfs --daemon stop datanode
[hadoop@hadoop-slave5 ~]$ hdfs --daemon stop datanode

下载文件到本地,显示报错,但是依然可以下载下来:

[hadoop@hadoop-master1 ~]$ hadoop fs -get /user/ec/rs-3-2/apache-tomcat-8.5.42.tar.gz tmp
2019-06-29 23:51:03,906 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2019-06-29 23:51:05,167 WARN erasurecode.ErasureCodeNative: ISA-L support is not available in your platform... using builtin-java codec where applicable
2019-06-29 23:51:05,376 WARN impl.BlockReaderFactory: I/O error constructing remote block reader.
java.net.ConnectException: Connection refused
	at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
	at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
	......
	2019-06-29 23:51:05,392 WARN hdfs.DFSClient: [DatanodeInfoWithStorage[10.179.100.195:9866,DS-0b1470fc-cfac-484a-971c-8aa439528950,DISK]] are unavailable and all striping blocks on them are lost. IgnoredNodes = null

本地文件依然完好:

[hadoop@hadoop-master1 ~]$ du -sh tmp/apache-tomcat-8.5.42.tar.gz
9.3M	tmp/apache-tomcat-8.5.42.tar.gz

此时 页面上显示的lives nodes依然是全部,这是因为datanode的状态有一个刷新的间隔,这个间隔默认是10m(600s),只有10m没有收到datanode的消息,namenode才认为此datanode是dead的。

时间到了,会显示有2节点dead。

此时我们看一下块的分布情况:
显示数据块是健康的:

[hadoop@hadoop-master1 ~]$  hdfs fsck /user/ec/rs-3-2/apache-tomcat-8.5.42.tar.gz -files -blocks -locations
2019-06-30 00:03:52,289 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Connecting to namenode via http://hadoop-master1:9870/fsck?ugi=hadoop&files=1&blocks=1&locations=1&path=%2Fuser%2Fec%2Frs-3-2%2Fapache-tomcat-8.5.42.tar.gz
FSCK started by hadoop (auth:SIMPLE) from /10.179.83.24 for path /user/ec/rs-3-2/apache-tomcat-8.5.42.tar.gz at Sun Jun 30 00:03:53 CST 2019
/user/ec/rs-3-2/apache-tomcat-8.5.42.tar.gz 9711748 bytes, erasure-coded: policy=RS-3-2-1024k, 1 block(s):  Under replicated BP-1486153034-10.179.83.24-1559101838489:blk_-9223372036854775760_1005. 
Target Replicas is 5 but found 4 live replica(s), 0 decommissioned replica(s), 0 decommissioning replica(s).
0. BP-1486153034-10.179.83.24-1559101838489:blk_-9223372036854775760_1005 len=9711748 Live_repl=4  
[blk_-9223372036854775760:DatanodeInfoWithStorage[10.179.131.90:9866,DS-efa0dabb-9912-41a9-8c8a-1f6b5672d928,DISK], 
blk_-9223372036854775759:DatanodeInfoWithStorage[10.179.131.21:9866,DS-5cc43afe-3c9e-400b-93d0-1146c7d1ce9f,DISK], 
blk_-9223372036854775758:DatanodeInfoWithStorage[10.179.52.55:9866,DS-be87c547-e130-41e2-8910-09ad4096ef19,DISK], 
blk_-9223372036854775756:DatanodeInfoWithStorage[10.179.100.210:9866,DS-ef32ee8c-32b8-4d3a-b432-cfbaa3b4ef72,DISK]]


Status: HEALTHY
 Number of data-nodes:	4
 Number of racks:		3
 Total dirs:			0
 Total symlinks:		0

Replicated Blocks:
 Total size:	0 B
 Total files:	0
 Total blocks (validated):	0
 Minimally replicated blocks:	0
 Over-replicated blocks:	0
 Under-replicated blocks:	0
 Mis-replicated blocks:		0
 Default replication factor:	2
 Average block replication:	0.0
 Missing blocks:		0
 Corrupt blocks:		0
 Missing replicas:		0

Erasure Coded Block Groups:
 Total size:	9711748 B
 Total files:	1
 Total block groups (validated):	1 (avg. block group size 9711748 B)
 Minimally erasure-coded block groups:	1 (100.0 %)
 Over-erasure-coded block groups:	0 (0.0 %)
 Under-erasure-coded block groups:	1 (100.0 %)
 Unsatisfactory placement block groups:	0 (0.0 %)
 Average block group size:	4.0
 Missing block groups:		0
 Corrupt block groups:		0
 Missing internal blocks:	1 (20.0 %)
FSCK ended at Sun Jun 30 00:03:53 CST 2019 in 1 milliseconds


The filesystem under path '/user/ec/rs-3-2/apache-tomcat-8.5.42.tar.gz' is HEALTHY

但是,此时的问题是数据块只有4个了!原因是什么呢?Target Replicas is 5 but found 4 live replica(s)目标块是5块,但是我们只有4个节点,因此只有4个块。

我们将关闭的两个节点打开

[hadoop@hadoop-slave2 ~]$ hdfs --daemon start datanode
[hadoop@hadoop-slave5 ~]$ hdfs --daemon start datanode

此时再看数据块的状态:

[hadoop@hadoop-master1 ~]$  hdfs fsck /user/ec/rs-3-2/apache-tomcat-8.5.42.tar.gz -files -blocks -locations
0. BP-1486153034-10.179.83.24-1559101838489:blk_-9223372036854775760_1005 len=9711748 Live_repl=5 
 [blk_-9223372036854775760:DatanodeInfoWithStorage[10.179.131.90:9866,DS-efa0dabb-9912-41a9-8c8a-1f6b5672d928,DISK], 
blk_-9223372036854775759:DatanodeInfoWithStorage[10.179.131.21:9866,DS-5cc43afe-3c9e-400b-93d0-1146c7d1ce9f,DISK], 
blk_-9223372036854775758:DatanodeInfoWithStorage[10.179.52.55:9866,DS-be87c547-e130-41e2-8910-09ad4096ef19,DISK], 
blk_-9223372036854775757:DatanodeInfoWithStorage[10.179.100.195:9866,DS-0b1470fc-cfac-484a-971c-8aa439528950,DISK], 
blk_-9223372036854775756:DatanodeInfoWithStorage[10.179.100.210:9866,DS-ef32ee8c-32b8-4d3a-b432-cfbaa3b4ef72,DISK]]

开启两节点后,数据块立马又恢复5块了!
分别在
hadoop-slave3
hadoop-slave4
hadoop-slave6
hadoop-slave2
hadoop-slave1

之前的块是1、2、3、4、5节点,现在是1、2、3、4、6节点。关闭的2、5节点的块,现在转到了2、6节点上了。我们去看5节点上的块,发现已经没有块了!

[hadoop@hadoop-slave5 ~]$ ll -h data/dfs/dn/current/BP-1486153034-10.179.83.24-1559101838489/current/finalized/subdir0/subdir0/
total 0

应该是在这些节点关闭后,hdfs重新启动译码和编码,将原来丢失的数据。总之,如果编码后的stripe中,有数据丢失,hdfs会自动启动恢复工作。不应该有的块,也会被删除。

hadoop集群启动及基础测试 集群成员:master、node1、node2 1)启动集群 (0)如果集群是第一次启动,需要格式化 namenode hadoop@node1:~$ hdfs namenode –format hadoop@node2:~$ hdfs namenode -format (1)启动 HDFS: hadoop@master:~$ start-dfs.sh hadoop@master:~$ jps 显... 阅读详情

相关推荐

hadoop3.0新特性

1、概要 1. 基于jdk1.8(最低版本要求) 2. mr采用基于内存的计算,提升性能(快spark 10倍) 3. hdfs 通过最近black块计算,加快数据获取速度(块大小:256M) 4. 支持多NameNode(实现了更加可靠的HA) 5. 引入EC纠删码技术(EC: Erasure Coding) 存储空间节省50% 6. 精简了内核 7.hadoop sh...

wshyb0314的博客 1914

EC纠删码理论介绍

文章目录纠删码理论介绍1 什么是EC?2 EC(4+2)编解码简介3 EC的数学原理4 EC存储的优缺点 纠删码理论介绍 1 什么是EC? EC:纠删码-Erasure Code,是一种编码理论: EC是纠错码的一种,通过增加校验片,保证数据可靠性。 特性:将数据分成k个分片,生成m个校验片,假设n=k+m,在n个分片中任意选取k个分片,就可以将原始数据恢复回来。 EC不仅应用在存储领域,通信...

手边笔记 1万+

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

刚装的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. 9 DataNodes are required for the erasure codin

萌兔兔MMQ!! 1961

Hadoop 3.0 EC技术应用

目录 EC的设计目标 EC背景 EC在RAID应用 EC与HDFS EC在Hadoop架构的调整 NameNode元数据存储 Client DataNode EC存储方案 EC编码和解码 容错性和存储效率 连续存储还是条纹单元存储 EC策略关键属性 EC策略命名 online-EC 自定义EC策略 XOR算法与RS算法 部署HDFS EC 集群配置要求 EC配置 EC命令 验证测试 新上传一个293M的文件到冷数据目录 使用distcp迁移数据 基于Hive

The_Inertia的博客 2579

【HDFS】EC测试模拟副本丢失的场景

【HDFS】EC测试模拟副本丢失的场景

LifeIsGood 140

华为2288H-V5服务器做raid的详细步骤

华为2288H-V5服务器做RAID

qq_50263172的博客 6万+

虚拟机(3台)搭建Hadoop集群

VMware,虚拟机,hadoop3.2.*,集群,常见问题

猴子 1342

【吐血整理-历时两个月,长达万字】FDTD Solutions学习笔记

原教学视频来自于Ansys-Lumerical官方的FDTD100,所看视频来自B站大佬UP主 【Nestor_呐等】 的幸苦翻译,本文内容粘贴自我个人在学习FDTD100时,通过字幕和一些个人理解总结的一份word。整理不易,强烈建议收藏!...

weixin_45719141的博客 10万+

Hadoop实践 | 58同城Hadoop2.6升级3.2实践

Hadoop3已经发布了多个稳定版本,最新版本为3.3.0,Hadoop3.x中增加了很多特性和重大改进。在HDFS方面,最主要是EC能力成熟,显著降低HDFS数据存储成本。在Yarn层面...

Focus on Lakehouse 1059

Kali Linux渗透测试:蚁剑(AntSword)三种安装方法与避坑指南

WebShell管理是渗透测试与网络安全攻防演练中的关键技术环节,它允许安全人员在获得初步访问权限后,对目标系统进行文件管理、命令执行和数据库操作等深度控制。其核心原理是通过在Web服务器上植入特定脚本,建立一条隐蔽的远程管理通道。在实战中,一个高效、稳定的WebShell管理工具能极大提升后渗透阶段的工作效率与成功率。蚁剑(AntSword)作为一款功能强大的国产开源工具,凭借其插件化架构和图形化界面,成为众多安全研究人员的首选。本文将聚焦于如何在渗透测试专用操作系统Kali Linux上部署蚁剑,详细对

weixin_34413103的博客 413

UOS系统手动添加1920x1080分辨率:xrandr命令详解与持久化配置

本文详细介绍了在UOS系统中使用xrandr命令手动添加1920x1080分辨率的方法。针对系统设置中缺失该选项的常见问题,文章提供了从识别显示设备、使用cvt生成模式、添加并切换分辨率,到通过修改.profile文件实现持久化配置的完整步骤。同时涵盖了虚拟机环境、设备名识别及排错等进阶内容,帮助用户彻底解决UOS分辨率配置难题。

weixin_29300931的博客 496

Hadoop2.6 升级到 3.2 在58同城的实践

Hadoop3.x中增加了很多特性和重大改进。在HDFS方面,最主要是EC能力成熟,显著降低HDFS数据存储成本。在Yarn层面,支持多集群Federation,可以有效利用多YARN集群...

过往记忆大数据 892

Python多进程实战:用BaoStock高效下载股票历史数据的5个优化技巧

本文详细介绍了使用Python多进程技术通过BaoStock高效下载股票历史数据的5个优化技巧。从理解BaoStock的数据获取机制到进程池配置、智能任务分片、异常处理及性能监控,帮助开发者显著提升数据下载效率,特别适合量化交易领域的数据采集需求。

weixin_30369041的博客 455

hadoop搭建之网络配置

把各个节点的主机名称修改成和预期的名称保持一致          命令【vim /etc/hostname】,          键盘的按键  insert 按下之后就可以进行编辑了,           编辑完成后 ,按Esc  :qw,代表保存退出。  配置hosts(是各个节点之间可以形成映射的关键)          命令【vim /etc/hosts

To-nemy 3618

2018南京大学计算机夏令营机试

1. Count number of binary strings without consecutive 1’s Given a positive integer n(3≤n≤90), count all possible distinct binary strings of length n such that there are no consecutive 1's . Examples...

climber16的博客 1万+

在 SAP ABAP 里可靠地对接 FTP 服务器:从连接、命令到传输与排错的完整实战

本文详细介绍了在SAP ABAP中实现FTP文件交换的完整技术方案。文章首先解析了FTP协议的双连接特性(控制连接与数据连接),强调保持控制连接的重要性。随后详细说明了ABAP中FTP操作的四步标准流程:建立连接(包含HTTP_SCRAMBLE加密)、执行命令、断开连接和关闭RFC通道。文章提供了实战案例代码,演示如何将FTP文件复制到应用服务器再读取进内表处理,特别指出后台作业与前台操作的关键差异。最后总结了常见错误排查要点,包括连接模型、路径设置和资源释放等问题。全文通过SAP标准函数模块的调用顺序、典

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 303

滴滴: HDFS3.0 EC实践案例

HDFS 3.0 新特性 EC 纠删码 实践案例 EC落地实践

Pushkin.的博客 1103

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【大数据Hadoop】Hadoop 3.x 新特性总览

从功能上来说,Hadoop3比Hadoop2有些功能得到了增强,具体增加了哪些,后面再讲。JDK:在Hadoop2时,可以使用JDK7,但是在Hadoop3中,最低版本要求是JDK8,所以低于JDK8的版本需要对JDK进行升级,方可安装使用Hadoop3EC技术:Erasure Encoding 简称EC,是Hadoop3给HDFS拓展的一种新特性,用来解决存储空间文件。EC技术既可以防止数据丢失,又能解决HDFS存储空间翻倍的问题。

如切如磋,如琢如磨,臻于至善。 3109

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

滴滴使用 HDFS EC 节约大量存储的实践

桔妹导读:HDFS中默认的3副本方案在存储空间和其他资源(例如网络带宽)上有200%的开销。对于冷数据,使用纠删码(ErasureCoding,EC)存储代替副本存储是一种非常不错的替代...

过往记忆大数据 2011

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

滴滴基于 HDFS EC 节约大量存储成本的实践

桔妹导读:HDFS中默认的3副本方案在存储空间和其他资源(例如网络带宽)上有200%的开销。对于冷数据,使用纠删码(ErasureCoding,EC)存储代替副本存储是一种非常不错的替代方...

过往记忆大数据 1984

HDFS EC在滴滴的实践

桔妹导读:HDFS中默认的3副本方案在存储空间和其他资源(例如网络带宽)上有200%的开销。对于冷数据,使用纠删码(ErasureCoding,EC)存储代替副本存储是一种非常不错的替代...

DiDi_Tech的博客 1468

Hadoop 3.x 新特性剖析系列1

1.概述  目前从Hadoop官网的Wiki来看,稳定版本已经发行到Hadoop2.9.0,最新版本为Hadoop3.1.0,查阅JIRA,社区已经着手迭代Hadoop3...

shiter编写程序的艺术 1054

Hadoop3.x新特性及实操

1、如何从官网获取Hadoop3.x新特性 JDK Erasure Coding YARN Timeline server v2… https://hadoop.apache.org/docs/r3.0.0/index.html 2、Hadoop3.x新特性之JDK8 最低要求的Java版本从Java 7增加到Java 8 现在已针对Java 8的运行时版本编译了所有Hadoop JAR。仍在使用Java 7或更低版​​本的用户必须升级到Java 8。 3、Hadoop3.x新特性之EC技术详解

zhaoxiaoba123的博客 598

Hadoop 3.x 企业级实战指南:从纠删码到云原生容器化

《Hadoop 3.x企业级实战指南》摘要: Hadoop 3.x通过纠删码(Erasure Coding)技术将存储开销降低50%(如RS-6-3策略),显著提升存储效率。实战部分涵盖EC策略配置、Java API编程及Intel ISA-L加速优化。同时,YARN Docker容器化支持云原生部署,实现环境隔离与依赖封装,需配置NodeManager的Docker支持并调整容器资源参数。此外,多NameNode HA架构通过ZKFC和共享存储增强高可用性,适用于关键生产环境。本文通过代码示例演示了冷数据

weixin_55008828的博客 1142
上一篇: fasterxml解析json篇
下一篇: FileSystem、Path与Configure
王小禾
博客等级 码龄11年 80粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值