1. 程式人生 > >安裝spark叢集及spark介紹

安裝spark叢集及spark介紹

Spark的介紹 Hadoop與Strom Hadoop:
  1. MapReduce:為海量資料提供了計算,但只有Map和Reduce操作,操作不靈活。
  2. HDFS(分散式檔案系統):為海量的資料提供了儲存。(把全部計算機的儲存能力合在一起,資料通過網路在節點之間傳輸)。 
Strom:一個分散式的、容錯的實時計算系統。  大資料處理
  1. 複雜的批量資料處理(batch data processing)
  2. 基於歷史資料的互動式查詢(interactive query)
  3. 基於實時資料流的資料處理(streaming data processing)
Spark特點與應用場景   Spark是通用的並行化計算框架,基於MapReduce實現分散式計算,其中間結果可以儲存在記憶體中,從而不再需要讀寫HDFS。
特點:
  1. 簡單方便,使用scala語言。(與RDD很好結合)
  2. 計算速度快,中間結果快取在記憶體中。
  3. 高錯誤容忍。
  4. 操作豐富。
  5. 廣播,每個節點可以保留一份小資料集。
核心:RDD(Resilient Distributed Datasets彈性分散式資料集) 應用場景:
  1. 迭代式演算法:迭代式機器學習、圖演算法,包括PageRank、K-means聚類和邏輯迴歸(logistic regression)。
  2. 互動式資料探勘工具:使用者在同一資料子集上執行多個Adhoc查詢。
框架
RDD   RDD是一種只讀的、分割槽的記錄集合。Spark藉助RDD實現對類存的管理。 操作:
  1. 轉換(transformation):生成新的RDD。(map/filter/groupBy/join)
  2. 動作(action):將RDD上的某項操作的結果返回給程式,不產生RDD。(count/reduce/collect/save)
分割槽:對RDD分割槽,儲存在多個節點上,實現分散式計算。  持久化:RDD快取。(在記憶體中或者溢位到磁碟)(容錯&加速)  血統(lineage):RDD有足夠資訊關於它是如何從其他RDD產生而來的。(容錯) 物件: 
依賴 轉換操作產生新的RDD 
窄依賴:父RDD只有一個子分割槽。  寬依賴:每個子RDD依賴所有父RDD分割槽。 懶惰計算 懶惰計算(lazy evaluation):Spark在遇到 Transformations操作時只會記錄需要這樣的操作,並不會去執行,需要等到有Actions操作的時候才會真正啟動計算過程進行計算。(不像python和matlab馬上執行)。
一個系統知道全部RDD的計算路徑的時候,它才擁有最大的優化空間。 DAG 優化任意操作運算元圖 
Spark會盡可能地管道化,並基於是否要重新組織資料來劃分階段(stage)。 窄依賴:多個RDD合併成一個,在一個節點進行,不用生成中間RDD結果。(管道化)  寬依賴:沒啥優化。 排程過程

容錯
  1. Checkpoint:資料備份,檢測資料完整性。比較佔用空間,資料複製需要消耗時間。(hadoop只有這個)
  2. loggingthe updates:依靠lineage chains,記錄每個RDD產生方法,根據儲存資訊重構資料集合,其他節點幫組重構。節省空間,如果血緣關係複雜,可能導致全部節點重新計算。
Spark的安裝教程 安裝JDK與Scala
  1. 下載JDK:sudo apt-get install openjdk-7-jre-headless。
  2. 解壓縮:tar –zxvf scala-2.10.6.tgz。
  3. 進入sudo vim /etc/profile在下面新增路徑:
SCALA_HOME=/home/scala/scala-2.10.6 (解壓後的包所在的路徑) PATH=$PATH:${SCALA_HOME}/bin
  1. 使修改生效source /etc/profile。
  2. 在命令列輸入scala測試。
安裝Spark
  1. 解壓縮: tar –zxvf spark-1.5.1-bin-hadoop2.6.tgz
  2. 進入sudo vim /etc/profile在下面新增路徑:
SPARK_HOME=/home/spark/spark-lectures/spark-1.5.1-bin-hadoop2.6 (解壓後的包所在的路徑) PATH=$PATH:${SPARK_HOME}/bin 配置spark
  • 配置 Spark
cd ~/workspace/spark-1.3.0/conf    #進入spark配置目錄
cp spark-env.sh.template spark-env.sh   #從配置模板複製
vi spark-env.sh     #新增配置內容
  • 1
  • 2
  • 3

在spark-env.sh末尾新增以下內容(這是我的配置,你可以自行修改):

export SCALA_HOME=/home/spark/workspace/scala-2.10.4
export JAVA_HOME=/home/spark/workspace/jdk1.7.0_75
export HADOOP_HOME=/home/spark/workspace/hadoop-2.6.0
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/home/spark/spark-lectures/spark-1.5.1-bin-hadoop2.6SPARK_DRIVER_MEMORY=1G
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

注:在設定Worker程序的CPU個數和記憶體大小,要注意機器的實際硬體條件,如果配置的超過當前Worker節點的硬體條件,Worker程序會啟動失敗。

vi slaves在slaves檔案下填上slave主機名:

slave1
slave2
  • 1
  • 2

將配置好的spark-1.3.0資料夾分發給所有slaves吧

scp -r ~/workspace/spark-1.3.0 spark@slave1:~/workspace/
  • 1

啟動Spark

sbin/start-all.sh
  • 1

驗證 Spark 是否安裝成功

用jps檢查,在 master 上應該有以下幾個進

$ jps
7949 Jps
7328 SecondaryNameNode
7805 Master
7137 NameNode
7475 ResourceManager
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

slave 上應該有以下幾個程序:

$jps
3132 DataNode
3759 Worker
3858 Jps
3231 NodeManager
  • 1
  • 2
  • 3
  • 4
  • 5
注:啟動spark之前要啟動hadoop。 參考 http://blog.csdn.net/dengpei187/article/details/52280760
http://blog.csdn.net/lin360580306/article/details/51233397