Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop:jobconf中每个节点强制执行1个映射器任务_Hadoop - Fatal编程技术网

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

Hadoop:jobconf中每个节点强制执行1个映射器任务,hadoop,Hadoop,我想在Hadoop集群上的每个节点上运行一个任务(映射器),但我无法修改tasktracker运行的配置(我只是一个用户)。 因此,我需要能够在作业配置中推送该选项。我试图在hadoop jar命令中设置mapred.tasktracker.map.tasks.max=1,但是tasktracker忽略了它,因为它在其配置文件中有不同的设置。 顺便说一下,集群使用容量调度器 有没有办法强制每个节点执行一个任务 编辑: 为什么?我有一个内存受限的任务,所以我希望每个任务都使用节点可用的所有内存。当

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

有没有办法强制每个节点执行一个任务

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

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

我希望每个节点有特定数量的任务(1)。我确实希望在多个节点上并行运行进程。原因是我的进程内存有限,一个任务将需要节点的所有可用内存。@marcorossi您不能这样做。解决方案是将每个tasktracker的映射者数量设置为1(您不能这样做,因为您没有集群的管理权限)。