mapreduce中reducers个数设置
来源:互联网 发布:mac卸载java 8 编辑:程序博客网 时间:2024/05/22 00:26
MapReduce框架将文件分为多个splits,并为每个splits创建一个Mapper,所以Mappers的个数直接由splits的数目决定。而Reducers的数目可以通过job.setNumReduceTasks()函数设置,默认情况只有一个Reducer。在真正的集群环境下,如果默认,那么所有的中间数据会发送给唯一的Reducer,导致任务变得非常缓慢。究竟设多少个Reducers合适呢?为了解决这个问题,首先来了解一下slots的概念。
slots有点类似一个资源池,每个任务(map和reduce)执行时都必须获得一个slot才能继续,否则只能等待。当一个任务完成后,该任务就归还slot,这个过程有点类似释放资源到资源池中。显然,每一个获得资源的任务都可以立即执行,无需等待。另一方面,mapreduce的任务由tasktracker节点负责执行的,所以slots可进一步理解为tasktrackers能够并发执行多个任务。slots分为mapper slots和reducer slots,分别对应最大可并行执行的mapper和reducer数。用户可以通过修改mapred-site.xml配置文件的mapred.tasktracker.map.tasks.maxmum来设置slots的值,默认为2.
集群中可用rducer slots 的总数等于集群中的总结点数诚意每个节点有多少个slots。reducers 数目的最佳值和reducer slots的总数有关,通常情况下,让reducers的数目略小于reducer slots的总数,这样的目的:首先reducers可以并行执行,减少排队时间;其次对于未执行reducer的slots可以在其他reducer发生故障时,立即分配给新创建的reducer,不会明显 加长任务总时间。
如果出现reducers》mappers的情况就不合理了,这样有些mappers会工作消耗资源开销,但是对任务没有任何帮助。
- mapreduce中reducers个数设置
- mapreduce--如何设置reducer的个数
- MapReduce中job参数及设置map和reduce的个数
- MapReduce中job参数及设置map和reduce的个数
- MapReduce中设置全局变量
- 自己设置mapreduce程序的map个数和reduce个数
- mapreduce中map个数的确定
- mapreduce中map个数的确定
- MapReduce中map任务个数的确定
- MapReduce中map与reduce的个数
- hadoop中mapreduce属性设置
- hadoop2中Mappers和Reducers堆栈的大小配置
- redux进阶-怎么样在两个reducers中贡献state
- php中替换设置个数
- 利用MapReduce求海量数据中最大的K个数
- MapReduce中设置文件过滤器代码
- MapReduce中的map个数
- MapReduce实例----统计个数
- 卷积神经网络(CNN)(八)
- java图的邻接矩阵表示法
- SQL替换NULL
- TTL、CMOS及RS232电平的区别
- Debug和Release的区别
- mapreduce中reducers个数设置
- 读技术书籍的困扰和一种解决办法尝试
- cocos2d-x中的动画的使用
- 表单上传文件提交实现ajax方式
- 用homebrew安装mongodb
- win7无线网络共享
- UIViewController在调removeFromParentViewController时遇到的问题
- C# DateTime 日期加1天 减一天 加一月 减一月
- SYSTEMTIME FileTimeToLocalFileTime 使用