如何限制本地MRJob任务中的进程数

时间:2016-02-09 02:47:14

标签: python hadoop mrjob

我在使用MRJob的8核机器上运行MapReduce作业。我使用Python API编写它,然后将其作为

运行
$ python main.py -r local files/input*

该文件夹中有大约750个输入文件,当我以这种方式运行时,我相信mrjob会启动与输入文件一样多的映射器进程。即使机器有8芯,我也看到负载平均为

load average: 551.26, 553.29, 556.82

是不是有办法限制地图制作者的数量,所以它一次只启动8个(或16个)?我无法为此找到配置选项,这表明我在某处做错了什么?

谢谢!

修改

这是我的MRjob任务的粗略轮廓。

from mrjob.job import MRJob
from mrjob.step import MRStep

class MyMR(MRJob):

    def mapper_xml_init(self):
        self.abuf = ""

    def mapper_xml(self, _, line):

        self.abuf += line.strip()

        # ... work with self.abuf

        if acondition:
            self.abuf = ""


    def reducer_mean(self, _, values):
        # process some stuff

    def steps(self):
        return [
            MRStep(mapper_init=self.mapper_xml_init, 
                   mapper=self.mapper_xml),  

            MRStep(reducer=self.reducer_mean),
        ]

if __name__ == '__main__':
    MyMR.run()

0 个答案:

没有答案