IDEA远程调试spark-submit提交的jar

1、编辑代码

object WordCount {

  def main(args: Array[String]): Unit = {

    val sc = new SparkContext(new SparkConf().setAppName("WordCount "))

    val rdd: RDD[String] = sc.makeRDD(List(
      "spark hello", "hive", "hadoop hbase", "spark hadoop", "hbase"
    ))

    val value: RDD[String] = rdd.flatMap(_.split(" "))

    val mapRDD: RDD[(String, Int)] = value.map((_, 1))

    val result: RDD[(String, Int)] = mapRDD.reduceByKey(_ + _)

    result.collect().foreach(println)

  }

}

2、打开IDEA配置,配置远程连接

 其中主要配置的有两项,一个是host,一个是port。不过图中我圈出来了三处,最后一处仔细阅读其英文描述可以知道,那一串命令是需要我们拷贝添加到spark-submit提交命令的参数中的。

 3、修改spark-submit,添加远程连接的参数

spark-submit \
--master spark://bigdata.node2:7077 \
--class test.wordcount.WordCount \
--num-executors 1 \
--driver-memory 499m \
--driver-cores 1 \
--executor-memory 499m \
--executor-cores 1 \
--driver-java-options -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8888 \
/opt/spark-jar/wyt01bigdata-1.0-SNAPSHOT.jar

可以看到,我们将IDEA中生成的远程命令-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8888 添加在了spark提交命令中。这里有个参数要特别留意下,对于debug很有用,那就是suspend=y,y表示启动的JVM会暂停等待,直到IDEA调试器连接上才继续执行。如果设置suspend=n,那么远程服务不会等待IDEA连接。

另外这里还有一个需要留意的点是,因为上一步我们远程debug指定了host和port,所以这里我们尽量不要配置deploy-mode为cluster集群模式。因为集群模式是随便找个机器启动应用,很有可能不在我们监听的那台服务器启动,此时我们还要重新配置idea中监听的服务器host,除此外,我们使用的所有资源比如jar也要提前放入到hdfs文件系统中,因为只有在hdfs文件系统中,才能在任意一台worker启动driver时读取到我们需要的资源信息。所以远程debug的部署模式通常选用client(我们不配置部署模式时默认则是client

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值