科普Spark,Spark是什么,如何使用Spark

責(zé)任編輯:editor004

2014-11-21 17:35:38

摘自:36大數(shù)據(jù)

由于RDD的特性,Spark不適用那種異步細(xì)粒度更新狀態(tài)的應(yīng)用,例如web服務(wù)的存儲(chǔ)或者是增量的web爬蟲和索引。

本文章可以解答以下問題:

1.Spark基于什么算法的分布式計(jì)算(很簡(jiǎn)單)

2.Spark與MapReduce不同在什么地方

3.Spark為什么比Hadoop靈活

4.Spark局限是什么

5.什么情況下適合使用Spark

spark

  什么是Spark

Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的并行計(jì)算框架,Spark基于map reduce算法實(shí)現(xiàn)的分布式計(jì)算,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是Job中間輸出和結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的map reduce的算法。其架構(gòu)如下圖所示:

spark 大數(shù)據(jù)

  Spark與Hadoop的對(duì)比

Spark的中間數(shù)據(jù)放到內(nèi)存中,對(duì)于迭代運(yùn)算效率更高。

Spark更適合于迭代運(yùn)算比較多的ML和DM運(yùn)算。因?yàn)樵赟park里面,有RDD的抽象概念。

Spark比Hadoop更通用

Spark提供的數(shù)據(jù)集操作類型有很多種,不像Hadoop只提供了Map和Reduce兩種操作。比如map, filter, flatMap, sample, groupByKey, reduceByKey, union, join, cogroup, mapValues, sort,partionBy等多種操作類型,Spark把這些操作稱為Transformations。同時(shí)還提供Count, collect, reduce, lookup, save等多種actions操作。

這些多種多樣的數(shù)據(jù)集操作類型,給給開發(fā)上層應(yīng)用的用戶提供了方便。各個(gè)處理節(jié)點(diǎn)之間的通信模型不再像Hadoop那樣就是唯一的Data Shuffle一種模式。用戶可以命名,物化,控制中間結(jié)果的存儲(chǔ)、分區(qū)等??梢哉f編程模型比Hadoop更靈活。

不過由于RDD的特性,Spark不適用那種異步細(xì)粒度更新狀態(tài)的應(yīng)用,例如web服務(wù)的存儲(chǔ)或者是增量的web爬蟲和索引。就是對(duì)于那種增量修改的應(yīng)用模型不適合。

容錯(cuò)性

在分布式數(shù)據(jù)集計(jì)算時(shí)通過checkpoint來實(shí)現(xiàn)容錯(cuò),而checkpoint有兩種方式,一個(gè)是checkpoint data,一個(gè)是logging the updates。用戶可以控制采用哪種方式來實(shí)現(xiàn)容錯(cuò)。

可用性

Spark通過提供豐富的Scala, Java,Python API及交互式Shell來提高可用性。

Spark與Hadoop的結(jié)合

Spark可以直接對(duì)HDFS進(jìn)行數(shù)據(jù)的讀寫,同樣支持Spark on YARN。Spark可以與MapReduce運(yùn)行于同集群中,共享存儲(chǔ)資源與計(jì)算,數(shù)據(jù)倉庫Shark實(shí)現(xiàn)上借用Hive,幾乎與Hive完全兼容。

Spark的適用場(chǎng)景

Spark是基于內(nèi)存的迭代計(jì)算框架,適用于需要多次操作特定數(shù)據(jù)集的應(yīng)用場(chǎng)合。需要反復(fù)操作的次數(shù)越多,所需讀取的數(shù)據(jù)量越大,受益越大,數(shù)據(jù)量小但是計(jì)算密集度較大的場(chǎng)合,受益就相對(duì)較?。ù髷?shù)據(jù)庫架構(gòu)中這是是否考慮使用Spark的重要因素)

由于RDD的特性,Spark不適用那種異步細(xì)粒度更新狀態(tài)的應(yīng)用,例如web服務(wù)的存儲(chǔ)或者是增量的web爬蟲和索引。就是對(duì)于那種增量修改的應(yīng)用模型不適合。

總的來說Spark的適用面比較廣泛且比較通用。

運(yùn)行模式

本地模式

Standalone模式

Mesoes模式

yarn模式

Spark生態(tài)系統(tǒng)

Shark ( Hive on Spark): Shark基本上就是在Spark的框架基礎(chǔ)上提供和Hive一樣的H iveQL命令接口,為了最大程度的保持和Hive的兼容性,Shark使用了Hive的API來實(shí)現(xiàn)query Parsing和 Logic Plan generation,最后的PhysicalPlan execution階段用Spark代替Hadoop MapReduce。通過配置Shark參數(shù),Shark可以自動(dòng)在內(nèi)存中緩存特定的RDD,實(shí)現(xiàn)數(shù)據(jù)重用,進(jìn)而加快特定數(shù)據(jù)集的檢索。同時(shí),Shark通過UDF用戶自定義函數(shù)實(shí)現(xiàn)特定的數(shù)據(jù)分析學(xué)習(xí)算法,使得SQL數(shù)據(jù)查詢和運(yùn)算分析能結(jié)合在一起,最大化RDD的重復(fù)使用。

Spark streaming: 構(gòu)建在Spark上處理Stream數(shù)據(jù)的框架,基本的原理是將Stream數(shù)據(jù)分成小的時(shí)間片斷(幾秒),以類似batch批量處理的方式來處理這小部分?jǐn)?shù)據(jù)。Spark Streaming構(gòu)建在Spark上,一方面是因?yàn)镾park的低延遲執(zhí)行引擎(100ms+)可以用于實(shí)時(shí)計(jì)算,另一方面相比基于Record的其它處理框架(如Storm),RDD數(shù)據(jù)集更容易做高效的容錯(cuò)處理。此外小批量處理的方式使得它可以同時(shí)兼容批量和實(shí)時(shí)數(shù)據(jù)處理的邏輯和算法。方便了一些需要?dú)v史數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù)聯(lián)合分析的特定應(yīng)用場(chǎng)合。

Bagel: Pregel on Spark,可以用Spark進(jìn)行圖計(jì)算,這是個(gè)非常有用的小項(xiàng)目。Bagel自帶了一個(gè)例子,實(shí)現(xiàn)了Google的PageRank算法。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)