【问题标题】:How to split input set for better Hadoop balance?如何拆分输入集以获得更好的 Hadoop 平衡?
【发布时间】:2012-03-01 15:02:27
【问题描述】:

我有一个分层目录,每个目录有很多文件,每个文本文件中有很多url字符串。我想下载hadoop中所有文件中的所有url以获得更好的平衡。

例如,如果我有 1+5 个节点的 Hadoop 集群和 5 个 URL。那么,是 5-URLs-in-one 文件还是 1-URL-per-file(然后获取 5 个文件)作为输入更好的平衡?

我认为 Hadoop 会默认将输入集拆分为 64M 块以仅在单个节点上运行,不能运行所有 5 个从属节点。

谢谢你的回答!

【问题讨论】:

    标签: hadoop balance


    【解决方案1】:

    如果您没有在每个 URL 上执行非常密集的计算,并且您的文件小于 64 MB,那么您最好只在单个节点上运行一个映射器。在这种情况下,我会使用一个文件方法中的所有 URL。

    最好有更大的文件,这样每个映射器都有足够的工作要做。如果您的文件非常小,则合并它们以使总大小更接近 64 MB 标记。这也将允许更多的数据存储在 HDFS 中,因为每个文件都占用 Namenode 上的 RAM 来保存元数据,而 RAM 是有限的,所以如果你使用较少数量的文件,你可以将更多的数据放入集群和你的 Namenode将使用更少的 RAM。

    您也可以尝试采用CombineFileInputFormat 方法

    【讨论】:

      猜你喜欢
      • 2019-06-01
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 2022-12-13
      • 2017-07-27
      相关资源
      最近更新 更多