如何使用spark-submit將打包好的jar提交到Spark上運行?
打開終端,在終端中輸入spark-submit --help, 可以查看spark-submit的詳細幫助。
下面說一下 spark-submit 的詳細幫助。
(1) --class 指向程序中的主類。
例如:--class "helloworld"
(2) --master 是指集羣的master URL。
舉個例子,在本地運行就可以這樣寫:
local模式:
- -master local //這是在本地運行
--master local[K] 這是在本地運行,並且啓動K(數字比如1,2,3這樣的)個woker線程,如果K設置爲*(這樣:--master local[*]),則表示使用機器上的所有邏輯核心數作爲參數K的值。
- -master local[K,F] //這是在本地運行並且啓動K個worker線程(這裏的K也設置爲*),並且設置任務的最大出錯數爲E次,設置任務的最大出錯數爲F次。
使用這種方式由於是直接在本地運行的,並沒有提交到集羣上,所以8080端口的WebUI中看不到提交的任務。
standalone模式:
如果想在standalone模式下運行則可以這樣寫:
master spark:/ /host:port //host是master的ip或者hostname, 這裏的端口號默認是7077這個端口號可以在8080端口的Web UI界面中看到。
master spark:/ /host :port, host2:port2 //如果有備用的master則可以這樣寫,在不同的master之間用逗號隔開。
mesos :
如果使用了mesos 作爲集羣的資源管理器,則可以這樣寫:
--master mesos:/ /host:port //和standalone的寫法類似
YARN:
如果使用了YARN作爲集羣的資源管理器,則可以這樣寫:
--master yarn //如果使用這種方式則需要讀者設置好Hadoop的HADOOP_ CONF_DIR和YARN_CONF_DIR環境變量
(3) --deploy-mode 設置以什麼模式運行,有cluster和client兩種,默認是client 模式。
(4) --conf後面跟配置屬性的鍵和值,詳情可參看下面的模板。
下面給出大體的模板:
./bin/ spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
...#其他參數,詳情請參考spark-submit --help \
<jar的路徑> \
注意: ""反斜槓用於換行。
下面給出一個例子供讀者參考:
./bin/ spark-submit \
--class "helloworld" \
--master spark://master:7077 \
--deploy-mode cluster \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
spark:spark-submit 提交任務及參數說明(yarn):
https://blog.csdn.net/weixin_38750084/article/details/104146054