概述:
Spark是一個基於內存計算的開源集羣計算系統,目的是讓數據分析更加快速。
Spark非常小巧玲瓏,由加州伯克利大學AMP實驗室的小團隊開發。使用的語言是Scala,項目的core部分的代碼只有63個Scala文件。(AMP實驗室名字有點意思:
Algorithm Machine People,算法、機器、人)
Spark是一種與Hadoop相似的開源集羣計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使得Spark在某些工作負載方面表現得更加優越,換句話
說,Spark啓用了內存分佈數據集,除了能夠提供交互式查詢外,它還可以優化迭代
工作負載。
Spark是在Scala語言中實現的,它將Scala用作其應用程序框架。與Hadoop不同,
Spark和Scala能夠緊密集成,其中的Scala可以像操作本地集合對象一樣輕鬆地操作
分佈式數據集。
Spark還引進了豐富的RDD(彈性分佈式數據集)。RDD是分佈在一組節點中的只
讀對象集合。這些集合是彈性的,如果數據集一部分丟失,則可以對他們進行重建。
重建部分數據集的過程依賴於容錯機制,該機制可以維護“血統”(即允許基於數
據衍生過程重建部分數據集的信息)。RDD被表示爲一個Scala對象,並且可以從文
件中創建它;
總結:
1.Spark是一個開發庫
2.任何能運行成功的庫都可能成爲Spark的一部分
3.通用,它可以和spark SQL,Spark Streaming,MLlib(machine leaning),Graphx無縫集成
它是一個平臺,是一個通用的開發庫
4.各個行業及專家的構思可集合至Spark,成爲強大的API
Spark優勢:
1.首先Spark是基於內存的計算
2.提供了支持DAG圖的分佈式並行計算框架,減少多次計算之間的中間結果IO開銷
3.提供Cache機制來支持多次迭代計算或者數據共享,減少IO開銷
4.RDD之間維護了血統關係,一旦RDD掛掉了,能通過父RDD自動重建保證了容錯性
5.移動計算而非移動數據,RDD分區可以就近讀取分佈式文件系統中的數據塊到各
個節點內存中進行計算
6.使用多線程池模型來減少task啓動開銷
7.shuffle過程中避免不必要的sort操作
8.使用容錯的高可伸縮性的akka做爲通訊框架
運行框架:
1.Hadoop的MapReduce框架平臺YARN
2.Apache Mesos框架平臺3.Spark的Standalone框架平臺
4.亞馬遜的AWS平臺
另,與Hadoop2.7.0一樣,社區決定從Spark1.5將不再支持JDK1.6
JDK1.7的參考資料:
http://liujunjie51072.blog.163.com/blog/static/868916212009915105633843/