更改dfs文件的块大小

Sam*_*Sam 21 hadoop

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

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

KWo*_*ich 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

  • 请注意hadoop 2.0.4中的新变化:dfs.blocksize(http://hadoop.apache.org/docs/r2.0.4-alpha/hadoop-project-dist/hadoop-common/DeprecatedProperties.html) (5认同)

Bkk*_*rad 13

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

hadoop fs -D fs.local.block.size=134217728 -put local_name remote_location
Run Code Online (Sandbox Code Playgroud)

原始答案

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