Hadoop HDFS: define o tamanho do bloco de arquivos a partir da linha de comando?

4

Eu preciso definir o tamanho do bloco de um arquivo quando eu carregá-lo no HDFS, para algum valor menor que o tamanho do bloco do cluster. Por exemplo, se o HDFS estiver usando blocos de 64MB, talvez eu queira que um arquivo grande seja copiado com blocos de 32MB.

Já fiz isso antes em uma carga de trabalho do Hadoop usando o org.apache.hadoop.fs.FileSystem.create () , mas existe uma maneira de fazer isso a partir da linha de comando?

    
por BigChief 11.08.2011 / 17:22

2 respostas

4

Você pode fazer isso definindo -Ddfs.block.size = alguma coisa com o comando hadoop fs. Por exemplo:

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

Como você pode ver aqui, o tamanho do bloco muda para o que você define na linha de comando (no meu caso, o padrão é 64MB, mas estou mudando para 1MB aqui).

:;  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
    
por 15.08.2011 / 21:37
1

NOTA PARA O HADOOP 0.21 Há um problema em 0.21 aqui você tem que usar -D dfs.blocksize em vez de -D dfs.block.size

    
por 05.09.2011 / 23:32