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