Spark Troubleshooting

控制reduce端緩衝大小以避免OOM

在Shuffle過程,reduce端task並不是等到map端task將其數據全部寫入磁盤後再去拉取,而是map端寫一點數據,reduce端task就會拉取一小部分數據,然後立即進行後面的聚合、算子函數的使用等操作。

reduce端task能夠拉取多少數據,由reduce拉取數據的緩衝區buffer來決定,因爲拉取過來的數據都是先放在buffer中,然後再進行後續的處理,buffer的默認大小爲48MB。
reduce端task會一邊拉取一邊計算,不一定每次都會拉滿48MB的數據,可能大多數時候拉取一部分數據就處理掉了。
雖然說增大reduce端緩衝區大小可以減少拉取次數,提升Shuffle性能,但是有時map端的數據量非常大,寫出的速度非常快,此時reduce端的所有task在拉取的時候,有可能全部達到自己緩衝的最大極

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章