Apache Spark 2.2.0 中文文檔 - Submitting Applications | ApacheCN

來源:互聯網
上載者:User

標籤:分布式   rip   tps   管理   dep   a10   exec   epo   loading   

Submitting Applications

在 script in Spark的 bin 目錄中的spark-submit 指令碼用與在叢集上啟動應用程式。它可以通過一個統一的介面使用所有 Spark 支援的 cluster managers,所以您不需要專門的為每個cluster managers配置您的應用程式。

打包應用依賴

如果您的代碼依賴了其它的項目,為了分發代碼到 Spark 叢集中您將需要將它們和您的應用程式一起打包。為此,建立一個包含您的代碼以及依賴的 assembly jar(或者 “uber” jar)。無論是 sbt 還是 Maven 都有 assembly 外掛程式。在建立 assembly jar 時,列出 Spark 和 Hadoop的依賴為provided。它們不需要被打包,因為在運行時它們已經被 Cluster Manager 提供了。如果您有一個 assembled jar 您就可以調用 bin/spark-submit指令碼(如下所示)來傳遞您的 jar。

對於 Python 來說,您可以使用 spark-submit 的 --py-files 參數來添加 .py.zip 和 .egg 檔案以與您的應用程式一起分發。如果您依賴了多個 Python 檔案我們推薦將它們打包成一個 .zip 或者 .egg 檔案。

用 spark-submit 啟動應用

如果使用者的應用程式被打包好了,它可以使用 bin/spark-submit 指令碼來啟動。這個指令碼負責設定 Spark 和它的依賴的 classpath,並且可以支援 Spark 所支援的不同的 Cluster Manager 以及 deploy mode(部署模式):

./bin/spark-submit   --class <main-class>   --master <master-url>   --deploy-mode <deploy-mode>   --conf <key>=<value>   ... # other options  <application-jar>   [application-arguments]

一些常用的 options(選項)有 :

  • --class: 您的應用程式的進入點(例如。 org.apache.spark.examples.SparkPi)
  • --master: 叢集的 master URL (例如 spark://23.195.26.187:7077)
  • --deploy-mode: 是在 worker 節點(cluster) 上還是在本地作為一個外部的用戶端(client) 部署您的 driver(預設: client) ?
  • --conf: 按照 key=value 格式任意的 Spark 配置屬性。對於包含空格的 value(值)使用引號包 “key=value” 起來。
  • application-jar: 包括您的應用以及所有依賴的一個打包的 Jar 的路徑。該 URL 在您的叢集上必須是全域可見的,例如,一個 hdfs:// path 或者一個 file:// 在所有節點是可見的。
  • application-arguments: 傳遞到您的 main class 的 main 方法的參數,如果有的話。

? 常見的部署策略是從一台 gateway 機器物理位置與您 worker 在一起的機器(比如,在 standalone EC2 叢集中的 Master 節點上)來提交您的應用。在這種設定中, client 模式是合適的。在 client 模式中,driver 直接運行在一個充當叢集 client 的 spark-submit 進程內。應用程式的輸入和輸出直接連到控制台。因此,這個模式特別適合那些設計 REPL(例如,Spark shell)的應用程式。

另外,如果您從一台遠離 worker 機器的機器(例如,本地的膝上型電腦上)提交應用程式,通常使用 cluster 模式來降低 driver 和 executor 之間的延遲。目前,Standalone 模式不支援 Cluster 模式的 Python 應用。

對於 Python 應用,在 <application-jar> 的位置簡單的傳遞一個 .py 檔案而不是一個 JAR,並且可以用 --py-files 添加 Python .zip.egg 或者 .py 檔案到 search path(搜尋路徑)。

這裡有一些選項可用於特定的 cluster manager 中。例如, Spark standalone cluster 用 cluster 部署模式, 您也可以指定 --supervise 來確保 driver 在 non-zero exit code 失敗時可以自動重啟。為了列出所有 spark-submit, 可用的選項,用 --help. 來運行它。這裡是一些常見選項的例子 :

# Run application locally on 8 cores./bin/spark-submit   --class org.apache.spark.examples.SparkPi   --master local[8]   /path/to/examples.jar   100# Run on a Spark standalone cluster in client deploy mode./bin/spark-submit   --class org.apache.spark.examples.SparkPi   --master spark://207.184.161.138:7077   --executor-memory 20G   --total-executor-cores 100   /path/to/examples.jar   1000# Run on a Spark standalone cluster in cluster deploy mode with supervise./bin/spark-submit   --class org.apache.spark.examples.SparkPi   --master spark://207.184.161.138:7077   --deploy-mode cluster   --supervise   --executor-memory 20G   --total-executor-cores 100   /path/to/examples.jar   1000# Run on a YARN clusterexport HADOOP_CONF_DIR=XXX./bin/spark-submit   --class org.apache.spark.examples.SparkPi   --master yarn   --deploy-mode cluster \  # can be client for client mode  --executor-memory 20G   --num-executors 50   /path/to/examples.jar   1000# Run a Python application on a Spark standalone cluster./bin/spark-submit   --master spark://207.184.161.138:7077   examples/src/main/python/pi.py   1000# Run on a Mesos cluster in cluster deploy mode with supervise./bin/spark-submit   --class org.apache.spark.examples.SparkPi   --master mesos://207.184.161.138:7077   --deploy-mode cluster   --supervise   --executor-memory 20G   --total-executor-cores 100   http://path/to/examples.jar   1000
Master URLs

傳遞給 Spark 的 master URL 可以使用下列格式中的一種 :

Master URL Meaning
local 使用一個執行緒區域運行 Spark(即,沒有並行性)。
local[K] 使用 K 個 worker 執行緒區域運行 Spark(理想情況下,設定這個值的數量為您機器的 core 數量)。
local[K,F] 使用 K 個 worker 執行緒區域運行 Spark並允許最多失敗 F次 (查閱 spark.task.maxFailures 以擷取對該變數的解釋)
local[*] 使用更多的 worker 線程作為邏輯的 core 在您的機器上來本地的運行 Spark。
local[*,F] 使用更多的 worker 線程作為邏輯的 core 在您的機器上來本地的運行 Spark並允許最多失敗 F次。
spark://HOST:PORT 串連至給定的 Spark standalone cluster master. master。該 port(連接埠)必須有一個作為您的 master 配置來使用,預設是 7077。
spark://HOST1:PORT1,HOST2:PORT2 串連至給定的 Spark standalone cluster with standby masters with Zookeeper. 該列表必須包含由zookeeper設定的高可用叢集中的所有master主機。該 port(連接埠)必須有一個作為您的 master 配置來使用,預設是 7077。
mesos://HOST:PORT 串連至給定的 Mesos 叢集. 該 port(連接埠)必須有一個作為您的配置來使用,預設是 5050。或者,對於使用了 ZooKeeper 的 Mesos cluster 來說,使用 mesos://zk://.... 。使用 --deploy-mode cluster, 來提交,該 HOST:PORT 應該被配置以串連到 MesosClusterDispatcher.
yarn 串連至一個 YARN cluster in client or cluster mode 取決於 --deploy-mode. 的值在 client 或者 cluster 模式中。該 cluster 的位置將根據 HADOOP_CONF_DIR 或者 YARN_CONF_DIR 變數來找到。
從檔案中載入配置

spark-submit 指令碼可以從一個 properties 檔案載入預設的 Spark configuration values 並且傳遞它們到您的應用中去。預設情況下,它將從 Spark 目錄下的 conf/spark-defaults.conf 讀取配置。更多詳細資料,請看 載入預設配置.

載入預設的 Spark 配置,這種方式可以消除某些標記到 spark-submit. 的必要性。例如,如果 spark.master 屬性被設定了,您可以在spark-submit中安全的省略 --master 配置 . 一般情況下,明確設定在 SparkConf 上的配置值的優先順序最高,然後是傳遞給 spark-submit的值, 最後才是 default value(預設檔案)中的值。

如果您不是很清楚其中的配置設定來自哪裡,您可以通過使用 --verbose 選項來運行 spark-submit 列印出細粒度的調試資訊。

進階的依賴管理

在使用 spark-submit 時,使用 --jars 選項包括的應用程式的 jar 和任何其它的 jar 都將被自動的傳輸到叢集。在 --jars 後面提供的 URL 必須用逗號分隔。該列表會被包含到 driver 和 executor 的 classpath 中。 --jars 不支援目錄的形式。

Spark 使用下面的 URL 格式以允許傳播 jar 時使用不同的策略 :

  • file: - 絕對路徑和 file:/ URI 通過 driver 的 HTTP file server 提供服務,並且每個 executor 會從 driver 的 HTTP server 拉取這些檔案。
  • hdfs:, http:, https:, ftp: - 如預期的一樣拉取下載檔案和 JAR
  • local: - 一個用 local:/ 開頭的 URL 預期作在每個 worker 節點上作為一個本地檔案存在。這樣意味著沒有網路 IO 發生,並且非常適用於那些已經被推送到每個 worker 或通過 NFS,GlusterFS等共用的大型的 file/JAR。

N注意,那些 JAR 和檔案被複製到 working directory(工作目錄)用於在 executor 節點上的每個 SparkContext。這可以使用最多的空間顯著量隨著時間的推移,將需要清理。在 Spark On YARN 模式中,自動執行清理操作。在 Spark standalone 模式中,可以通過配置spark.worker.cleanup.appDataTtl 屬性來執行自動清理。

使用者也可以通過使用 --packages來提供一個逗號分隔的 maven coordinates(maven 座標)以包含任何其它的依賴。在使用這個命令時所有可傳遞的依賴將被處理。其它的 repository(或者在 SBT 中被解析的)可以使用 --repositories該標記添加到一個逗號分隔的樣式中。 (注意,對於那些設定了密碼保護的庫,在一些情況下可以在庫URL中提供驗證資訊,例如 https://user:[email protected]/....以這種方式提供驗證資訊需要小心。) 這些命令可以與 pysparkspark-shell 和 spark-submit 配置會使用以包含 Spark Packages(Spark 包)。 對於 Python 來說,也可以使用 --py-files 選項用於分發 .egg.zip 和 .py libraries 到 executor 中。

# 更多資訊

如果您已經部署了您的應用程式,叢集模式概述 描述了在分布式執行中涉及到的組件,以及如何去監控和調試應用程式。

 

我們一直在努力

 

apachecn/spark-doc-zh

   

 

原文地址: http://spark.apachecn.org/docs/cn/2.2.0/submitting-applications.html
網頁地址: http://spark.apachecn.org/
github: https://github.com/apachecn/spark-doc-zh(覺得不錯麻煩給個 Star,謝謝!~)

Apache Spark 2.2.0 中文文檔 - Submitting Applications | ApacheCN

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.