注:本文是建立在hadoop已經搭建完成的基礎上進行的。

Apache Spark是一個分散式計算框架,旨在簡化運行於計算機叢集上的並行程式的編寫。該框架對資源排程,任務的提交、執行和跟蹤,節點間的通訊以及資料並行處理的內在底層操作都進行了抽象。它提供了一個更高級別的API用於處理分散式資料。從這方面說,它與Apache Hadoop等分散式處理框架類似。但在底層架構上,Spark與它們有所不同。

Spark起源於加利福利亞大學伯克利分校的一個研究專案。學校當時關注分散式機器學習演算法的應用情況。因此,Spark從一開始便為應對迭代式應用的高效能需求而設計。在這類應用中,相同的資料會被多次訪問。該設計主要靠利用資料集記憶體快取以及啟動任務時的低延遲和低系統開銷來實現高效能。再加上其容錯性、靈活的分散式資料結構和強大的函數語言程式設計介面,Spark在各類基於機器學習和迭代分析的大規模資料處理任務上有廣泛的應用,這也表明了其實用性。

Spark支援四種執行模式。

  • 本地單機模式:所有Spark程序都執行在同一個Java虛擬機器(Java Vitural Machine,JVM)中。
  • 叢集單機模式:使用Spark自己內建的任務排程框架。
  • 基於Mesos:Mesos是一個流行的開源叢集計算框架。
  • 基於YARN:即Hadoop 2,它是一個與Hadoop關聯的叢集計算和資源排程框架。

spark是由Scala語言編寫的,但是執行的環境是jvm,所以需要安裝JDK 
編譯過程:Python、java、Scala編寫的程式碼 -> scala編譯器編譯解釋,生成class檔案 -> 由jvm負責執行class檔案(與java程式碼執行一致)

Apache Hadoop YARN (Yet Another Resource Negotiator,另一種資源協調者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和排程,它的引入為叢集在利用率、資源統一管理和資料共享等方面帶來了巨大好處

由於 spark是由Scala語言編寫的,所以依賴Scala環境,且由Scala編寫的執行程式碼也需要環境進行編譯。

hdfs是作為spark的持久層,所以需要安裝Hadoop,同時如果需要配置spark on yarn,則Hadoop需要安裝yarn版本的

spark官方詳細引數配置手冊:http://spark.apache.org/docs/latest/configuration.html

下載地址:http://spark.apache.org/downloads.html

---------------------------------------------------------------------------------------------------------

1、安裝Scala

官網下載地址: http://www.scala-lang.org/download/all.html

下載後解壓到指定目錄,例如 /usr/local/scala

# tar -zxvf scala-2.11.8.tgz  ;  mv scala-2.11.8 /usr/local/scala

配置環境變數:

# vim /etc/profile

export  SCALA_HOME=/usr/local/scala/

export  PATH=$SCALA_HOME/bin:$PATH

2、編輯conf/spark-env.sh檔案

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_IP=dataMaster30
export SPARK_EXECUTOR_INSTANCES=3
export SPARK_EXECUTOR_CORES=3
export SPARK_EXECUTOR_MEMORY=8g
export SPARK_DRIVER_MEMORY=2g

3、編輯slaves檔案

#localhost
dataSlave31
dataSlave32
dataSlave33
dataSlave34
dataSlave35

4、啟動spark叢集:

/usr/local/spark/sbin/start-all.sh

關閉spark叢集:

/usr/local/spark/sbin/stop-all.sh

 

5、檢測是否安裝成功:

# jps (Master節點) 此時會多出現一個Master程序

1701 Master
1459 SecondaryNameNode
2242 NameNode
1907 ResourceManage

# jps  (Worker節點) 此時會多出現一個Worker程序

5387 Worker
4269 DataNode
4398 NodeManager

執行以下測試命令,檢視spark單機執行是否成功:

/usr/local/spark/bin/run-example SparkPi 1000

執行以下測試命令,檢視spark叢集執行是否成功:

cd /usr/local/spark

./bin/spark-submit --master spark://master60:7077 --class org.apache.spark.examples.SparkPi  lib/spark-examples-1.6.1-hadoop2.6.0.jar 1000

如果沒有報錯的話,則證明spark確實部署成功。

6、檢視叢集狀態:

http://master30:/

最後設定開機自啟動:

vim /etc/rc.local

su - hadoop -c "/usr/local/hadoop/sbin/start-all.sh"
su - hadoop -c "/usr/local/spark/sbin/start-all.sh"