行業(yè)廣泛使用Hadoop來分析他們的數(shù)據(jù)集。原因是Hadoop框架基于一個簡單的編程模型(MapReduce),它支持可擴展,靈活,容錯和成本有效的計算解決方案。這里,主要關(guān)注的是在處理大型數(shù)據(jù)集時在查詢之間的等待時間和運行程序的等待時間方面保持速度。
Spark由Apache Software Foundation引入,用于加速Hadoop計算軟件過程。
對于一個普遍的信念,
Spark不是Hadoop的修改版本,并不是真的依賴于Hadoop,因為它有自己的集群管理。 Hadoop只是實現(xiàn)Spark的方法之一。
Spark以兩種方式使用Hadoop - 一個是
存儲,另一個是
處理。由于Spark具有自己的集群管理計算,因此它僅使用Hadoop進行存儲。
Apache Spark簡介
Apache Spark是一種快速的集群計算技術(shù),專為快速計算而設計。它基于Hadoop MapReduce,它擴展了MapReduce模型,以有效地將其用于更多類型的計算,包括交互式查詢和流處理。 Spark的主要特性是它的
內(nèi)存中集群計算,提高了應用程序的處理速度。
Spark旨在涵蓋各種工作負載,如批處理應用程序,迭代算法,交互式查詢和流式處理。除了在相應系統(tǒng)中支持所有這些工作負載之外,它還減少了維護單獨工具的管理負擔。
Apache Spark的演變
Spark是Hadoop在2009年在加州大學伯克利分校的Matei Zaharia的AMPLab開發(fā)的子項目之一。它是在2010年根據(jù)BSD許可開放。它在2013年捐贈給Apache軟件基金會,現(xiàn)在Apache Spark已經(jīng)成為2014年2月的頂級Apache項目。
Apache Spark的特性
Apache Spark具有以下功能。
速度
Spark有助于在Hadoop集群中運行應用程序,在內(nèi)存中速度提高100倍,在磁盤上運行時提高10倍。這可以通過減少對磁盤的讀/寫操作的數(shù)量來實現(xiàn)。它將中間處理數(shù)據(jù)存儲在存儲器中。
支持多種語言
Spark在Java,Scala或Python中提供了內(nèi)置的API。因此,您可以使用不同的語言編寫應用程序。 Spark提供了80個高級操作符進行交互式查詢。
高級分析
Spark不僅支持“Map”和“reduce”。它還支持SQL查詢,流數(shù)據(jù),機器學習(ML)和圖算法。
Spark基于Hadoop
下圖顯示了如何使用Hadoop組件構(gòu)建Spark的三種方式。
Spark部署有三種方式,如下所述。
Standalone- Spark獨立部署意味著Spark占據(jù)HDFS(Hadoop分布式文件系統(tǒng))頂部的位置,并明確為HDFS分配空間。 這里,Spark和MapReduce將并行運行以覆蓋集群上的所有spark作業(yè)。
Hadoop Yarn- Hadoop Yarn部署意味著,spark只需運行在Yarn上,無需任何預安裝或根訪問。 它有助于將Spark集成到Hadoop生態(tài)系統(tǒng)或Hadoop堆棧中。 它允許其他組件在堆棧頂部運行。
Spark in MapReduce (SIMR) - MapReduce中的Spark用于在獨立部署之外啟動spark job。 使用SIMR,用戶可以啟動Spark并使用其shell而無需任何管理訪問。
Spark的組件
下圖說明了Spark的不同組件。
Apache Spark Core
Spark Core是spark平臺的基礎(chǔ)通用執(zhí)行引擎,所有其他功能都是基于。它在外部存儲系統(tǒng)中提供內(nèi)存計算和引用數(shù)據(jù)集。
Spark SQLSpark SQL是Spark Core之上的一個組件,它引入了一個稱為SchemaRDD的新數(shù)據(jù)抽象,它為結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)提供支持。
Spark Streaming
Spark Streaming利用Spark Core的快速調(diào)度功能來執(zhí)行流式分析。它以小批量獲取數(shù)據(jù),并對這些小批量的數(shù)據(jù)執(zhí)行RDD(彈性分布式數(shù)據(jù)集)轉(zhuǎn)換。
MLlib (Machine Learning Library)
MLlib是Spark之上的分布式機器學習框架,因為基于分布式內(nèi)存的Spark架構(gòu)。根據(jù)基準,它是由MLlib開發(fā)人員針對交替最小二乘法(ALS)實現(xiàn)完成的。 Spark MLlib是基于Hadoop磁盤的
Apache Mahout版本的9倍(在Mahout獲得了Spark接口之前)。
GraphXGraphX是Spark上的一個分布式圖形處理框架。它提供了一個用于表達圖形計算的API,可以通過使用Pregel抽象API為用戶定義的圖形建模。它還為此抽象提供了一個優(yōu)化的運行時。
更多建議: