【问题标题】:Hadoop per-file block sizeHadoop 每个文件块大小
【发布时间】:2012-02-07 06:26:07
【问题描述】:

在 Hadoop 书中,据说我们可以在创建文件时指定每个文件的块大小。

“增加分割大小最自然的方法是在 HDFS 中拥有更大的块,通过设置 dfs.block.size 或在文件构建时基于每个文件。”

知道如何在文件构建时执行此操作。我希望通过将其设置为 value = file-size,文件不会被拆分

【问题讨论】:

  • 基本上我有一个流式作业(c++ 代码),我只是使用 -CoprFromLocal 将输入文件复制到 HDFS。此处是否有任何选项可用于指定文件块大小。我认为 HDFS 在创建文件时提供了一个 api 来指定块大小。 FileSystem.create(路径、覆盖、缓冲区大小、复制、块大小、进度)。但可能我不能使用这个。我正在寻找一些 cli 选项。

标签: hadoop mapreduce


【解决方案1】:

您可以使用 CLI:

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

或者您可以使用 Java API 在您想要创建或复制文件时指定 dfs.block.size。

Configuration conf = new Configuration();
conf.setInt("dfs.block.size",file-size);

【讨论】:

  • 我尝试了 CLI 选项。但似乎当作业启动时,如果文件大于 64 MB,MapReduce 仍会尝试拆分文件,尽管我在将文件复制到 HDFS 时提到 df.block.size 为 256MB。我希望 MR 不会使用上述选项拆分文件。
  • 你可以在50070查看文件的块大小。你可以浏览文件系统查看文件的块大小是否正确。
猜你喜欢
  • 1970-01-01
  • 2021-10-28
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 2011-03-25
相关资源
最近更新 更多