Spark官方文檔——獨立集群模式(Standalone Mode)


除了部署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集群在同一機架上)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM