开发者社区> 问答> 正文

spark中如何防止standalone模式下资源分配不均匀导致内存溢出?

spark中如何防止standalone模式下资源分配不均匀导致内存溢出?

展开
收起
xin在这 2021-12-11 22:32:59 325 0
1 条回答
写回答
取消 提交回答
  • 在standalone的模式下如果配置了–total-executor-cores 和 –executor-memory 这两个参数,但是没有配置–executor-cores这个参数的话,就有可能导致,每个Executor的memory是一样的,但是cores的数量不同,那么在cores数量多的Executor中,由于能够同时执行多个Task,就容易导致内存溢出的情况。这种情况的解决方法就是同时配置–executor-cores或者spark.executor.cores参数,确保Executor资源分配均匀。

    使用rdd.persist(StorageLevel.MEMORY_AND_DISK_SER)代替rdd.cache() rdd.cache()和rdd.persist(Storage.MEMORY_ONLY)是等价的,在内存不足的时候rdd.cache()的数据会丢失,再次使用的时候会重算,而rdd.persist(StorageLevel.MEMORY_AND_DISK_SER)在内存不足的时候会存储在磁盘,避免重算,只是消耗点IO时间。

    2021-12-11 22:33:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载