2019獨角獸企業重金招聘Python工程師標準>>> 
Spark 獨立部署模式 博客分類: spark ?
除了在 Mesos 或 YARN 集群上運行之外, Spark 還提供一個簡單的獨立部署的模塊。你通過手動開始master和workers 來啟動一個獨立的集群。你也可以利用我們提供的腳本?.它也可以運行這些進程在單個機器上進行測試。 安裝 Spark 獨立集群 部署Spark最簡單的方法就是運行./make-distribution.sh 腳本來創建一個2進制發行版.這個版本能部署在任意運行這java的機子上,不需要安裝 Scala. 建議的步棸是先在一個節點部署并啟動master,獲得 master spark URL,在dist/這個目錄下修改conf/spark-env.sh然后再部署到其他的節點上。 |
手動啟動集群 通過如下命令啟動單獨模式的master服務: ./bin/start-master.sh 一旦啟動,master就會輸出spark://IP:PORT以提示連接 workers 的方式。也可以通過參數“master”給SparkContext來連接集群的作業.你可以在master的web管理界面上看到這樣的地址,默認是http://localhost:8080. 同樣,你可以啟動一個或者多個worker,通過下面的語句使之和master建立連接: ./spark-class org.apache.spark.deploy.worker.Worker spark://IP:PORT 啟動一個worker后,查看 master的 web管理界面 (默認http://localhost:8080),上面列出了新近加入的節點的CPU和內存的信息。(不包括給操作系統預留的內存空間)。 最后,以下?master 和 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獨立集群時, 需要在Spark 目錄下創建一個文件 conf/slaves, 列出所有啟動的的Spark workers的主機名,每行一條記錄. Master必須能夠實現通過ssh(使用私鑰)訪問worker機器,可以使用ssh localhost來測試。 一旦你建立了這個檔案,你可以通過以下腳本停止或啟動集群, 這些腳本基于 Hadoop’s 部署腳本, 在SPARK_HOME/bin目錄: - bin/start-master.sh-在機器上執行腳本,啟動 master .
- bin/start-slaves.sh- 啟動conf/slaves中指定的每一個slave?.
- bin/start-all.sh- 同時啟動master 以及 上面所說文件中指定的slave
- bin/stop-master.sh- 停止通過bin/start-master.sh腳本啟動的master
- bin/stop-slaves.sh- 停止通過bin/start-slaves.sh啟動的slave?.
- bin/stop-all.sh- 停止上述的兩種啟動腳本啟動的master和slave
|
注意:只能在運行Spark的master主機上執行上述腳本,而不是你的本地機器。 你可以通過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_WORKER_INSTANCES | 沒太機器上運行worker數量 (默認: 1). 當你有一個非常強大的計算機的時候和需要多個Spark worker進程的時候你可以修改這個默認值大于1 . 如果你設置了這個值。要確保SPARK_WORKER_CORE 明確限制每一個r worker的核心數, 否則每個worker 將嘗試使用所有的核心 | SPARK_DAEMON_MEMORY | 分配給Spark master和 worker 守護進程的內存空間 (默認: 512m) | SPARK_DAEMON_JAVA_OPTS | Spark master 和 worker守護進程的JVM 選項(默認: none) |
注意:?啟動腳本目前不支持Windows。要運行一個Spark?集群在Windows上,手動啟動master 和 workers? |
集群連接應用程序 在Spark 集群上運行一個應用,只需通過master的 spark://IP:PORT 鏈接傳遞到SparkContext構造器 在集群上運行交互式的Spark 命令, 運行如下命令: MASTER=spark://IP:PORT ./spark-shell 注意,如果你在一個 spark集群上運行了spark-shell腳本,spark-shell 將通過在conf/spark-env.sh下的SPARK_MASTER_IP和SPARK_MASTER_PORT自動設置MASTER . 你也可以傳遞一個參數-c <numCores> 來控制 spark-shell 在集群上使用的核心數量 |
資源調度 單獨部署模式目前只支持FIFO作業調度策略。不過,為了允許多并發執行,你可以控制每一個應用可獲得資源的最大值。默認情況下,如果系統中只運行一個應用,它就會獲得所有資源。使用類似System.setProperty("spark.cores.max","10")的語句可以獲得內核的數量。這個數值在初始化SparkContext之前必須設置好。 |
監控和日志 Spark單獨部署模式提供了一個基于WEB的集群監視器。master和每一個worker都會有一個WEB UI來顯示集群的統計信息。默認情況下,可以通過8080端口訪問master的WEB UI。當然也可以通過配置文件或者命令來修改這個端口值。 另外,每個slave節點上作業運行的日志也會詳細的記錄到默認的SPARK_HOME/work目錄下。每個作業會對應兩個文件,stdout和stderr,包含了控制臺上的所有的歷史輸出。 |
和Hadoop同時運行 Spark?作為一個獨立的服務,可以和現有的Hadoop集群同時運行。 通過hdfs:// URL,Spark可以訪問hadoop集群的HDFS上的數據。(比如地址可以寫成hdfs://<namenode>:9000/path,從Namenode的web UI可以獲得更確切的URL).或者,專門為Spark搭建一個集群,通過網絡訪問其他HDFS上的數據,這樣肯定不如訪問本地數據速度快,除非是都在同一個局域網內。(比如幾臺Spark機器和Hadoop集群在同一機架上)。 ? ? ? http://blog.csdn.net/zajin/article/details/12781097 |