Apache Spark 是一個新興的大資料處理通用引擎,提供了分散式的記憶體抽象。Spark 最大的特點就是快,可比 Hadoop MapReduce 的處理速度快 100 倍。本文沒有使用一臺電腦上構建多個虛擬機器的方法來模擬叢集,而是使用三臺電腦來搭建一個小型分散式叢集環境安裝。
本教程採用Spark2.0以上版本(比如Spark2.0.2、Spark2.1.0等)搭建叢集,同樣適用於搭建Spark1.6.2叢集

安裝Hadoop並搭建好Hadoop叢集環境

Spark分散式叢集的安裝環境,需要事先配置好Hadoop的分散式叢集環境。如果沒有配置好Hadoop的分散式叢集環境,請點選Hadoop 2.7分散式叢集環境搭建,根據教程進行安裝。(備註:本教程採用Spark2.0搭建叢集,同樣適用於搭建Spark1.6.2叢集)

安裝Spark

這裡採用3臺機器(節點)作為例項來演示如何搭建Spark叢集,其中1臺機器(節點)作為Master節點,另外兩臺機器(節點)作為Slave節點(即作為Worker節點),主機名分別為Slave01和Slave02。
在Master節點機器上,訪問Spark官方下載地址,按照如下圖下載。
20161205_010
下載完成後,執行如下命令:

  1. sudo tar -zxf ~/下載/spark-2.0.2-bin-without-hadoop.tgz -C /usr/local/
  2. cd /usr/local
  3. sudo mv ./spark-2.0.2-bin-without-hadoop/ ./spark
  4. sudo chown -R hadoop ./spark
Shell 命令

配置環境變數

在Mster節點主機的終端中執行如下命令:

  1. vim ~/.bashrc
Shell 命令

在.bashrc新增如下配置:

export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

執行如下命令使得配置立即生效:

  1. source ~/.bashrc
Shell 命令

Spark配置

在Master節點主機上進行如下操作:

  • 配置slaves檔案
    將 slaves.template 拷貝到 slaves
  1. cd /usr/local/spark/
  2. cp ./conf/slaves.template ./conf/slaves
Shell 命令

slaves檔案設定Worker節點。編輯slaves內容,把預設內容localhost替換成如下內容:

slave01
slave02
  • 配置spark-env.sh檔案
    將 spark-env.sh.template 拷貝到 spark-env.sh
    1. cp ./conf/spark-env.sh.template ./conf/spark-env.sh
    Shell 命令

    編輯spark-env.sh,新增如下內容:

    export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
    export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
    export SPARK_MASTER_IP=192.168.1.104
    

    SPARK_MASTER_IP 指定 Spark 叢集 Master 節點的 IP 地址;

配置好後,將Master主機上的/usr/local/spark資料夾複製到各個節點上。在Master主機上執行如下命令:

  1. cd /usr/local/
  2. tar -zcf ~/spark.master.tar.gz ./spark
  3. cd ~
  4. scp ./spark.master.tar.gz slave01:/home/hadoop
  5. scp ./spark.master.tar.gz slave02:/home/hadoop
Shell 命令

在slave01,slave02節點上分別執行下面同樣的操作:

  1. sudo rm -rf /usr/local/spark/
  2. sudo tar -zxf ~/spark.master.tar.gz -C /usr/local
  3. sudo chown -R hadoop /usr/local/spark
Shell 命令

啟動Spark叢集

啟動Hadoop叢集

啟動Spark叢集前,要先啟動Hadoop叢集。在Master節點主機上執行如下命令:

  1. cd /usr/local/hadoop/
  2. sbin/start-all.sh
Shell 命令

啟動Spark叢集

  1. 啟動Master節點
    在Master節點主機上執行如下命令:
    1. cd /usr/local/spark/
    2. sbin/start-master.sh
    Shell 命令

    在Master節點上執行jps命令,可以看到多了個Master程序:

    15093 Jps
    14343 SecondaryNameNode
    14121 NameNode
    14891 Master
    14509 ResourceManager
    
  2. 啟動所有Slave節點
    在Master節點主機上執行如下命令:
    1. sbin/start-slaves.sh
    Shell 命令

    分別在slave01、slave02節點上執行jps命令,可以看到多了個Worker程序

    37553 DataNode
    37684 NodeManager
    37876 Worker
    37924 Jps
    
  3. 在瀏覽器上檢視Spark獨立叢集管理器的叢集資訊
    在master主機上開啟瀏覽器,訪問http://master:8080,如下圖:
    20161205_010

關閉Spark叢集

  1. 關閉Master節點
    1. sbin/stop-master.sh
    Shell 命令
  2. 關閉Worker節點
    1. sbin/stop-slaves.sh
    Shell 命令
  3. 關閉Hadoop叢集
    1. cd /usr/local/hadoop/
    2. sbin/stop-all.sh
    Shell 命令