Spark1.0.0 應用程序部署工具spark-submit

問題導讀:
一、Spar的應用程序部署工具都提供哪些功能?

二、Spar的應用程序部署工具備哪些?
三、什麼是spark-submit?



   隨着Spark的應用愈來愈普遍,對支持多資源管理器應用程序部署工具的需求也愈來愈迫切。Spark1.0.0的出現,這個問題獲得了逐步改善。從 Spark1.0.0開始,Spark提供了一個容易上手的應用程序部署工具bin/spark-submit,能夠完成Spark應用程序在 local、Standalone、YARN、Mesos上的快捷部署。

1:使用說明
      進入$SPARK_HOME目錄,輸入bin/spark-submit --help能夠獲得該命令的使用幫助。java

  1. hadoop@wyy:/app/hadoop/spark100$ bin/spark-submit --help
  2. Usage: spark-submit [options] <app jar | python file> [app options]

複製代碼node



Options:
  --master MASTER_URL         spark://host:port, mesos://host:port, yarn, or local.
  --deploy-mode DEPLOY_MODE   driver運行之處,client運行在本機,cluster運行在集羣
  --class CLASS_NAME          應用程序包的要運行的class
  --name NAME                 應用程序名稱
  --jars JARS                 用逗號隔開的driver本地jar包列表以及executor類路徑
  --py-files PY_FILES         用逗號隔開的放置在Python應用程序PYTHONPATH上的.zip, .egg, .py文件列表
  --files FILES               用逗號隔開的要放置在每一個executor工做目錄的文件列表
  --properties-file FILE      設置應用程序屬性的文件放置位置,默認是conf/spark-defaults.conf
  --driver-memory MEM         driver內存大小,默認512M
  --driver-java-options       driver的java選項
  --driver-library-path       driver的庫路徑Extra library path entries to pass to the driver
  --driver-class-path         driver的類路徑,用--jars 添加的jar包會自動包含在類路徑裏
  --executor-memory MEM       executor內存大小,默認1G

Spark standalone with cluster deploy mode only:
  --driver-cores NUM          driver使用內核數,默認爲1
  --supervise                 若是設置了該參數,driver失敗是會重啓

Spark standalone and Mesos only:
  --total-executor-cores NUM  executor使用的總核數

YARN-only:
  --executor-cores NUM        每一個executor使用的內核數,默認爲1
  --queue QUEUE_NAME          提交應用程序給哪一個YARN的隊列,默認是default隊列
  --num-executors NUM         啓動的executor數量,默認是2個
  --archives ARCHIVES         被每一個executor提取到工做目錄的檔案列表,用逗號隔開

     關於以上spark-submit的help信息,有幾點須要強調一下:
使用相似 --master spark://host:port --deploy-mode cluster會將driver提交給cluster,而後就將worker給kill的現象。



若是要使用--properties-file的話,在--properties-file中定義的屬性就沒必要要在spark-sumbit中再定義了, 好比在conf/spark-defaults.conf 定義了spark.master,就能夠不使用--master了。關於Spark屬性的優先權爲:SparkConf方式 > 命令行參數方式 >文件配置方式,具體參見Spark1.0.0屬性配置。
和以前的版本不一樣,Spark1.0.0會將自身的jar包和--jars選項中的jar包自動傳給集羣。
Spark使用下面幾種URI來處理文件的傳播:
file:// 使用file://和絕對路徑,是由driver的HTTP server來提供文件服務,各個executor從driver上拉回文件。
hdfs:, http:, https:, ftp: executor直接從URL拉回文件
local: executor本地自己存在的文件,不須要拉回;也能夠是經過NFS網絡共享的文件。
若是須要查看配置選項是從哪裏來的,能夠用打開--verbose選項來生成更詳細的運行信息以作參考。


2:測試環境
測試程序來源於使用IntelliJ IDEA開發Spark1.0.0應用程序,將測試其中的WordCount1和WordCount2這兩個Class。
測試數據來源於搜狗的用戶查詢日誌(SogouQ),詳見Spark1.0.0 開發環境快速搭建,雖然用這個數據集測試不是很理想,但因爲其完整版足夠大,能夠分割其中部分數據進行測試,在加上其餘例程須要使用,將就採用了這個數據 集。實驗中分別截取100000行(SogouQ1.txt)和200000行(SogouQ2.txt)作實驗。


3:準備工做
A:集羣
切換到用戶hadoop啓動Spark1.0.0 開發環境快速搭建中搭建的虛擬集羣python

  1. [hadoop@hadoop1 ~]$ su - hadoop
  2. [hadoop@hadoop1 ~]$ cd /app/hadoop/hadoop220
  3. [hadoop@hadoop1 hadoop220]$ sbin/start-all.sh
  4. [hadoop@hadoop1 hadoop220]$ cd ../spark100/
  5. [hadoop@hadoop1 spark100]$ sbin/start-all.sh

複製代碼網絡


B:客戶端
在客戶端切換到用戶hadoop並切換到/app/hadoop/spark100目錄,將實驗數據上傳hadoop集羣,而後將使用IntelliJ IDEA開發Spark1.0.0應用程序生成的程序包複製過來。架構

  1. mmicky@wyy:~/data$ su - hadoop
  2. hadoop@wyy:~$ cd /app/hadoop/hadoop220
  3. hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -mkdir -p /dataguru/data
  4. hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -put /home/mmicky/data/SogouQ1.txt /dataguru/data/
  5. hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -put /home/mmicky/data/SogouQ2.txt /dataguru/data/

複製代碼app


檢查SogouQ1.txt的塊分佈工具

  1. hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs fsck /dataguru/data/SogouQ1.txt -files -blocks -locations -racks
  2. Connecting to namenode via http://hadoop1:50070
  3. FSCK started by hadoop (auth:SIMPLE) from /192.168.1.111 for path /dataguru/data/SogouQ1.txt at Sat Jun 14 03:47:39 CST 2014
  4. /dataguru/data/SogouQ1.txt 108750574 bytes, 1 block(s):  OK
  5. 0. BP-1801429707-192.168.1.171-1400957381096:blk_1073741835_1011 len=108750574 repl=1 [/default-rack/192.168.1.171:50010]

複製代碼oop


檢查SogouQ2.txt的塊分佈測試

  1. hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs fsck /dataguru/data/SogouQ2.txt -files -blocks -locations -racks
  2. Connecting to namenode via http://hadoop1:50070
  3. FSCK started by hadoop (auth:SIMPLE) from /192.168.1.111 for path /dataguru/data/SogouQ2.txt at Sat Jun 14 03:48:07 CST 2014
  4. /dataguru/data/SogouQ2.txt 217441417 bytes, 2 block(s):  OK
  5. 0. BP-1801429707-192.168.1.171-1400957381096:blk_1073741836_1012 len=134217728 repl=1 [/default-rack/192.168.1.173:50010]
  6. 1. BP-1801429707-192.168.1.171-1400957381096:blk_1073741837_1013 len=83223689 repl=1 [/default-rack/192.168.1.172:50010]

複製代碼spa


切換到spark目錄並複製程序包

  1. hadoop@wyy:/app/hadoop/hadoop220$ cd ../spark100
  2. hadoop@wyy:/app/hadoop/spark100$ cp /home/mmicky/IdeaProjects/week2/out/artifacts/week2/week2.jar .

複製代碼



4:實驗
下面給出了幾種實驗CASE的命令,具體的運行架構會抽取幾個例子在Spark1.0.0 on Standalone 運行架構實例解析說明。
在使用spark-submit提交spark應用程序的時候,須要注意如下幾點: 集羣外的客戶機向Spark Standalone部署Spark應用程序時,要注意事先實現該客戶機和Spark Standalone之間的SSH無密碼登陸。 向YARN部署spark應用程序的時候,注意executor-memory的大小,其內存加上container要使用的內存(默認值是1G)不要超過NM可用內存,否則分配不到container來運行executor。

相關文章
相關標籤/搜索