部署spring boot项目到spark上

先说一下开发环境大概情况:

IDE:IntelliJ IDEA

使用spring boot和gradle进行项目的构建

jdk版本 1.8,这里注意一下,开发环境打jar包时的jdk版本要和spark配置里的jdk的版本一致。


步骤

1、完成coding后,把当前module打成jar包,具体可参考  这篇文章,自行修改build.gradle打包。

成功后从目录build/libs/${module_name}.jar下取出${module_name}.jar放到部署了spark的机器上。

2、对于spring boot的项目,它的启动类一般是org.springframework.boot.loader.JarLauncher。具体可以打开${module_name}.jar查看META-INF目录下的MANIFEST.MF文件,Main-Class这一项后面的值即为启动class。这里要记下。

3、在部署了spark的机器上,在${module_name}.jar包所在的目录下新建一个start.sh文件。(这个jar包也可以放在HDFS上,我这里是放在了本地)。编辑start.sh文件如下

#!/bin/bash

spark-submit --master yarn \
    --num-executors 1 \
    --executor-memory 2G \
    --driver-memory 2G \
    --executor-cores 2 \
    --total-executor-cores 2 \
    --class org.springframework.boot.loader.JarLauncher \
    ${module_name}.jar \
这里spark-submit涉及的参数比较简单,可根据自己实际情况进行修改。其中--class要指定项目的启动类,在spring boot里,即为上述类名。

4、执行启动文件即可:bash start.sh


可能遇到的问题及解决思路

1、打包环境和spark部署环境的jdk版本不一致。

这种情况下spark-submit的时候一般会报

java.lang.UnsupportedClassVersionError unsupported major.minor version 52.0这个error。

可以在打包的时候指定jdk版本,比如在当前module和当前project的build.gradle文件里修改

sourceCompatibility=1.8
targetCompatibility=1.8
或者修改部署spark的机器上的JAVA_HOME。








你可能感兴趣的:(spark)