可以“map.tasks.maximum”改善我的作业延迟吗?

pdkcd3nj  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(288)

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

roejwanj

roejwanj1#

我怀疑这会改善你的潜伏期。
我的考虑是:任何reducer调用都不能在所有Map器完成之前完成,因为它不能知道最后一个Map器不会发出相同的键。所以我不希望在最后一个制图员完成之前完成更多的工作
我将尝试做的(不改变算法)是为洗牌提供更多的内存,以避免溢出到磁盘。
您还可以尝试压缩Map器和还原器之间的中间数据。
据我所知,数据序列化是成本的重要组成部分,如果您能简化它,可能会有所帮助。

相关问题