安裝部署:
1. 配置spark為1個master,2個slave的獨立叢集(Standlone)模式,
可以在VMWare中構建3臺執行Ubuntu的機器作為伺服器;
master主機配置如下:
vim /etc/hostname 編輯此檔案,設定主機名為master
vim /etc/hosts 編輯此檔案,新增如下主機內容資訊:
192.168.189.128 master
192.168.189.129 slave1
192.168.189.130 slave2
同理配置slave1,slave2主機。
2. 下載安裝jdk1.8.0_91,並設定好環境變數;
jdk下載路徑:https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz
下載安裝scala-2.12.2,下載路徑:https://downloads.lightbend.com/scala/2.12.8/scala-2.12.8.tgz
並設定好環境變數(spark是基於scala語言編寫的,同時scala又執行於JVM之上),
如下命令:
vim .bashrc 編輯此檔案,新增如下內容:
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JAVA_BIN=$JAVA_HOME/bin
export JAVA_LIB=$JAVA_HOME/lib
export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar
export PATH=$JAVA_BIN:$PATH
export SCALA_BIN=/usr/local/scala-2.12.2/bin
export PATH=$PATH:$SCALA_BIN
退出root賬戶,重新登陸,使環境變數生效。
master,slave1,slave2三臺伺服器配置一樣。
3. 安裝配置ssh,使得三臺主機ssh登入免密碼,因為叢集裡面的主機需要在後臺通訊。
(1)安裝:
SSH分客戶端openssh-client和openssh-server,如果你只是想登陸別的機器的SSH只需要安裝openssh-client(ubuntu有預設安裝客戶端),如果要使本機開放SSH服務就需要安裝openssh-server。
(2) 配置免密碼登陸:
在master主機上登陸root使用者,輸入命令:ssh-keygen -t rsa
然後根據提示一直按enter,就會按預設的選項生成的金鑰對(私鑰id_rsa和公鑰id_rsa.pub)並儲存在/root/.ssh資料夾中;
將master伺服器上的公鑰拷貝到slave1上,輸入命令:ssh-copy-id root@slave1(root為slave1上的賬戶)
將master伺服器上的公鑰拷貝到slave2上,輸入命令:ssh-copy-id root@slave2(root為slave2上的賬戶)
可以測試免密碼登陸是否成功,輸入命令:ssh slave1
4. Spark獨立叢集中的workers配置
在Spark 目錄下建立一個檔案conf/slaves, 列出所有啟動Spark workers的主機名,每行一條記錄,如下面master主機的配置:
#localhost
slave1
slave2
5. 配置SPARK的JAVA_HOME
編輯所有主機上的sbin/spark-config檔案,新增export JAVA_HOME=/usr/local/jdk1.8.0_91
6. 配置整個叢集的環境變數(可選)
通過conf/spark-env.sh進一步配置整個叢集的環境變數,如下變數,這裡先用預設的值 。
變數 |
描述 |
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) |
7. 啟動叢集
通過命令:sbin/start-all.sh
同時啟動master以及上面所說檔案中指定的slave
8. 輸入http://localhost:8080/看叢集是否啟動成功
成功啟動後的介面
9. 在web介面上監控叢集執行的細節
需要開啟conf/spark-default.conf檔案,新增如下內容:
spark.eventLog.enabled true
spark.eventLog.dir file:/tmp/spark-events
注意需要先在/tmp目錄下建立資料夾spark-events,因為後面所有應用執行的事件日誌會存放在這。
修改資料夾許可權: chmod 777 spark-events , 以便JVM有權建立和讀取檔案。
在master主機上啟動spark-history-server,執行命令:./sbin/start-history-server.sh
在瀏覽器中輸入: http://master:18080/ 檢視應用執行情況,如下圖所示:
點選具體某一個application,可以檢視具體每一個應用執行的細節
10. spark執行流程
11. spark-submit應用程式提交時,master引數配置項可取值