web-dev-qa-db-ja.com

DFSファイルのブロックサイズを変更する

特定の1つのファイルセット(合計2 TB)を解析する場合、私のマップは現在非効率的です。 Hadoop dfs内のファイルのブロックサイズを変更したい(64MBから128 MB)。クラスター全体ではなく、ファイルの1つのセットのみのドキュメントでそれを行う方法を見つけることができません。

アップロードすると、どのコマンドがブロックサイズを変更しますか? (ローカルからDFSへのコピーなど)

22
Sam

答えを変える!コマンドラインを使用する場合は、fs.local.block.size構成設定を適切に設定するだけです。

hadoop fs -D fs.local.block.size=134217728 -put local_name remote_location

元の回答

Hadoop APIでファイルを作成するときに、プログラムでブロックサイズを指定できます。残念ながら、コマンドラインでhadoop fs -putコマンドを使用してこれを行うことはできません。やりたいことを行うには、ローカルファイルをリモートの場所にコピーするための独自のコードを記述する必要があります。難しいことではありません。ローカルファイルのFileInputStreamを開いて、リモートOutputStreamFileSystem.create で作成し、次に IOUtils.copy Apache CommonsからIO 2つのストリーム間でコピーします。

13
Bkkbrad

私にとっては、後でこの質問を他の誰かが見つけた場合に備えて、Bkkbradの回答を少し変更して、私のセットアップで機能させる必要がありました。 Ubuntu 10.10でHadoop 0.20を実行しています。

hadoop fs -D dfs.block.size=134217728 -put local_name remote_location

私にとっての設定はfs.local.block.sizeではなくdfs.block.sizeです

29
KWottrich

hdfs-site.xmlファイルのdfs.block.sizeという名前のプロパティを使用してブロックサイズを変更できます。注:サイズをビット単位で示す必要があります。例:134217728ビット= 128 MB。

3
Rengasamy

Conf /フォルダーで、設定ファイルhdfs-site.xmlのdfs.block.sizeの値を変更できます。 hadoopバージョン1.0では、デフォルトのサイズは64MBで、バージョン2.0ではデフォルトのサイズは128MBです。

<property> 
    <name>dfs.block.size<name> 
    <value>134217728<value> 
    <description>Block size<description> 
<property>
2
madhur

このようにプログラムでブロックサイズを変更することもできます

Configuration conf = new Configuration() ;

conf.set( "dfs.block.size", 128*1024*1024) ;
2
inuyasha1027