1. 程式人生 > >部署spring boot專案到spark上

部署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。