当前位置:   article > 正文

spark远程debug调试_spark 远程debug

spark 远程debug

(一)Spark本地开发环境搭建与远程debug设置

快速看完《Spark大数据处理 技术、应用与性能优化》前四章后,对Spark有了一个初步的了解,终于踏出了第一步,现在需要在Spark集群中做些测试例子,熟悉一下开发环境和开发的流程。本文主要总结了如何在本地使用Maven搭建开发环境以及如何进行远程debug。由于采用的Spark是今年5月24号才发布的Spark2.1.1,网上大多数例子都是Spark1.X,因此走了不少弯路,才搭建好开发环境。

一:版本概述

Spark版本:2.1.1 
IntelliJ IDEA:2017.1.5 
开发环境:mac 
测试环境:Linux

二:本地开发环境搭建

1、新建一个Maven项目,archetype选择scala

这里写图片描述

2、导入spark相关包

配置pom.xml,然后Maven自动下载依赖包,Spark2.X已经不提供spark-assembly-1.5.0-hadoop2.4.0.jar 之类的jar包,改成了一些小的jar包,存放在jars目录下。开发的时候可以全部导入jars目录下的jar包,但更方便的是使用maven可以方便的自动导入spark2.1.1开发所需要的包。

  1. <dependency>
  2. <groupId>org.apache.spark</groupId>
  3. <artifactId>spark-core_2.11</artifactId>
  4. <version>2.1.1</version>
  5. <scope>provided</scope>
  6. </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3、编写WordCount

  1. package com.xuxp.test
  2. import org.apache.spark.{SparkConf, SparkContext}
  3. /**
  4. * Created by xuxp on 2017/8/21.
  5. */
  6. object WordCount {
  7. def main(args: Array[String]): Unit = {
  8. if (args.length == 0) {
  9. System.err.println("Usage: SparkWordCount <inputfile> <outputfile>")
  10. System.exit(1)
  11. }
  12. val conf = new SparkConf().setAppName("WominWordCount")
  13. val sc = new SparkContext(conf)
  14. val textRdd = sc.textFile(args(0))
  15. val result = textRdd.flatMap ( line => line.split("\\s+") ).map(word => (word, 1)).reduceByKey(_ + _)
  16. result.saveAsTextFile(args(1))
  17. }
  18. }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

4、打包配置

在project settings->Artifacts新建一个JAR—>from modules with dependencies 
选择Main Class. 
这里写图片描述

配置好后Build—>Build Artifacts —>build,就能生成打包好的jar包 
这里写图片描述

5、jar包上传

配置文件上传tools—>deployment 
这里写图片描述

打开Browse Remote Host,将文件直接拖过去,就实现文件上传 
这里写图片描述

6、执行jar包

写一个执行脚本,上传后,每次只需要./run-spark.sh就能很快的执行。执行时需要保证README.md在hdfs中。 
这里写图片描述

执行完毕后,可以查询outputdir/part-00000中的文件hadoop fs -cat outputdir/part-00000 
这里写图片描述

三:远程开发调试

1、在远程服务器的bash中设置SPARK_SUBMIT_OPTS

export SPARK_SUBMIT_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=41999
  • 1
  • 1

这是临时设置,每次都需要进行设置一下,暂不永久设置。

2、在IntelliJ IDEA中配置remote debug

这里写图片描述

3、打个断点

这里写图片描述

4、在远程服务器上运行程序

运行时会出现程序挂起,监听端口中,此时进行下一步 
这里写图片描述

5、在IntelliJ IDEA中debug

出现如下情况,说明远程debug成功 
这里写图片描述
程序会继续输出,并在断点出停住。

这里写图片描述

总结

不得不说IntelliJ IDEA确实是一个非常强大的集成开发环境,提供版本管理,ssh,远程debug等强大功能,是Spark开发的利器,事实上Spark的开发团队也是使用IntelliJ IDEA来开发Spark的。

网上的有关spark的搭建文章有时候并不适合自己,需要根据自己的环境,软件的版本来选择搭建的方式。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/756978
推荐阅读
相关标签
  

闽ICP备14008679号