Skip to content

Spark yarn cluster jvm永久代内存溢出导致停止

liaotian1005 edited this page Dec 4, 2018 · 1 revision

yarn cluster ,提交spark application,给resource manager ,
resource manager向node manager,启动application master也就是driver,
driver会向resource manger 申请对应的executor,
resouce manger 配分container(资源 ),
driver拿到container找node manager,启动executor
executor启动会找寻找driver注册.
appcation master知道资源,执行job,拆分stage ,提交task,调度到executor执行.

问题 yarn-cluster

运行spark sql的作业,可能碰到yarn-client模式下,可以运行,cluster无法运行的,包JVM PermGen 永久代内oom,
spark-yarn spark客户端默认有配置,指定128m 没有问题
spark-cluster 使用没有配置的 默认82m,

spark-sql解析复杂,sql本身复杂导致性能消耗,可能PermGen,占用内存较大,如果使用超过82,又在128以内,就出现上面问题

如何解决
给driver加内存

—conf spark.driver.extraJavaOptions=“-XX:PermSize=128m -xx:MaxPermSize=256m”

Clone this wiki locally