使用的开发工具:scala2.10.4、Idea16、JDK8

1.导入依赖的包和源码

在下载Spark中到的导入spark的相关依赖了包和其源码.zip,相关源码的下载地址:https://github.com/apache/spark/tree/v1.6.0

地址最后面是对应的版本号,下载源码便于看注释

2.使用官方求Pi的例子

  1. import org.apache.spark.{SparkConf, SparkContext}
  2. object FirstDemo {
  3. def main(args: Array[String]) {
  4. val conf = new SparkConf().setAppName("Spark Pi")
  5. val spark = new SparkContext(conf)
  6. val slices = if (args.length > 0) args(0).toInt else 2
  7. val n = 100000 * slices
  8. val count = spark.parallelize(1 to n, slices).map { i =>
  9. val x = Math.random * 2 - 1
  10. val y = Math.random * 2 - 1
  11. if (x * x + y * y < 1) 1 else 0
  12. }.reduce(_ + _)
  13. println("*****Pi is roughly " + 4.0 * count / n)
  14. spark.stop()
  15. }
  16. }

3.导出项目jar包

确认之后->build->build artifacts->rebuild

4.启动集群

先修改配置文件,再启动集群可能会导致master无法正常启动,下次想取消远程调试,可以把配置文件再改回来

  1. [root@master sbin]# jps
  2. 30212 SecondaryNameNode
  3. 32437 -- main class information unavailable
  4. 30028 NameNode

所以请先启动集群

  1. [root@master sbin]# ./start-all.sh
  2. 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
  3. 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下

  1. done < <("$RUNNER" -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main "$@")

修改成

  1. done < <("$RUNNER" -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main $JAVA_OPTS "$@")

$JAVA_OPTS 为我们添加的参数,下面在命令行中为其声明(建议写到配置文件中)

  1. export JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

6.提交Spark,开启端口监听

上传之前生成的jar包到master节点,在命令行中执行

  1. spark-submit --master spark://master:7077 --class FirstDemo Spark02.jar

出现如下结果,表示master正在监听5005端口

  1. [root@master ~]# spark-submit --master spark://master:7077 --class FirstDemo Spark02.jar
  2. Listening for transport dt_socket at address: 5005

7.Idea配置远程

添加Remote组件,填写master的ip的监听端口

8.启动调试

JAVA_OPTS参数说明:

  1. -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
  2. 参数说明:
  3. -Xdebug 启用调试特性
  4. -Xrunjdwp 启用JDWP实现,包含若干子选项:
  5. transport=dt_socket JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。
  6. address=5005 JVM在5005端口上监听请求,这个设定为一个不冲突的端口即可。
  7. server=y y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。
  8. 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下远程调试的更多相关文章

  1. 在Eclipse下远程调试Beagleboneblack

    安装调试器 1. gdbserver 2. gdb-multiarch 建立工程 新建一个cpp工程,ToolChains选择Cross GCC 这里使用的是arm-linux-gnueabihf-的 ...

  2. hadoop下远程调试方法

    JPDA 简介Sun Microsystem 的 Java Platform Debugger Architecture (JPDA) 技术是一个多层架构,使您能够在各种环境中轻松调试 Java 应用 ...

  3. 在eclipse下远程调试hadoop2.0

    在<在eclipse下编译hadoop2.0源码>一文中,我详细介绍了如何在eclipse环境和命令行环境下编译hadoop2.0源代码,并简单介绍了如何构建hadoop环境,这篇文章将着 ...

  4. .NET C#微信公众号开发远程断点调试(本地远程调试生产环境代码)

    最近在做微信公众号开发,由于之前没有接触过,突然发现调试不方便,不方便进行断点跟踪调试.因为微信那边绑定的服务器地址必须是公网地址,但是还是想进行断点调试(毕竟这样太方便了,程序有Bug,一步步断点跟 ...

  5. Tomcat配置远程调试

    ===========方法1================================ tomcat7 :catalina.bat jpda start,调试端口默认为8000 ======== ...

  6. 在ubunut下使用pycharm和eclipse进行python远程调试

    我比较喜欢Pycharm,因为这个是JetBrains公司出的python IDE工具,该公司下的java IDE工具--IDEA,无论从界面还是操作上都甩eclipse几条街,但项目组里有些人使用e ...

  7. linux下的java远程调试jpda+tomcat

    项目放到linux服务器了,服务器的环境或者数据可能和我们本地不一样,这个时候我们可能需要远程的断点进行调试,来查看请求过程中的各个变量的值.这里我们的应用服务器用的tomcat5.5.17 这个时候 ...

  8. Linux下Tomcat进行远程调试

    1.更改tomcat远程调试端口(可以使用默认端口不更改) 打开目录下的catalina.sh文件,找到JPDA_ADDRESS=”8000”,8000代表远程调试端口,可以更改成其他没有被占用的端口 ...

  9. Window下Eclipse+Tomcat远程调试

    需求:       项目在开发环境跑得好好的,但是当发布到服务器上时,却出现了一些意外的问题.服务器上不可能给你装IDE调试工具啊,又没有很好的日志帮助下,这时候就用到了JVM的Java Platfo ...

随机推荐

  1. CriticalSection 临界区

    // 临界区.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h"#include<windows.h>#include<iost ...

  2. RNN - LSTM - GRU

    循环神经网络 (Recurrent Neural Network,RNN) 是一类具有短期记忆能力的神经网络,因而常用于序列建模.本篇先总结 RNN 的基本概念,以及其训练中时常遇到梯度爆炸和梯度消失 ...

  3. jsf的运行原理及生命周期

    一.jsf(java server faces)的运行原理(工作方式) 1.jsf应用是事件驱动的,当一个事件发生时(比如用户单击一个按钮),事件通知通过HTTP发往服务器,服务器端使用叫做Faces ...

  4. KBMMW 的日志管理器

    kbmmw 4.82 最大的新特性就是增加了 日志管理器. 新的日志管理器实现了不同类型的日志.断言.异常处理.计时等功能. 首先.引用kbmMWLog.pas 单元后,系统就默认生成一个IkbmMW ...

  5. scss学习笔记

    1.引用父选择符: & #main { color: black; a { font-weight: bold; &:hover { color: red; } } } 2.font: ...

  6. Magento邮件发送完美设置

    Magento新站上线伊始,不料在邮件上遇到了问题.此时常用的邮件模板已经编辑完毕,诸如New Account, New Order, Password Forget等. CentOS下发送邮件很简单 ...

  7. 51Nod 1009:1009 数字1的数量 (思维)

    1009 数字1的数量  基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的 ...

  8. hdu2083 简易版之最短距离 排序水题

    给出数轴n个坐标,求一个点到所有点距离总和最小.排序后最中间一个点或两个点之间就是最优 #include<stdio.h> #include<algorithm> using ...

  9. JQuery输入框获取/失去焦点行为

    //搜索框获取焦点清除内容 $(function() { $("input").focus(function() { //获取焦点,清空默认内容 $(this).css('colo ...

  10. pycharm PYTHONPATH

    Hi brandenju! I believe os.chdir doesn't affect PYTHONPATH so changing your working directory at run ...