Spark叢集部署(standLone)模式

郭遠威發表於2019-01-24

 

安裝部署:

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引數配置項可取值

相關文章