Hadoop HDFS:从命令行设置文件块大小?

Hadoop HDFS:从命令行设置文件块大小?

当我将文件加载到 HDFS 时,我需要将文件的块大小设置为低于群集块大小的某个值。例如,如果 HDFS 使用 64mb 块,我可能希望使用 32mb 块复制大文件。

我之前在 Hadoop 工作负载中使用过org.apache.hadoop.fs.文件系统.创建()功能,但是有没有办法从命令行执行此操作?

答案1

您可以通过使用 hadoop fs 命令设置 -Ddfs.block.size=something 来实现这一点。例如:

hadoop fs -Ddfs.block.size=1048576  -put ganglia-3.2.0-1.src.rpm /home/hcoyote

正如您在此处看到的,块大小更改为您在命令行上定义的大小(在我的情况下,默认值为 64MB,但我在这里将其更改为 1MB)。

:;  hadoop fsck -blocks -files -locations /home/hcoyote/ganglia-3.2.0-1.src.rpm 
FSCK started by hcoyote from /10.1.1.111 for path /home/hcoyote/ganglia-3.2.0-1.src.rpm at Mon Aug 15 14:34:14 CDT 2011
/home/hcoyote/ganglia-3.2.0-1.src.rpm 1376561 bytes, 2 block(s):  OK
0. blk_5365260307246279706_901858 len=1048576 repl=3 [10.1.1.115:50010, 10.1.1.105:50010, 10.1.1.119:50010]
1. blk_-6347324528974215118_901858 len=327985 repl=3 [10.1.1.106:50010, 10.1.1.105:50010, 10.1.1.104:50010]

Status: HEALTHY
 Total size:    1376561 B
 Total dirs:    0
 Total files:   1
 Total blocks (validated):  2 (avg. block size 688280 B)
 Minimally replicated blocks:   2 (100.0 %)
 Over-replicated blocks:    0 (0.0 %)
 Under-replicated blocks:   0 (0.0 %)
 Mis-replicated blocks:     0 (0.0 %)
 Default replication factor:    3
 Average block replication: 3.0
 Corrupt blocks:        0
 Missing replicas:      0 (0.0 %)
 Number of data-nodes:      12
 Number of racks:       1
FSCK ended at Mon Aug 15 14:34:14 CDT 2011 in 0 milliseconds


The filesystem under path '/home/hcoyote/ganglia-3.2.0-1.src.rpm' is HEALTHY

答案2

HADOOP 0.21 注意事项:0.21 中存在一个问题,您必须使用 -D dfs.blocksize 而不是 -D dfs.block.size

相关内容