spark远程debug之调试spark on yarn 程序(基于CDH平台,1.6.0版本)

简介
        由于 spark有多种运行模式,远程调试的时候,虽然大体步骤相同,但是还是有小部分需要注意的地方,这里记录一下调试运行在spark on yarn模式下的程序。

环境准备
        需要完好的Hadoop,spark集群,以便于提交spark on yarn程序。我这里是基于CDH的环境
         

步骤
            1.随便写个spark程序,比如序列化一个集合,然后求和。然后使用maven打包,上传至集群。可以先提交运行一次,确保可以运行成功。
                                    
            2.要让远程的spark程序停下来。有两种方式,一种需要修改配置文件,个人不喜欢这种强侵入的做法,所以只用下面这种简单的不用修改任何东西的方式:
                        在spark提交程序命令中加入参数:--driver-java-options "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787",其中端口可以自己随便定义,别选常用的以免重复即可
                        例如我的提交命令如下:
[root@kjtlxsvr5 bin]# ./spark-submit --class cn.spark.study.core.ParallelizeCollection --master yarn-cluster --num-executors 3 --executor-cores 2 --executor-memory 1G --driver-java-options "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8787" /home/spark-study-scala-0.0.1-SNAPSHOT-jar-with-dependencies.jar
           
            3.在IDEA中配置远程调试。
                        ①找到工具栏,点击:RUN  ->   Edit Configurations
                        ②添加配置
                            

                         ③输入远程主机的地址和端口号(与命令脚本中的端口号要一致),应用确定
                            
                    
            4.然后在主面板上,选择自己刚刚添加的配置,然后点击debug按钮。
                

            5.如果运气够好,在下面的提示框中会出现已经建立好连接的提示。如果运气不够好,则会提示无法建立连接。为什么呢?这是因为 在spark on yarn 模式下,当执行提交spark程序的命令后,那台节点会向yarn 的 ResourceManager申请启动ApplicationMaster,相当于spark standalone模式的driver,用来管理该spark程序的运行。但是ResourceManager内部启动ApplicationMaster,会有自己的判断逻辑,会在某个 NodeManager上面启动ApplicationMaster,这里不过多介绍,姑且理解为随机吧。所以如果刚好上面IDEA远程调试写的地址,就是启动ApplicationMaster的地址,那就能连上了,如果不是,那就连不上。
现在有两个办法可以解决这个问题。
第一个办法是节点少的话,通过修改上面IDEA远程主机地址来一个一个试。
第二办法可以精确知道ApplicationMaster在哪里:
①通过CDH进入yarn的应用程序界面

②然后点击进入该程序的详细信息界面,如下图就可以知道Applicationmaster在哪台NodeManager上:


③可以去该节点查看进程,的确有一个ApplicationMaster,然后在IDEA中修改为该远程主机地址,开始debug程序看源码吧!
                
              
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值