安裝部署:java
1. 配置spark爲1個master,2個slave的獨立集羣(Standlone)模式,linux
能夠在VMWare中構建3臺運行Ubuntu的機器做爲服務器;web
master主機配置以下:ubuntu
vim /etc/hostname 編輯此文件,設置主機名爲mastervim
vim /etc/hosts 編輯此文件,添加以下主機內容信息:瀏覽器
192.168.189.128 masterbash
192.168.189.129 slave1服務器
192.168.189.130 slave2oracle
同理配置slave1,slave2主機。app
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參數配置項可取值