我正在使用Yarn作为资源管理器在AWS EMR上运行一个长期的火花作业。运行一段时间后,一些节点停止响应,看着Ganglia我可以看到我们的内存不足。
一旦发生这种情况,应用程序将被终止并恢复内存。但是,如果我尝试使用:sc.getExecutorStorageStatus()[executor].memUsed()
和sc.getExecutorStorageStatus()[executor].memRemaining()
监视内存,系统会报告只使用了140Mb的25Gb(在崩溃之前)。查看EMR集群本身,hadoop
和yarn
进程似乎消耗了资源。
有没有办法以编程方式确定Yarn在Spark应用程序运行时使用的资源?