首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用多核LocalMRJobRunner实现MRJob

利用多核LocalMRJobRunner实现MRJob
EN

Stack Overflow用户
提问于 2015-07-02 10:05:01
回答 2查看 1.4K关注 0票数 3

我正在使用python /mrjob框架来执行mapreduce作业。只有大约4G的数据,我不想经历设置Hadoop或EMR的麻烦。我有一个64核心机器,它需要大约两个小时来处理数据与mrjob。我注意到mrjob为我的工作分配了54个映射器,但似乎一次只运行一个。是否有一种方法可以让mrjob与我的所有cpu内核并行运行所有任务?

我手动更改了任务的数量,但没有起到多大作用。--jobconf mapred.map.tasks=10 --jobconf mapred.reduce.tasks=10

编辑:当我执行作业时,我有-r local,但是,看看代码,似乎一次运行一个进程是默认的。请告诉我我错了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-13 06:06:11

mrjob的本地作业运行程序只是为每个MR阶段生成一个子进程,一个用于映射器,一个用于组合器(可选),另一个用于减速器,并通过管道在它们之间传递数据。它根本不具有任何并行性,所以它永远不会利用您的64个内核。

我的建议是在本地机器上运行hadoop并使用-r hadoop选项提交作业。在您的本地机器上以pseduo分布式模式运行的hadoop集群应该能够利用您的多核。

请参阅这个问题,该问题涉及到这个主题:Hadoop伪分布模式下所有核的充分利用

票数 4
EN

Stack Overflow用户

发布于 2015-07-10 02:57:27

作业的运行程序可以通过带有-r选项的命令行指定。

当您从命令行运行mrjob脚本时,默认的运行模式是inline,它在单个进程中在本地机器上运行作业。运行作业的其他明显选项是emrhadoop

通过将运行程序设置为local,可以使作业在本地计算机上并行运行。

代码语言:javascript
复制
$ python myjob.py -r local

这些--jobconf选项仅由Hadoop (即在EMR或Hadoop集群上)认可。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31181608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档