Spark獨立部署模式

Spark獨立部署模式

英文原文連接:http://spark-project.org/docs/latest/spark-standalone.html

翻譯的水平有限,歡迎批評指正,轉載請註明出處。


除了部署在Mesos之上, Spark也支持獨立部署模式,包括一個Spark master進程和多個 Spark worker進程.獨立部署模式可以運行在單機上作爲測試之用,也可以部署在集羣上.如果你打算部署在集羣上,可以使用我們提供的部署腳本啓動一個集羣。

現在開始吧

使用sbt package對進行編譯,可以參考開始指南如果打算部署單獨模式,就不需要安裝Mesos.

手動方式啓動集羣

通過如下命令啓動單獨模式的master服務:

./runspark.deploy.master.Master

一旦啓動,master就會輸出spark://IP:PORT以提示連接 workers 的方式。也可以通過參數“master”SparkContext來連接集羣的作業.你可以在masterweb管理界面上看到這樣的地址,默認是http://localhost:8080

同樣,你可以啓動一個或者多個worker,通過下面的語句使之和master建立連接。:

./runspark.deploy.worker.Worker spark://IP:PORT

啓動一個worker,查看 master web管理界面 (默認http://localhost:8080),上面列出了新近加入的節點的CPU和內存的信息。(不包括給操作系統預留的內存空間)。

Finally, the following configuration options can be passed to the masterand worker:

參數

含義

-i IP, --ip IP

要監聽的IP地址或者 DNS 機器名

-p PORT, --port PORT

要監聽的端口 (默認: master 7077 ;worker隨機)

--webui-port PORT

web UI端口 (默認: master 8080, worker 8081)

-c CORES, --cores CORES

作業可用的CPU內核數量(默認: 所有可用);

只在worker上。

-m MEM, --memory MEM

作業可使用的內存容量,默認格式1000M或者 2G (默認:  所有RAM去掉給操作系統用的1 GB); 只在worker上。

-d DIR, --work-dir DIR

伸縮空間和日誌輸入的目錄路徑

(默認: SPARK_HOME/work); 只在worker上。

集羣啓動腳本

啓動單獨模式的集羣時,首先在Spark的目錄內建立一個配置文件conf/slaves,列出所有worker機器的機器名,每一個佔一行。Master必須能夠實現無密碼的ssh登錄worker機器,可以使用ssh locakhost來測試。

然後,就可以在SPARK_HOME/bin路徑下執行shell腳本,以啓動或者停止集羣。

l        bin/start-master.sh - Starts amaster instance on the machine the script is executed on.

l        bin/start-slaves.sh - Starts aslave instance on each machine specified in the conf/slaves file.

l        bin/start-all.sh - Starts botha master and a number of slaves as described above.

l        bin/stop-master.sh - Stops themaster that was started via the bin/start-master.sh script.

l        bin/stop-slaves.sh - Stops theslave instances that were started via bin/start-slaves.sh.

l        bin/stop-all.sh - Stops boththe master and the slaves as described above.

注意:只能在運行Sparkmaster主機上執行上述腳本,而不是你的本地機器。

你可以通過conf/spark-env.sh進一步配置整個集羣的環境變量。這個文件可以用conf/spark-env.sh.template當模版複製生成。然後,複製到所有的worker機器上才奏效。下面給出一些可選的參數以及含義:

環境變量

含義

SPARK_MASTER_IP

綁定一個外部IP給master

SPARK_MASTER_PORT

從另外一個端口啓動master(默認: 7077)

SPARK_MASTER_WEBUI_PORT

Master的web UI端口 (默認: 8080)

SPARK_WORKER_PORT

啓動Spark worker 的專用端口(默認:隨機)

SPARK_WORKER_DIR

伸縮空間和日誌輸入的目錄路徑

(默認: SPARK_HOME/work);

SPARK_WORKER_CORES

作業可用的CPU內核數量(默認: 所有可用的);

SPARK_WORKER_MEMORY

作業可使用的內存容量,默認格式1000M或者 2G (默認:  所有RAM去掉給操作系統用的1 GB);每個作業獨立的內存空間由SPARK_MEM決定。

SPARK_WORKER_WEBUI_PORT

worker 的web UI 啓動端口(默認: 8081)

SPARK_DAEMON_MEMORY

分配給Spark master和 worker 守護進程的內存空間 (默認: 512m)

SPARK_DAEMON_JAVA_OPTS

Spark master 和 worker守護進程的JVM 選項(默認: none)

提交作業到集羣

運行一個作業在Spark集羣上,只需要發送連接masterspark://IP:PORTSparkContext構造器.

執行下列命令可以在集羣上運行一個交互式的Spark shell

MASTER=spark://IP:PORT./spark-shell

作業調度

單獨部署模式目前只支持FIFO作業調度策略。不過,爲了允許作業的併發執行,可以控制每一個作業可獲得資源的最大值。默認情況下,如果系統中只有一個作業,它就會獲得所有資源。使用類似System.setProperty("spark.cores.max","10")的語句可以獲得內核的數量。這個數值在初始化SparkContext之前必須設置好。

監控和日誌

Spark單獨部署模式提供了一個基於WEB的集羣監視器。master和每一個worker都會有一個WEB UI來顯示集羣的統計信息。默認情況下,可以通過8080端口訪問masterWEB UI。當然也可以通過配置文件或者命令來修改這個端口值。

In addition, detailed log output for each job is also written to the workdirectory of each slave node (SPARK_HOME/work by default). You will see two files for each job, with all output itwrote to its console.

另外,每個slave節點上作業運行的日誌也會詳細的記錄到默認的SPARK_HOME/work目錄下。每個作業會對應兩個文件,stdoutstderr,包含了控制檯上的所有的歷史輸出。

Hadoop同時運行

作爲一個獨立的服務,可以和現有的Hadoop集羣同時運行。

通過hdfs:// URLSpark可以訪問hadoop集羣的HDFS上的數據。(比如地址可以寫成hdfs://<namenode>:9000/path,Namenodeweb UI可以獲得更確切的URL).或者,專門爲Spark搭建一個集羣,通過網絡訪問其他HDFS上的數據,這樣肯定不如訪問本地數據速度快,除非是都在同一個局域網內。(比如幾臺Spark機器和Hadoop集羣在同一機架上)

 

發佈了13 篇原創文章 · 獲贊 9 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章