Hadoop:从jobconf强制每个节点执行1个映射器任务

时间:2013-04-19 16:41:41

标签: hadoop

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

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

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

1 个答案:

答案 0 :(得分:1)

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