Spark之坑坑坑----troubleshooting


Spark之troubleshooting

1.yarn-client模式引起网卡流量激增问题?

   一个Driver和Executor中的task频繁进行通信,通信消息特别多,通信的频率特别高, 运行完一个stage,接着运行下一个stage,又是频繁的通信。
    解决: yarn-cluster
 
     yarn-client模式,通常咱们就只会使用在测试环境中,你写好了某个spark作业,打了一个jar包, 在某台测试机器上,用yarn-client模式去提交一下。因为测试的行为是偶尔为之的, 不会长时间连续提交大量的spark作业去测试。 还有一点好处,yarn-client模式提交, 可以在本地机器观察到详细全面的log通过查看log,可以去解决线上报错的故障(troubleshooting)、 对性能进行观察并进行性能调优。
    实际上线了以后, 在生产环境中,都得用yarn-cluster模式,去提交你的spark作业。
yarn-cluster模式,就跟你的本地机器引起的网卡流量激增的问题,就没有关系了。也就是说,
就算有问题,也应该是yarn运维团队和基础运维团队之间的事情了。 他们去考虑Yarn集群里面每台机器是虚拟机还是物理机呢?网卡流量激增后会不会对其他东西产生影响呢? 如果网络流量激增,要不要给Yarn集群增加一些网络带宽等等这些东西。那就是他们俩个团队的事情了, 和你就没有关系了
 
    大公司都是通过Yarn来进行调度, mapreduce on yarn、spark on yarn、甚至 storm on yarn

2.yarn-cluster 会报JVM栈内存溢出问题?

问题描述一:
    yarn-client   PermGen 128M
    yarn-cluster  PermGen    82M
   有的时候,运行一些包含了spark sql的spark作业,可能会碰到yarn-client模式下,可以正常提交运行;
yarn-cluster模式下,可能是无法提交运行的,会报出JVM的PermGen(永久代)的内存溢出,OOM。
PermGen(永久代)-->JVM里面的一个区域,就是会放Class里面一些字符串常量这些东西的。
 
   yarn-client模式下,driver是运行在本地机器上的,spark使用的JVM的PermGen的配置,
是本地的spark-class文件(spark客户端是默认有配置的),JVM的永久代的大小是128M,
这个是没有问题的;但是呢,在yarn-cluster模式下,driver是运行在yarn集群的某个节点上的,
使用的是没有经过配置的默认设置(PermGen永久代大小),82M。
 
   spark-sql,它的内部是要进行很复杂的SQL的语义解析、语法树的转换等等,特别复杂,
在这种复杂的情况下,如果说你的sql本身特别复杂的话,很可能会比较导致性能的消耗,内存的消耗。
可能对PermGen永久代的占用会比较大。
 
   所以,此时,如果对永久代的占用需求,超过了82M的话,但是呢又在128M以内;就会出现如上所述的问题,
yarn-client模式下,默认是128M,这个还能运行;如果在yarn-cluster模式下,默认是82M,就有问题了。
会报出PermGen Out of Memory error log。
 
问题解决:
        spark-submit提交任务的脚本中,加入以下配置即可:
          --conf spark.driver.extraJavaOptions="-XX:PermSize=128M -XX:MaxPermSize=256M"
 
问题描述二:
    spark sql,sql,要注意,一个问题
                                            JVM Stack Memory Overflow,栈内存溢出
    sql,有大量的or语句。比如where keywords='' or keywords='' or keywords='' 当达到or语句,有成百上千的时候,此时可能就会出现一个driver端的jvm stack overflow, JVM栈内存溢出的问题
    JVM栈内存溢出,基本上就是由于调用的方法层级过多,因为产生了大量的,非常深的, 超出了JVM栈深度限制的,递归。递归方法。我们的猜测,spark sql,有大量or语句的时候, spark sql内部源码中,在解析sql,比如转换成语法树,或者进行执行计划的生成的时候, 对or的处理是递归。or特别多的话,就会发生大量的递归。
 
问题解决࿱
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值