用Apache Spark進行大數據處理二

Spark特性

Spark通過在數據處理過程中成本更低的洗牌(Shuffle)方式,將MapReduce提升到一個更高的層次。利用內存數據存儲和接近實時的處理能力,Spark比其他的大數據處理技術的性能要快很多倍。

Spark還支持大數據查詢的延遲計算,這可以幫助優化大數據處理流程中的處理步驟。Spark還提供高級的API以提升開發者的生產力,除此之外還爲大數據解決方案提供一致的體系架構模型。

Spark將中間結果保存在內存中而不是將其寫入磁盤,當需要多次處理同一數據集時,這一點特別實用。Spark的設計初衷就是既可以在內存中又可以在磁盤上工作的執行引擎。當內存中的數據不適用時,Spark操作符就會執行外部操作。Spark可以用於處理大於集羣內存容量總和的數據集。

Spark會嘗試在內存中存儲儘可能多的數據然後將其寫入磁盤。它可以將某個數據集的一部分存入內存而剩餘部分存入磁盤。開發者需要根據數據和用例評估對內存的需求。Spark的性能優勢得益於這種內存中的數據存儲。

Spark的其他特性包括:

· 支持比MapReduce更多的函數。

· 優化任意操作算子圖(operator graphs)。

· 可以幫助優化整體數據處理流程的大數據查詢的延遲計算。

· 提供簡明、一致的ScalaJavaPython API

· 提供交互式ScalaPython Shell。目前暫不支持Java

Spark是用Scala程序設計語言編寫而成,運行於Java虛擬機(JVM)環境之上。目前支持如下程序設計語言編寫Spark應用:

· Scala

· Java

· Python

· Clojure

· R

Spark生態系統

除了Spark核心API之外,Spark生態系統中還包括其他附加庫,可以在大數據分析和機器學習領域提供更多的能力。

這些庫包括:

· Spark Streaming:

Spark Streaming基於微批量方式的計算和處理,可以用於處理實時的流數據。它使用DStream,簡單來說就是一個彈性分佈式數據集(RDD)系列,處理實時數據。

· Spark SQL:

Spark SQL可以通過JDBC APISpark數據集暴露出去,而且還可以用傳統的BI和可視化工具在Spark數據上執行類似SQL的查詢。用戶還可以用Spark SQL對不同格式的數據(如JSONParquet以及數據庫等)執行ETL,將其轉化,然後暴露給特定的查詢。

· Spark MLlib:

MLlib是一個可擴展的Spark機器學習庫,由通用的學習算法和工具組成,包括二元分類、線性迴歸、聚類、協同過濾、梯度下降以及底層優化原語。

· Spark GraphX:

GraphX是用於圖計算和並行圖計算的新的(alphaSpark API。通過引入彈性分佈式屬性圖(Resilient Distributed Property Graph),一種頂點和邊都帶有屬性的有向多重圖,擴展了Spark RDD。爲了支持圖計算,GraphX暴露了一個基礎操作符集合(如subgraphjoinVerticesaggregateMessages)和一個經過優化的Pregel API變體。此外,GraphX還包括一個持續增長的用於簡化圖分析任務的圖算法和構建器集合。

除了這些庫以外,還有一些其他的庫,如BlinkDBTachyon

BlinkDB是一個近似查詢引擎,用於在海量數據上執行交互式SQL查詢。BlinkDB可以通過犧牲數據精度來提升查詢響應時間。通過在數據樣本上執行查詢並展示包含有意義的錯誤線註解的結果,操作大數據集合。

Tachyon是一個以內存爲中心的分佈式文件系統,能夠提供內存級別速度的跨集羣框架(如SparkMapReduce)的可信文件共享。它將工作集文件緩存在內存中,從而避免到磁盤中加載需要經常讀取的數據集。通過這一機制,不同的作業/查詢和框架可以以內存級的速度訪問緩存的文件。
此外,還有一些用於與其他產品集成的適配器,如CassandraSpark Cassandra 連接器)和RSparkR)。Cassandra Connector可用於訪問存儲在Cassandra數據庫中的數據並在這些數據上執行數據分析。

下圖展示了在Spark生態系統中,這些不同的庫之間的相互關聯。

 

1. Spark框架中的庫

我們將在這一系列文章中逐步探索這些Spark

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章