从MapReduce框架的执行流程,我们知道,输入文件会被分成多个splits,每个split对应一个Mapper,所以Mapper的数量由splits的数目决定。
而Reducer的数目可以通过job.setNumReduceTasks()函数来设置,默认情况下只有一个,有些时候,Reducer只有一个并不是性能最高,因此我们究竟设置多少个Reducer合适呢?
在hadoop中,有个叫做slots的概念,Mapper或者Reducer执行时都得获得一个splot才能继续,否则只能等待。Slot可以理解为TaskTracker能并发执行多少个任务。
Slot分为mapper slot 和Reducer slot,分别对应最大可执行的mapper数和reducer数。用户可以通过修改mapred-site.xml文件的mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.reduce.tasks.maximum来设置slot的值,默认为2.
集群中reducer slot的总数==总结点数*每个节点的reducer slot数目,每个节点的reducer slot数目由mapred.tasktracker.reduce.tasks.maximum来确定。
Reducer的最佳的数目值与总的reducer slot数目有关,reducer的最佳数目值应该略小于reducer slot的总数。这样做的目的:首先让所有的reducer可以并行执行,其次对于未分配的slot,可以在reducer发生故障时,立即分配给新创建的Reducer.
当然,在设置Reducer数目的时候还得考虑Mapper的数目。按照MapReduce的思想,应该Mapper的数目>=Reducer的数目。
假设Mapper的数目<Reducer的数目,那么按照MapReduce的流程,就会有Reducer剩余,剩余的Reducer根本收不到来自Mapper的输入,白白浪费资源。
因此,不管如何,Reducers<Mappers是必不可少的前提。
当然,MapReduce的值也不是随意设定的,他和机器的内存以及处理器核数等等都有关系,真是的集群环境需要考虑的还有很多。
相关推荐
redux中reducer 为什么最好是纯函数.md
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 npm run eject 注意:这是单向操作。 ...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 yarn eject 注意:这是单向操作。 eject ...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 yarn eject 注意:这是单向操作。 eject ...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 yarn eject 注意:这是单向操作。 eject ...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 yarn eject 注意:这是单向操作。 eject ...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 npm run eject 注意:这是单向操作。 ...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。npm run eject 注意:这是单向操作。 eject ,...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 最小化构建,文件名包含哈希。 您的应用已准备好进行部署! 有关更多信息,请参见有关的部分。yarn eject 注意:这是单向操作。 eject ,您将无法...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 最小化构建,文件名包含哈希。 您的应用已准备好进行部署! 有关更多信息,请参见有关的部分。yarn eject 注意:这是单向操作。 eject ,您将无法...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 npm run eject 注意:这是单向操作。 ...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 npm run eject 注意:这是单向操作。 ...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 yarn eject 注意:这是单向操作。 eject ...
它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。yarn eject 注意:这是单向操作。 eject ,您...
应用场景 JStorm处理数据的方式是基于消息的流水线处理, 因此特别适合无状态计算,也就是计算单元的依赖的数据全部在接受的消息中可以找到, 并且最好一个数据流不依赖另外一个数据流。因此,常常用于日志分析,...
React-Redux 该项目是出于研究目的而编写的,代码并不是真正的最佳代码... 每个useReducer()提供它们自己的分派函数,仅处理由使用的reducer函数指定的动作,而Redux提供一个函数,该函数消耗任何针对任何reducer函数专
学习ReduxRedux的三项原则应用程序...对象-将Redux的三个原理绑定在一起:保留当前应用程序状态对象,让我们分派操作,创建时,您需要指定reducer来告诉状态如何用操作更新视图-这个模式的UI层,通常阵营减速机组成有不
动机通常,在您的应用程序中最好有一个“全局” redux存储,这样可以很容易地将redux-injectable-store Redux存储与可注入的reduce一起用于捆绑拆分,大型应用程序和SPA。 动机通常,在您的应用程序中最好有一个...
在那儿,我开始这个项目的目的是练习和制定一些最佳的开发实践,包括reactJs,redux和reducer,测试,文件夹结构,命名,整理,配置等等。 一个小时后,我刚刚说了“等待!”,我在考虑应该创建哪种类型的应用程序...
hadoop.com 11.3 小结 第12章 案例研究 12.1 转换《纽约时报》1100 万个库存图片文档 12.2 挖掘中国移动的数据 12.3 在StumbleUpon 推荐最佳网站 12.3.1 分布式StumbleUpon 的开端 12.3.2 HBase 和...