Hadoop can";map.tasks.maximum“;改善我的工作延迟?

Hadoop can";map.tasks.maximum“;改善我的工作延迟?,hadoop,Hadoop,在hadoop wiki中找不到对此的特定引用 假设我有一份需要100名制图员的工作,没有歪斜。 当我将“map.tasks.maximum”设置为100时,hadoop会等待它们全部完成,然后洗牌(复制到还原器),这需要等待网络带宽的时间 如果我将“map.tasks.maximum”设置为10,那么将有10代10个映射器,当每代映射器完成洗牌时,将执行1/10的数据,而下一代映射器已经在处理下一个记录 这真的会更精简并改善我的工作延迟吗?这是一个值得的目标吗?这会以牺牲集群的吞吐量为代价吗?

在hadoop wiki中找不到对此的特定引用

假设我有一份需要100名制图员的工作,没有歪斜。 当我将“map.tasks.maximum”设置为100时,hadoop会等待它们全部完成,然后洗牌(复制到还原器),这需要等待网络带宽的时间

如果我将“map.tasks.maximum”设置为10,那么将有10代10个映射器,当每代映射器完成洗牌时,将执行1/10的数据,而下一代映射器已经在处理下一个记录


这真的会更精简并改善我的工作延迟吗?这是一个值得的目标吗?这会以牺牲集群的吞吐量为代价吗?

我怀疑这会改善您的延迟
我的考虑是: 在所有映射器完成之前,任何reducer调用都无法完成,因为它无法知道最后一个映射器不会发出相同的键。所以我不希望在最后一个制图员完成之前完成更多的工作
我将尝试做的(不改变算法)是为洗牌提供更多内存,以避免溢出到磁盘
您还可以尝试压缩映射器和还原器之间的中间数据

据我所知,数据序列化是成本的重要组成部分,如果您能简化它,可能会有所帮助

那么你是说网络带宽不是这里的瓶颈,如果是的话,那么压缩是一个更好的选择?当网络瓶颈时,应该有一个阶段——在映射器和还原器之间移动大量已排序的数据。在这里,压缩会有所帮助。但我认为序列化、溢出到磁盘等比通过网络移动数据要付出更大的代价。我可以推测,好的序列化可以以每秒几MBs的速度工作,而网络移动速度大约为70…如果您的工作可以使用一个合路器,我还建议您定义一个
合路器来减少带宽使用。