MAPREDUCE服务 MRS-增强有限内存下的稳定性:配置场景

时间:2024-07-02 16:39:32

配置场景

当前Spark SQL执行一个查询时需要使用大量的内存,尤其是在做聚合(Aggregate)和关联(Join)操作时,此时如果内存有限的情况下就很容易出现OutOfMemoryError。有限内存下的稳定性就是确保在有限内存下依然能够正确执行相关的查询,而不出现OutOfMemoryError。

有限内存并不意味着内存无限小,它只是在内存不足于放下大于内存可用总量几倍的数据时,通过利用磁盘来做辅助从而确保查询依然稳定执行,但依然有一些数据是必须留在内存的,如在做涉及到Join的查询时,对于当前用于Join的相同key的数据还是需要放在内存中,如果该数据量较大而内存较小依然会出现OutOfMemoryError。

有限内存下的稳定性涉及到3个子功能:

  1. ExternalSort

    外部排序功能,当执行排序时如果内存不足会将一部分数据溢出到磁盘中。

  2. TungstenAggregate

    新Hash聚合功能,默认对数据调用外部排序进行排序,然后再进行聚合,因此内存不足时在排序阶段会将数据溢出到磁盘,在聚合阶段因数据有序,在内存中只保留当前key的聚合结果,使用的内存较小。

  3. SortMergeJoin、SortMergeOuterJoin

    基于有序数据的等值连接。该功能默认对数据调用外部排序进行排序,然后再进行等值连接,因此内存不足时在排序阶段会将数据溢出到磁盘,在连接阶段因数据有序,在内存中只保留当前相同key的数据,使用的内存较小。

support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1948.html