Apache Spark有3块内存:
cache
或persist
reduceByKey
。现在我想通过一个作业监视每个块的%使用的内存量,这样我就可以知道我应该调整这些数字,以便Cache和Shuffle不会溢出到磁盘并使堆不是OOM。例如。每隔几秒我就得到一次更新:
Cache: 40% use (40/100 GB)
Shuffle: 90% use (45/50 GB)
Heap: 10% use (1/10 GB)
我知道我可以尝试使用其他技术找到最佳点,但我发现这非常费力,只是能够监控使用情况会使编写和调优Spark工作变得更加容易。