《Spark大数据分析实战》——2.2节远程调试Spark程序

2.2 远程调试Spark程序
本地调试Spark程序和传统的调试单机的Java程序基本一致,读者可以参照原来的方式进行调试,关于单机调试本书暂不赘述。对于远程调试服务器上的Spark代码,首先请确保在服务器和本地的Spark版本一致。需要按前文介绍预先安装好JDK和Git。
(1)编译Spark
在服务器端和本地计算机下载Spark项目。
通过下面的命令克隆一份Spark源码:

git clone https:// github.com/apache/spark
然后针对指定的Hadoop版本进行编译:
SPARK_HADOOP_VERSION=2.3.0 sbt/sbt assembly

(2)在服务器端的配置
1)根据相应的Spark配置指定版本的Hadoop,并启动Hadoop。
2)对编译好的Spark进行配置,在conf/spark-env.sh文件中进行如下配置:

export SPARK_JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=9999"

其中“suspend=y”设置为需要挂起的模式。这样,当启动Spark的作业时候程序会自动挂起,等待本地的IDE附加(Attach)到被调试的应用程序上。address是开放等待连接的端口号。
(3)启动Spark集群和应用程序
1)启动Spark集群:

./sbin/start-all.sh
2)启动需要调试的程序,以Spark中自带的HdfsWordCount为例:
MASTER=spark:// 10.10.1.168:7077
./bin/run-example
org.apache.spark.examples.streaming.HdfsWordCount
hdfs:// localhost:9000/test/test.txt

3)如图2-7所示,执行后程序会挂起并等待本地的Intellij进行连接,并显示“Listening for transport dt_socket at address: 9999”:

2)在“Run/Debug Conf?igurations”对话框中填入需要连接的主机名和端口号以及其他参数,如图2-8所示。
3)在程序中设置断点进行调试。
通过上面的介绍,用户可以了解如何进行远程调试。对于单机调试方式则和日常开发的单机程序一样,常用方式是设置单机调试断点之后再进行调试,在这里并不再展开介绍。

时间: 2024-08-20 22:19:35

《Spark大数据分析实战》——2.2节远程调试Spark程序的相关文章

《Spark大数据分析实战》——3.4节MLlib

3.4 MLlib MLlib是构建在Spark上的分布式机器学习库,充分利用了Spark的内存计算和适合迭代型计算的优势,将性能大幅度提升.同时由于Spark算子丰富的表现力,让大规模机器学习的算法开发不再复杂.3.4.1 MLlib简介 MLlib是一些常用的机器学习算法和库在Spark平台上的实现.MLlib是AMPLab的在研机器学习项目MLBase的底层组件.MLBase是一个机器学习平台,MLI是一个接口层,提供很多结构,MLlib是底层算法实现层,如图3-17所示. MLlib中包

《Spark大数据分析实战》——3.1节SQL on Spark

3.1 SQL on Spark AMPLab将大数据分析负载分为三大类型:批量数据处理.交互式查询.实时流处理.而其中很重要的一环便是交互式查询.大数据分析栈中需要满足用户ad-hoc.reporting.iterative等类型的查询需求,也需要提供SQL接口来兼容原有数据库用户的使用习惯,同时也需要SQL能够进行关系模式的重组.完成这些重要的SQL任务的便是Spark SQL和Shark这两个开源分布式大数据查询引擎,它们可以理解为轻量级Hive SQL在Spark上的实现,业界将该类技术

《Spark大数据分析实战》——3.3节GraphX

3.3 GraphX GraphX是Spark中的一个重要子项目,它利用Spark作为计算引擎,实现了大规模图计算的功能,并提供了类似Pregel的编程接口.GraphX的出现,将Spark生态系统变得更加完善和丰富:同时以其与Spark生态系统其他组件很好的融合,以及强大的图数据处理能力,在工业界得到了广泛的应用.本章主要介绍GraphX的架构.原理和使用方式.3.3.1 GraphX简介 GraphX是常用图算法在Spark上的并行化实现,同时提供了丰富的API接口.图算法是很多复杂机器学习

《Spark大数据分析实战》——1.2节Spark生态系统BDAS

1.2 Spark生态系统BDAS 目前,Spark已经发展成为包含众多子项目的大数据计算平台.BDAS是伯克利大学提出的基于Spark的数据分析栈(BDAS).其核心框架是Spark,同时涵盖支持结构化数据SQL查询与分析的查询引擎Spark SQL,提供机器学习功能的系统MLBase及底层的分布式机器学习库MLlib,并行图计算框架GraphX,流计算框架Spark Streaming,近似查询引擎BlinkDB,内存分布式文件系统Tachyon,资源管理框架Mesos等子项目.这些子项目在

《Spark大数据分析实战》——2.1节Spark应用开发环境配置

2.1 Spark应用开发环境配置 Spark的开发可以通过Intellij或者Eclipse IDE进行,在环境配置的开始阶段,还需要安装相应的Scala插件.2.1.1 使用Intellij开发Spark程序 本节介绍如何使用Intellij IDEA构建Spark开发环境和源码阅读环境.由于Intellij对Scala的支持更好,目前Spark开发团队主要使用Intellij作为开发环境. 1.?配置开发环境 (1)安装JDK 用户可以自行安装JDK8.官网地址:http://www.or

《Spark大数据分析实战》——3.2节Spark Streaming

3.2 Spark StreamingSpark Streaming是一个批处理的流式计算框架.它的核心执行引擎是Spark,适合处理实时数据与历史数据混合处理的场景,并保证容错性.下面将对Spark Streaming进行详细的介绍.3.2.1 Spark Streaming简介Spark Streaming是构建在Spark上的实时计算框架,扩展了Spark流式大数据处理能力.Spark Streaming将数据流以时间片为单位进行分割形成RDD,使用RDD操作处理每一块数据,每块数据(也就

《Spark大数据分析实战》——2.3节Spark编译

2.3 Spark编译用户可以通过Spark的默认构建工具SBT进行源码的编译和打包.当用户需要对源码进行二次开发时,则需要对源码进行增量编译,通过下面的方式读者可以实现编译和增量编译.(1)克隆Spark源码可通过克隆的方式克隆Spark源码,如图2-9所示. git clone https:// github.com/apache/spark 这样将会从github将Spark源码下载到本地,建立本地的仓库.(2)编译Spark源码在Spark项目的根目录内执行编译和打包命令(如图2-10所

《Spark大数据分析实战》——3.5节本章小结

3.5 本章小结本章主要介绍了BDAS中广泛应用的几个数据分析组件.SQL on Spark提供在Spark上的SQL查询功能.让用户可以基于内存计算和SQL进行大数据分析.通过Spark Streaming,用户可以构建实时流处理应用,其高吞吐量,以及适合历史和实时数据混合分析的特性使其在流数据处理框架中突出重围.GraphX充当Spark生态系统中图计算的角色,其简洁的API让图处理算法的书写更加便捷.最后介绍了MLlib--Spark上的机器学习库,它充分利用Spark内存计算和适合迭代的

《Spark大数据分析实战》——1.5节本章小结

1.5 本章小结本章首先介绍了Spark分布式计算平台的基本概念.原理以及Spark生态系统BDAS之上的典型组件.Spark为用户提供了系统底层细节透明.编程接口简洁的分布式计算平台.Spark具有内存计算.实时性高.容错性好等突出特点.同时本章介绍了Spark的计算模型,Spark会将应用程序整体翻译为一个有向无环图进行调度和执行.相比MapReduce,Spark提供了更加优化和复杂的执行流.读者还可以深入了解Spark的运行机制与Spark算子,这样能更加直观地了解API的使用.Spar