天天看點

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

1、 建立基于maven的scala項目步驟

(1)建立一個maven項目

File->new project -> maven

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

不需要選擇archetype,直接點選Next

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

Next

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

Finish,完成建立。項目目錄如下:

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

(2)将scala添加到項目中

Add framework support

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

選擇scala,以及對應的scala-sdk,完成後點選ok!

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

(3)建立wordcount對象

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作
idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

Ok,在WordCount中編寫main方法作為程式的入口,如下:

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

(4)在maven的pox.xml中添加jar依賴

特别提醒:注意scala和spark的版本要相符合,否則運作會報錯,下圖用的是scala-2.10.4和spark-1.6.3。

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

(5)編寫wordcount代碼

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

(6)運作(快捷鍵:crtl+shift+f10)

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

(7)打包jar

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作
idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作
idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

上圖中删除多餘的jar一定要做,否則在spark叢集中運作時會報錯。

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

Ok!

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作
idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作
idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

生成的jar如圖。

(8)在spark on yarn叢集上運作

使用spark-submit部署應用

1) spark-submit的一般形式

bin/spark-submit [options] <app jar | python file> [app options]

<app jar | python file>表示包含應用入口的JAR包或者Python腳本

[app options]是傳給你的應用的選項

spark-submit的一些常見标記

标記 描述

--master 表示要連接配接的叢集管理器

--deploy-mode 選擇在本地啟動驅動器程式,還是在叢集中的一台工作節點機器上啟動。在用戶端模式下,spark-submit會将驅動器程式運作在spark-submit被調用的這台機器上。在叢集模式下,驅動器程式會被傳輸并被執行于叢集的一個工作節點上,預設是本地模式。

--class 運作Java或者Scala程式應用的主類

--name 應用的顯示名,會顯示在spark的網頁使用者界面中

--jars 需要上傳并放在應用的CLASSPATH中的JAR包的雷彪。如果應用依賴于少量第三方的jar包,可以把它們放在這個參數中

--files 需要放在應用工作目錄中的檔案雷彪。這個參數一般用來放需要分發到各節點的資料檔案

--py-files 需添加到PYTHONPATH中的檔案的雷彪。其中可以包含.py /.egg以及.zip檔案

--executor-memory 執行器程序使用的記憶體量,以位元組為機關,可以使用字尾指定更大的機關,比如512M或者15g

--driver-memory 驅動器程序使用的記憶體量,以位元組為機關。可以使用字尾指定更大的機關,比如512m或者15g

./bin/spark-submit 

--master spark:// hostname:7077 

--deploy-mode cluster

--class com.databricks.examples.SparkExample

--name "Example program"

--jars dep1.jar,dep2.jar,dep3.jar

--total-executor-core 300

--executor-memory 10g

2) WordCount運作示例

說明:java檔案夾已經mark as sources root了,是以在打包成jar的包運作過程中寫main方法所在的類時直接從java目錄下開始寫即可。

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

運作指令行:

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

最後兩個為jar包所在位置和輸入檔案在HDFS上的路徑。注意spark-submit所在的位置。運作結果如圖:

idea+maven+scala建立wordcount,打包jar并在spark on yarn上運作

繼續閱讀