Spark學習筆記之淺釋
概述:
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/