Apache spark 当连续执行多个任务时,为什么spark executor会耗尽内存?
请参阅后续更新 请注意,我对增加此过程的并行性不感兴趣。我试图理解执行器内存模型 假设我的应用程序被分解为1个阶段(几个映射器、过滤器、将结果存储到hdfs[换句话说,没有还原器]) 假设我有:Apache spark 当连续执行多个任务时,为什么spark executor会耗尽内存?,apache-spark,yarn,Apache Spark,Yarn,请参阅后续更新 请注意,我对增加此过程的并行性不感兴趣。我试图理解执行器内存模型 假设我的应用程序被分解为1个阶段(几个映射器、过滤器、将结果存储到hdfs[换句话说,没有还原器]) 假设我有: 10个执行器(每个执行器1个内核,每个执行器5 GB) 10个分区 10个任务(我知道每个任务需要5 GB才能成功完成) 我最终完成了10个任务,每个任务都在一个执行器上成功运行 现在相同的应用程序和相同的设置,但这次我减少了执行者的数量: 5个执行器(每个执行器1个内核,每个执行器5 GB) 1
- 10个执行器(每个执行器1个内核,每个执行器5 GB)
- 10个分区
- 10个任务(我知道每个任务需要5 GB才能成功完成)
- 5个执行器(每个执行器1个内核,每个执行器5 GB)
- 10个分区
- 10个任务(我知道每个任务需要5 GB才能成功完成)
跟进 执行器失败的原因是因为我做了大量的字符串操作,并且配置了
spark.warn.executor.memoryOverhead
太小(512 MB)
一旦我解决了这个问题,我重复了这个实验,并且能够使用5个执行者成功地处理10个任务
我把这个问题和调查结果作为文件留在这里,以防有人有同样的问题