Spark1.6 Idea下远程调试
使用的开发工具:scala2.10.4、Idea16、JDK8
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->rebuild
4.启动集群
先修改配置文件,再启动集群可能会导致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 调试参数
Spark1.6 Idea下远程调试的更多相关文章
- 在Eclipse下远程调试Beagleboneblack
安装调试器 1. gdbserver 2. gdb-multiarch 建立工程 新建一个cpp工程,ToolChains选择Cross GCC 这里使用的是arm-linux-gnueabihf-的 ...
- hadoop下远程调试方法
JPDA 简介Sun Microsystem 的 Java Platform Debugger Architecture (JPDA) 技术是一个多层架构,使您能够在各种环境中轻松调试 Java 应用 ...
- 在eclipse下远程调试hadoop2.0
在<在eclipse下编译hadoop2.0源码>一文中,我详细介绍了如何在eclipse环境和命令行环境下编译hadoop2.0源代码,并简单介绍了如何构建hadoop环境,这篇文章将着 ...
- .NET C#微信公众号开发远程断点调试(本地远程调试生产环境代码)
最近在做微信公众号开发,由于之前没有接触过,突然发现调试不方便,不方便进行断点跟踪调试.因为微信那边绑定的服务器地址必须是公网地址,但是还是想进行断点调试(毕竟这样太方便了,程序有Bug,一步步断点跟 ...
- Tomcat配置远程调试
===========方法1================================ tomcat7 :catalina.bat jpda start,调试端口默认为8000 ======== ...
- 在ubunut下使用pycharm和eclipse进行python远程调试
我比较喜欢Pycharm,因为这个是JetBrains公司出的python IDE工具,该公司下的java IDE工具--IDEA,无论从界面还是操作上都甩eclipse几条街,但项目组里有些人使用e ...
- linux下的java远程调试jpda+tomcat
项目放到linux服务器了,服务器的环境或者数据可能和我们本地不一样,这个时候我们可能需要远程的断点进行调试,来查看请求过程中的各个变量的值.这里我们的应用服务器用的tomcat5.5.17 这个时候 ...
- Linux下Tomcat进行远程调试
1.更改tomcat远程调试端口(可以使用默认端口不更改) 打开目录下的catalina.sh文件,找到JPDA_ADDRESS=”8000”,8000代表远程调试端口,可以更改成其他没有被占用的端口 ...
- Window下Eclipse+Tomcat远程调试
需求: 项目在开发环境跑得好好的,但是当发布到服务器上时,却出现了一些意外的问题.服务器上不可能给你装IDE调试工具啊,又没有很好的日志帮助下,这时候就用到了JVM的Java Platfo ...
随机推荐
- js根据选中的复选框,隐藏那一行
如图,选择复选框,点击“隐藏”按钮,隐藏选中行 1.JavaScript代码: function getCheckedIds() { var checkedSubject = $('#showSbgl ...
- 冷知识:excel 2013有多少行列
XFD1048576 列:24*26*26+6*26+4=16384 行:2^20=1048576
- C#读取Access数据表中某一列内容,保存至数组
string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=product.mdb";OleDbConnecti ...
- python3 线性同余发生器 ( random 随机数生成器 ) 伪随机数产生周期的一些探究
import random x=[str(random.randint(0, 5)) for i in range(10)] x_str=''.join(x) y=[str(random.randin ...
- IplImage 与mat之间的转换及释放内存
IplImage *x = cvLoadImage(savefilename, ); Mat img(x,true); cvReleaseImage(&x); 完
- [Machine Learning & Algorithm] 随机森林(Random Forest)-转载
作者:Poll的笔记 博客出处:http://www.cnblogs.com/maybe2030/ 阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 ...
- ubuntu12.04 alternate win7 双系统安装
ubuntu alternate的安装比desktop复杂一点,因为alternate的安装过程有个步骤是检测cd-rom,如果你是刻盘安装,自然没问题,但是,现在的安装一般是将系统刻到U盘里,或者在 ...
- Codeforces 617B:Chocolate(思维)
题目链接http://codeforces.com/problemset/problem/617/B 题意 有一个数组,数组中的元素均为0或1 .要求将这个数组分成一些区间,每个区间中的1的个数均为1 ...
- POJ 3069:Saruman's Army
Saruman's Army Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13242 Accepted: 6636 D ...
- (1)什么是socket(套接字)
什么是套接字socket socket把传输层以下的协议都封装成了简单的接口,我编写基于网络通信的软件只需要调用这些接口即可,写出的程序自然是遵循tcp/udp协议的.... 什么是互联网 互联网=物 ...