Sla*_*yer 80 reduce hadoop mapreduce
在Hadoop中什么时候开始减少任务?它们是在完成一定百分比(阈值)的映射器后开始的吗?如果是这样,这个门槛是否固定?通常使用什么样的阈值?
Don*_*ner 202
reduce阶段有3个步骤:shuffle,sort,reduce.Shuffle是每个映射器的reducer收集数据的地方.当映射器生成数据时会发生这种情况,因为它只是数据传输.另一方面,只有在完成所有映射器后才能启动sort和reduce.你可以通过查看减速器完成百分比来判断MapReduce正在做什么:0-33%意味着它正在进行洗牌,34-66%是排序,67%-100%是减少.这就是为什么你的减速器有时看起来"卡住"33% - 它正在等待地图制作者完成.
Reducers根据已完成的映射器百分比阈值开始改组.您可以更改参数以使减速器迟早启动.
为什么早期开始减速机是一件好事?因为它会随着时间的推移将数据传输从映射器传播到Reducer,如果您的网络是瓶颈,这是一件好事.
为什么早期开始减速机是一件坏事?因为他们"hog up"减少了插槽,同时只复制数据并等待映射器完成.之后开始实际使用reduce槽的另一个作业现在无法使用它们.
您可以通过更改mapred.reduce.slowstart.completed.maps
in 的默认值来自定义reducers启动的时间mapred-site.xml
.1.00
在启动reducer之前,值将等待所有映射器完成.值0.0
将立即启动减速器.0.5
当一半映射器完成时,值将启动reducer.您还可以mapred.reduce.slowstart.completed.maps
逐个更改.在新版本的Hadoop(至少2.4.1)中,调用的参数是mapreduce.job.reduce.slowstart.completedmaps
(感谢用户yegor256).
通常,如果系统一次运行多个作业,我希望保持mapred.reduce.slowstart.completed.maps
在上面0.9
.这样,当工作除了复制数据之外什么都不做时,工作不会占用减速器.如果您一次只能运行一个工作,那么这样做0.1
可能是合适的.
reduce 阶段可以在调用 reducer 之前很久就开始。一旦“a”映射器完成工作,生成的数据就会经历一些排序和混洗(包括调用组合器和分区器)。减速器“阶段”在映射器数据处理开始的那一刻开始。完成这些处理后,您将看到减速器百分比的进展。但是,还没有调用任何减速器。根据可用/使用的处理器数量、数据的性质和预期的减速器数量,您可能需要更改上面@Donald-miner 所述的参数。
归档时间: |
|
查看次数: |
33517 次 |
最近记录: |