mapreduce中reducers个数设置

浏览:1344 ℃
字体:
发布时间:2013-12-13 14:31:14
来源:

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会工作消耗资源开销,但是对任务没有任何帮助。

闂備胶顢婄紙浼村磿闁秴绠栭柡鍥╁Л閸嬫挸鈽夊畷鍥╃獥缂備讲鈧啿顏€规洘绻堥幃鈺呯叓椤撶姳浜㈠┑鐑囩到濞村嫰骞忛敓锟�/QQ 1602007闂備焦瀵х粙鎴︽嚐椤栫偛鐭楃憸宥夊煝閺冨牆惟闁挎繂鍊告禍鎯р攽閻樿精鍏屾い鎰矙閺岋繝宕掑⿰搴㈡暞婵炲濮撮悧鎾诲箚閸曨垱鍋勯柧蹇撴贡鏁堥梻渚€娼уΛ妤咁敄閸涱喚顩查柡鍥╁枔閳瑰秹鏌嶉妷銉ユ毐鐟滄澘妫楅湁闁稿繒鈷堝▓鏃傛喐鐢喗瀚�
>更多相关文章
24小时热门资讯
24小时回复排行
闂佽瀛╂笟妤€袙鐎涳拷 闂備礁缍婂ḿ褑銇愰悙鐢电當闁靛繈鍊曞Λ妯肩棯椤撶偞鍣哥紒顔芥崌閺岋綁鍩$€n偄顏�
闂備礁鎲″濠氬磻閻旂厧绠栧┑鐘插暙椤曡鲸鎱ㄥ鍡楀闁哥媴鎷� 闂佽瀛╅崘濠氭⒔閸曨兛绻嗙憸鏂款嚕閻㈠壊鏁嶆慨姗嗗墰閸樻帗绻涢幋鐐村鞍缂侇喖绉瑰濠氭偄閸忕厧娈忛梺鍝勫暙閸婂湱绮堥敓锟�
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2025 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();