部署spring boot專案到spark上
阿新 • • 發佈:2019-02-13
先說一下開發環境大概情況:
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檔案如下
這裡spark-submit涉及的引數比較簡單,可根據自己實際情況進行修改。其中--class要指定專案的啟動類,在spring boot裡,即為上述類名。#!/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 \
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。