相关疑难解决方法(0)

如何在Apache Spark应用程序中优化shuffle溢出

我正在运行带有2名工作人员的Spark流应用程序.应用程序具有联接和联合操作.

所有批次都已成功完成,但注意到随机溢出指标与输入数据大小或输出数据大小不一致(溢出内存超过20次).

请在下图中找到火花阶段的详细信息: 在此输入图像描述

经过对此的研究,发现了

当没有足够的内存用于随机数据时,会发生随机溢出.

Shuffle spill (memory) - 溢出时内存中数据的反序列化形式的大小

shuffle spill (disk) - 溢出后磁盘上数据序列化形式的大小

由于反序列化数据比序列化数据占用更多空间.所以,Shuffle溢出(内存)更多.

注意到这个溢出内存大小非常大,输入数据很大.

我的疑问是:

这种溢出是否会对性能产生很大影响?

如何优化内存和磁盘的溢出?

是否有可以减少/控制这种巨大溢出的Spark Properties?

apache-spark spark-streaming apache-spark-1.4

39
推荐指数
2
解决办法
2万
查看次数