Spark基础随笔:Spark1.6 Idea下远程调试的2种方法
2016-09-05 23:33
609 查看
使用的开发工具:scala2.10.4、Idea16、JDK8
对于电脑配置不错或和Spark集群在同一个网下的朋友,可以使用方法1;若不是请使用方法2
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
object WordCount {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setAppName("SparkTest")
//设置Master_IP
.setMaster("spark://1.185.74.124:7077")
//提交的jar包在你本机上的位置
.setJars(List("C:\\Users\\Administrator\\IdeaProjects\\Spark2.1.0\\out\\artifacts\\Spark2_1_0_jar\\Spark2.1.0.jar"))
//设置driver端的ip,这里是你本机的ip
.setIfMissing("spark.driver.host", "172.18.18.114")
val sc = new SparkContext(sparkConf)
println("SparkTest...")
sc.stop
}效果图:
地址最后面是对应的版本号,下载源码便于看注释
所以请先启动集群
修改成
$JAVA_OPTS 为我们添加的参数,下面在命令行中为其声明(建议写到配置文件中)
上传之前生成的jar包到master节点,在命令行中执行
出现如下结果,表示master正在监听5005端口
添加Remote组件,填写master的ip的监听端口
JAVA_OPTS参数说明:
参考文章列表:
http://blog.csdn.net/lovehuangjiaju/article/details/49227919 Spark1.5远程调试
http://www.thebigdata.cn/QiTa/12370.html 调试参数
对于电脑配置不错或和Spark集群在同一个网下的朋友,可以使用方法1;若不是请使用方法2
方法1
把自己的电脑作为Driver端,直接把jar包提交到集群,此时Spark的Master与Worker会一直和本机的Driver端保持连接,调试比较方便。import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
object WordCount {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setAppName("SparkTest")
//设置Master_IP
.setMaster("spark://1.185.74.124:7077")
//提交的jar包在你本机上的位置
.setJars(List("C:\\Users\\Administrator\\IdeaProjects\\Spark2.1.0\\out\\artifacts\\Spark2_1_0_jar\\Spark2.1.0.jar"))
//设置driver端的ip,这里是你本机的ip
.setIfMissing("spark.driver.host", "172.18.18.114")
val sc = new SparkContext(sparkConf)
println("SparkTest...")
sc.stop
}效果图:
方法2
1.导入依赖的包和源码
在下载spark中到的导入spark的相关依赖了包和其源码.zip,相关源码的下载地址:https://github.com/apache/spark/tree/v1.6.0地址最后面是对应的版本号,下载源码便于看注释
2.使用官方求Pi的例子
import org.apache.spark.{SparkConf, SparkContext} object FirstDemo { def main(args: Array[String]) { val conf = new SparkConf().setAppName("Spark Pi") val spark = new SparkContext(conf) val slices = if (args.length > 0) args(0).toInt else 2 val n = 100000 * slices val count = spark.parallelize(1 to n, slices).map { i => val x = Math.random * 2 - 1 val y = Math.random * 2 - 1 if (x * x + y * y < 1) 1 else 0 }.reduce(_ + _) println("*****Pi is roughly " + 4.0 * count / n) spark.stop() } }
3.导出项目jar包
确认之后->build->build artifacts->rebuild4.启动集群
先修改配置文件,再启动集群可能会导致master无法正常启动,下次想取消远程调试,可以把配置文件再改回来[root@master sbin]# jps 30212 SecondaryNameNode 32437 -- main class information unavailable 30028 NameNode
所以请先启动集群
[root@master sbin]# ./start-all.sh starting org.apache.spark.deploy.master.Master, logging to /hadoop/spark-1.6.0-bin-hadoop2.6/logs/spark-root-org.apache.spark.deploy.master.Master-1-master.out slave01: starting org.apache.spark.deploy.worker.Worker, logging to /hadoop/spark-1.6.0-bin-hadoop2.6/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-slave01.out
5.修改配置文件spark-class
spark-class在SPARK_HOME/bin下done < <("$RUNNER" -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main "$@")
修改成
done < <("$RUNNER" -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main $JAVA_OPTS "$@")
$JAVA_OPTS 为我们添加的参数,下面在命令行中为其声明(建议写到配置文件中)
export JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
6.提交Spark,开启端口监听
上传之前生成的jar包到master节点,在命令行中执行spark-submit --master spark://master:7077 --class FirstDemo Spark02.jar
出现如下结果,表示master正在监听5005端口
[root@master ~]# spark-submit --master spark://master:7077 --class FirstDemo Spark02.jar Listening for transport dt_socket at address: 5005
7.Idea配置远程
添加Remote组件,填写master的ip的监听端口
8.启动调试
JAVA_OPTS参数说明:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 参数说明: -Xdebug 启用调试特性 -Xrunjdwp 启用JDWP实现,包含若干子选项: transport=dt_socket JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。 address=5005 JVM在5005端口上监听请求,这个设定为一个不冲突的端口即可。 server=y y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。 suspend=y y表示启动的JVM会暂停等待,直到调试器连接上才继续执行。suspend=n,则JVM不会暂停等待。
参考文章列表:
http://blog.csdn.net/lovehuangjiaju/article/details/49227919 Spark1.5远程调试
http://www.thebigdata.cn/QiTa/12370.html 调试参数
相关文章推荐
- Spark基础随笔:Spark1.6 Idea下远程调试的2种方法
- Spark基础随笔:Spark1.6 Idea下远程调试的2种方法
- Spark1.6 Idea下远程调试
- Spark - 使用IDEA远程调试位于Yarn-Client模式下的Spark集群相关配置
- Win下用idea远程在hadoop上调试spark程序及读取hbase
- idea调试远程spark服务器(2017.04图文,非转载)
- 从零搭建基于sbt和IDEA的远程spark调试工程
- Idea 远程运行Spark程序及 javax.servlet.FilterRegistration 错误解决方法
- Spark远程调试配置,在IDEA中的配置
- idea远程调试 spark
- 4000 win7下用Intelij IDEA 远程调试spark standalone 集群
- (二)win7下用Intelij IDEA 远程调试spark standalone 集群
- (二)win7下用Intelij IDEA 远程调试spark standalone 集群
- Tomcat 8 配合 IDEA 14 远程调试的方法
- 使用eclipse+gdb进行arm板嵌入式linux远程调试的配置方法
- 在IDEA下远程调试JavaScript
- Java Applet 程序的远程调试方法
- VS2005远程调试的方法
- linux下远程调试windows上jlink gdbserver的方法
- 代码为基础的调试方法