【发布时间】:2013-07-03 04:23:38
【问题描述】:
我有一个 MapReduce 作业,它由一个包含多行记录的输入文件组成。每条记录都需要相当长的时间来处理。因此,我的输入文件,虽然其大小可能远小于 HDFS 块大小,但在单个节点上执行时将花费大量时间。
如何告诉 Hadoop 在节点之间有效地平均分割输入文件?这样即使输入文件很小,它仍然被拆分成多个任务并行执行。
另外,我们能否告诉 hadoop 将文件拆分为正好 N 个任务,其中 N 是可用节点的数量?
谢谢!
编辑: 为了更清楚,我想做的是如下所示。我有很多大文件。我有一个外部程序将处理每个文件。每个文件都需要大量时间来处理。
所以,我将文件的文件名存储在输入文件中,然后我希望 Hadoop 将其平均拆分。然后在映射器中,我将与 ID 对应的文件复制到本地机器并调用程序。
【问题讨论】: