我想在hadoop集群上为每个节点运行一个任务(Map器),但是我不能修改tasktracker运行时使用的配置(我只是一个用户)。
因此,我需要能够通过作业配置推送选项。我试图在hadoopjar命令中设置mapred.tasktracker.map.tasks.maximum=1,但是tasktracker忽略了它,因为它的配置文件中有不同的设置。
顺便说一下,集群使用容量调度器。
有没有办法我可以强制每个节点一个任务?
编辑:为什么?我有一个内存受限的任务,所以我希望每个任务都使用节点可用的所有内存。
1条答案
按热度按时间2skhul331#
当您通过配置文件或其他方式设置Map器的数量时,这只是对框架的一个提示。它不能保证您将只获得指定的Map器数量。Map器的创建实际上是由拆分数控制的。分割创建是由inputformat所持有的逻辑执行的。如果您真的希望只有一个Map器来处理整个文件,请在您使用的inputformat类中将“issplittable”设置为true。但是你为什么要这么做呢?hadoop的强大实际上在于分布式并行处理。