Spark 簡介與特徵

行業廣泛使用Hadoop來分析他們的數據集。原因是Hadoop框架基於一個簡單的編程模型(MapReduce),它支持可擴展,靈活,容錯和成本有效的計算解決方案。這裡,主要關注的是在處理大型數據集時在查詢之間的等待時間和運行程序的等待時間方面保持速度。Spark由Apache Software Foundation引入,用於加速Hadoop計算軟件過程。對於一個普遍的信念,Spark不是Hadoop的修改版本,並不是真的依賴於Hadoop,因為它有自己的集群管理。 Hadoop只是實現Spark的方法之一。Spark以兩種方式使用Hadoop - 一個是存儲,另一個是處理。由於Spark具有自己的集群管理計算,因此它僅使用Hadoop進行存儲。

Apache Spark簡介

Apache Spark是一種快速的集群計算技術,專為快速計算而設計。它基於Hadoop MapReduce,它擴展了MapReduce模型,以有效地將其用於更多類型的計算,包括交互式查詢和流處理。 Spark的主要特性是它的內存中集群計算,提高了應用程序的處理速度。Spark旨在涵蓋各種工作負載,如批處理應用程序,迭代算法,交互式查詢和流式處理。除了在相應系統中支持所有這些工作負載之外,它還減少了維護單獨工具的管理負擔。

Apache Spark的演變

Spark是Hadoop在2009年在加州大學伯克利分校的Matei Zaharia的AMPLab開發的子項目之一。它是在2010年根據BSD許可開放。它在2013年捐贈給Apache軟件基金會,現在Apache Spark已經成為2014年2月的頂級Apache項目。

Apache Spark的特性

Apache Spark具有以下功能。

速度

Spark有助於在Hadoop集群中運行應用程序,在內存中速度提高100倍,在磁盤上運行時提高10倍。這可以通過減少對磁盤的讀/寫操作的數量來實現。它將中間處理數據存儲在存儲器中。

支持多種語言

Spark在Java,Scala或Python中提供了內置的API。因此,您可以使用不同的語言編寫應用程序。 Spark提供了80個高級操作符進行交互式查詢。

高級分析

Spark不僅支持“Map”和“reduce”。它還支持SQL查詢,流數據,機器學習(ML)和圖算法。

Spark基於Hadoop

下圖顯示瞭如何使用Hadoop組件構建Spark的三種方式。

Spark 簡介與特徵

Spark部署有三種方式,如下所述。Standalone- Spark獨立部署意味著Spark佔據HDFS(Hadoop分佈式文件系統)頂部的位置,並明確為HDFS分配空間。 這裡,Spark和MapReduce將並行運行以覆蓋集群上的所有spark作業。Hadoop Yarn- Hadoop Yarn部署意味著,spark只需運行在Yarn上,無需任何預安裝或根訪問。 它有助於將Spark集成到Hadoop生態系統或Hadoop堆棧中。 它允許其他組件在堆棧頂部運行。Spark in MapReduce (SIMR) - MapReduce中的Spark用於在獨立部署之外啟動spark job。 使用SIMR,用戶可以啟動Spark並使用其shell而無需任何管理訪問。

Spark的組件

下圖說明了Spark的不同組件。

Spark 簡介與特徵


Apache Spark Core

Spark Core是spark平臺的基礎通用執行引擎,所有其他功能都是基於。它在外部存儲系統中提供內存計算和引用數據集。Spark SQLSpark SQL是Spark Core之上的一個組件,它引入了一個稱為SchemaRDD的新數據抽象,它為結構化和半結構化數據提供支持。

Spark Streaming

Spark Streaming利用Spark Core的快速調度功能來執行流式分析。它以小批量獲取數據,並對這些小批量的數據執行RDD(彈性分佈式數據集)轉換。

MLlib (Machine Learning Library)

MLlib是Spark之上的分佈式機器學習框架,因為基於分佈式內存的Spark架構。根據基準,它是由MLlib開發人員針對交替最小二乘法(ALS)實現完成的。 Spark MLlib是基於Hadoop磁盤的Apache Mahout版本的9倍(在Mahout獲得了Spark接口之前)。GraphXGraphX是Spark上的一個分佈式圖形處理框架。它提供了一個用於表達圖形計算的API,可以通過使用Pregel抽象API為用戶定義的圖形建模。它還為此抽象提供了一個優化的運行時。


分享到:


相關文章: