更改dfs文件的块大小

时间:2010-04-19 18:18:19

标签: hadoop

在解析一组特定文件(总共2 TB)时,我的地图目前效率低下。我想更改Hadoop dfs中文件的块大小(从64MB到128 MB)。我在文档中找不到如何只对一组文件而不是整个集群进行操作。

上传时哪个命令会更改块大小? (例如从本地复制到dfs。)

5 个答案:

答案 0 :(得分:29)

对我来说,我不得不稍微改变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

答案 1 :(得分:13)

我改变了答案!您只需在使用命令行时适当地设置fs.local.block.size配置设置。

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

原始答案

使用Hadoop API创建文件时,可以以编程方式指定块大小。不幸的是,您无法使用hadoop fs -put命令在命令行上执行此操作。要做你想做的事,你必须编写自己的代码来将本地文件复制到远程位置;这并不难,只需为本地文件打开FileInputStream,使用FileSystem.create创建远程OutputStream,然后使用Apache Commons IO中的IOUtils.copy之类的内容进行复制两个流。

答案 2 :(得分:3)

我们可以使用 hdfs-site.xml 文件中名为 dfs.block.size 的属性更改块大小。 注意: 我们应该提一下比特的大小。 例如 : 134217728位= 128 MB。

答案 3 :(得分:2)

你也可以在你的程序中修改你的块大小

Configuration conf = new Configuration() ;

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

答案 4 :(得分:2)

在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>