【问题标题】:Why my Pig UDF not faster with more machine on Amazon EMR?为什么我的 Pig UDF 在 Amazon EMR 上使用更多机器时速度不快?
【发布时间】:2016-01-06 23:38:50
【问题描述】:

我是 Hadoop 和大数据的新手。我们每天都有数百个日志文件。每个文件约为 78Mb。因此,我们认为我们可以从 Hadoop 作业中受益,我们可以编写 Pig UDF 并提交到 Amazon EMR。

我们做了一个非常简单的 Pig UDF

public class ProcessLog extends EvalFunc<String> {
  // Extract IP Address from log file line by line and convert that to JSON format.
}

它在本地与 Pig 和 hadoop 一起工作。因此,我们提交给 Amazon EMR 并使用 5x x-large 实例运行。大约花了40分钟才完成。因此,我们认为如果我们将实例数加倍(10 倍 x 大),我们会更快地获得结果,但最终会变慢。在编写 Pig UDF 以更快地得到结果时,我们需要考虑哪些因素?

【问题讨论】:

    标签: hadoop amazon-web-services apache-pig


    【解决方案1】:

    数百个日志文件...每个文件大约是 ~78Mb

    问题在于您没有“大数据”。除非您对每个 MB 进行几秒钟的处理,否则不使用 Hadoop 会更快。 (大数据的最佳定义是“数据太大或流得太快以至于普通工具无法工作”。)

    Hadoop 有很多开销,因此当您的数据很小(几 GB)时,您应该使用“普通”工具。您的数据可能适合我手机上的 RAM!使用 parallel 之类的东西来确保所有内核都被占用。

    【讨论】:

    • 感谢您的回答。每个文件为 78MB,其中约 100 个文件约为 7GB。假设它不是那么大。我认为 Hadoop 会将工作分配给很多机器,所以如果我增加实例,这些文件将在这些机器之间并行运行?
    【解决方案2】:

    运行作业时需要检查以下事项:

    1. 使用的映射器数量
    2. 使用的减速器数量

    当您处理 7 GB 的数据时,它应该创建超过 56 个映射器(拆分大小为 128M)。在您的情况下,您可以将其作为仅地图作业运行,以将每一行转换为 JSON。如果它不是仅映射作业,请检查使用了多少个减速器。如果它只使用较少的映射器,那么增加该作业的减速器数量可能会有所帮助。但是你可以完全消除减速器。

    请粘贴包含计数器的执行进度日志。这将有助于指出问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多