开发者社区> 问答> 正文

YarnClient模式下,执行Spark SQL报这个错:

YarnClient模式下,执行Spark SQL报这个错,Exception in thread “Thread-2” java.lang.OutOfMemoryError: PermGen space,但是在Yarn Cluster模式下正常运行,可能是什么原因?

展开
收起
茶什i 2019-10-29 14:25:06 1336 0
1 条回答
写回答
取消 提交回答
  • 1)原因查询过程中调用的是Hive的获取元数据信息、SQL解析,并且使用Cglib等进行序列化反序列化,中间可能产生较多的class文件,导致JVM中的持久代使用较多 Cluster模式的持久代默认大小是64M,Client模式的持久代默认大小是32M,而Driver端进行SQL处理时,其持久代的使用可能会达到90M,导致OOM溢出,任务失败。 yarn-cluster模式下出现,yarn-client模式运行时倒是正常的,原来在OUR_JAVA_OPTS”
    2)解决方法:在Spark的conf目录中的spark-defaults.conf里,增加对Driver的JVM配置,因为Driver才负责SQL的解析和元数据获取。配置如下: spark.driver.extraJavaOptions -XX:PermSize=128M -XX:MaxPermSize=256M

    2019-10-30 15:26:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载