CDH 5.16 oozie 整合 spark2 設定筆記

CDH 5.16、oozie、spark2 Integration、SparkMain Class not found。

Cloudera 官方釋出的 Hadoop package 與一般我們在網路上能自行下載的 Hadoop 包有點不一樣。

在 oozie 整合 spark 2 的需求上又是一個坑,剛好在工作上遇到了,花了一些時間解決掉,將設定步驟一一記錄起來供日後參考用。

參考文章:https://blog.csdn.net/qq_24908345/article/details/80017660

 

問題描述:

原本我們的程式是使用 spark 1.6 做開發,但考量到日後程式的維護與更新,小組成員討論後毅然決然決定用 spark 2 當作日後開發的依據。

不料在我們以 spark 2 為基底將開發的程式包成 jar 檔,想要用 oozie workflow 的方式呼叫時,卻出現了 SparkMain Class not found 的問題。

 

解決方式:

我們使用的是 CDH 5.16,內建自帶整合 spark 1.6,若要使用 spark 2 進行執行,需額外自行安裝 spark 2 後,做一些設定,經過不斷的嘗試,最後統整步驟如下。

 

1.建立 spark2 hdfs 資料夾,自行引入 spark2 相關 jar 檔到 oozie 執行參照路徑下

中間有出現日期的資料夾,會依據你建立安裝的時間不同而改變

hadoop fs -mkdir /user/oozie/share/lib/lib_202011300153041/spark2

hadoop fs -put /opt/cloudera/parcels/SPARK2-2.4.0.cloudera2-1.cdh5.13.3.p01041012/lib/spark2/jars /user/oozie/share/lib/lib_202011300153041/spark2

hadoop fs -cp /user/oozie/share/lib/lib_202011300153041/spark/oozie-sharelib-spark-4.1.0-cdh5.16.2.jar /user/oozie/share/lib/lib_202011300153041/spark2

hadoop fs -cp /user/oozie/share/lib/lib_202011300153041/spark/oozie-sharelib-spark.jar /user/oozie/share/lib/lib_202011300153041/spark2

 

2.執行 oozie admin -sharelibupdate 更新參照

oozie admin -sharelibupdate

3.執行 oozie admin -shareliblist 確認 spark2 路徑已在參照內

oozie admin -sharelinlist

4.於呼叫 oozie workflow 的程式增加以下設定,告訴 oozie 請用 spark2 執行你的 jar 檔

conf.setProperty("oozie.action.sharelib.for.spark", "spark2")

完成後,程式便可用 oozie workflow 的方式正確執行,又是一次完美的 CDH 填坑行動~