编译+远程调试spark
一 编译
以spark2.4 hadoop2.8.4为例
1,spark 项目根pom文件修改
pom文件新增 <profile> <id>hadoop-2.8</id> <properties> <hadoop.version>2.8.4</hadoop.version> </properties> </profile>
maven仓库地址增加
<repository>
<id>bilibili-nexus-releases</id>
<url>http://nexus.bilibili.co/content/repositories/releases/</url>
</repository>
<repository>
<id>bilibili-nexus-snapshots</id>
<url>http://nexus.bilibili.co/content/repositories/snapshots/</url>
</repository>
2,在spark home 目录下执行
mvn -T 4 -Pyarn -Phadoop-2.8 -DskipTests clean package
3, 完成 maven编译 进行打包
在spark根目录下执行
./dev/make-distribution.sh --name -hadoop-2.8 --tgz -Dhadoop.version=2.8.4 -Phive -Phive-thriftserver -Pyarn
执行完毕在spark_home 根目录下 即生成相应版本的jar包
若想单独编译某模块 比如编译spark-core
依次执行
mvn clean install //将项目依赖拉到本地
./dev/make-distribution.sh --name hadoop2.8 --tgz -Phadoop-2.8.4 -Phive -Phive-thriftserver -pl:spark-core_2.11 -Pyarn
二 远程Debug
1. 编译远程spark项目下的文件
spark-2.4.0-bin-hadoop2.8/conf/spark-defaults.conf
增加内容如下 这个用来调试spark driver端代码
spark.driver.extraJavaOptions -agentlib:jdwp=transport=dt_socket,server=n,address=你本机的ip:5007,suspend=y
同样调试 excutor也可以如此 只需要 在spark.executor.extraJavaOptions 新增内容即可
2 我们将spark源码import到idea中
配置远程debug
这里因本地网跟远程不通 所以采用listen模式
先启动本地 idea spark项目 debug 再启动远程的spark任务
如图
下面就是 enjoy yourself