Apache Spark具有3个内存块:
缓存-在您致电cache
或persist
随机播放。这是用于随机操作(分组,重新分区和)的内存块reduceByKey
。
堆。这是保留普通JVM对象的地方。
现在,我想监视作业所占用的内存量(占每个块的百分比),这样我就知道我应该将这些数字调整为什么,以使Cache和Shuffle不会溢出到磁盘,而Heap不会OOM。例如,每隔几秒钟我就会收到一个更新,例如:
Cache: 40% use (40/100 GB) Shuffle: 90% use (45/50 GB) Heap: 10% use (1/10 GB)
我知道我可以尝试使用其他技术来找到最有效的方法,但是我发现这非常费力,并且仅能够监视使用情况,这将使编写和调整Spark作业更加容易。