0

我想在我的 Hadoop 集群上为每个节点运行一个任务(映射器),但我无法修改运行 tasktracker 的配置(我只是一个用户)。
因此,我需要能够通过作业配置推送选项。我尝试在 hadoop jar 命令中设置 mapred.tasktracker.map.tasks.maximum=1,但 tasktracker 忽略它,因为它在其配置文件中有不同的设置。
顺便说一下,集群使用了容量调度器。

有什么办法可以强制每个节点执行 1 个任务?

编辑:为什么?我有一个内存绑定任务,所以我希望每个任务都使用节点可用的所有内存。

4

1 回答 1

1

当您通过配置文件或其他方式设置映射器的数量时,这只是对框架的提示。它不能保证您只会获得指定的映射器数量。映射器的创建实际上是由拆分的数量决定的。并且拆分创建由您的 InputFormat 持有的逻辑执行。如果您真的希望只有一个映射器来处理整个文件,请在您使用的 InputFormat 类中将“issplittable”设置为 true。但是你为什么要这样做呢?hadoop 的强大之处实际上在于分布式并行处理。

于 2013-04-21T00:44:54.203 回答