apache spark 是什么

apache spark 是什么

spark是一個基于內(nèi)存計算的開源的集群計算系統(tǒng),目的是讓數(shù)據(jù)分析更加快速。Spark非常小巧玲瓏,由加州伯克利大學AMP實驗室的Matei為主的小團隊所開發(fā)。使用的語言是scala,項目的core部分的代碼只有63個Scala文件,非常短小精悍。

Spark 是一種與 hadoop 相似的開源集群計算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現(xiàn)得更加優(yōu)越,換句話說,Spark 啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負載。

Spark 是在 Scala 語言中實現(xiàn)的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式數(shù)據(jù)集。

盡管創(chuàng)建 Spark 是為了支持分布式數(shù)據(jù)集上的迭代作業(yè),但是實際上它是對 Hadoop 的補充,可以在 Hadoop 文件系統(tǒng)中并行運行。通過名為Mesos的第三方集群框架可以支持此行為。Spark 由加州大學伯克利分校?AMP 實驗室 (Algorithms, Machines, and People Lab) 開發(fā),可用來構(gòu)建大型的、低延遲的數(shù)據(jù)分析應用程序。

Spark?集群計算架構(gòu)
雖然 Spark 與 Hadoop 有相似之處,但它提供了具有有用差異的一個新的集群計算框架。首先,Spark 是為集群計算中的特定類型的工作負載而設計,即那些在并行操作之間重用工作數(shù)據(jù)集(比如機器學習算法)的工作負載。為了優(yōu)化這些類型的工作負載,Spark 引進了內(nèi)存集群計算的概念,可在內(nèi)存集群計算中將數(shù)據(jù)集緩存在內(nèi)存中,以縮短訪問延遲。

Spark 還引進了名為彈性分布式數(shù)據(jù)集(RDD) 的抽象。RDD 是分布在一組節(jié)點中的只讀對象集合。這些集合是彈性的,如果數(shù)據(jù)集一部分丟失,則可以對它們進行重建。重建部分數(shù)據(jù)集的過程依賴于容錯機制,該機制可以維護 “血統(tǒng)”(即允許基于數(shù)據(jù)衍生過程重建部分數(shù)據(jù)集的信息)。RDD 被表示為一個 Scala 對象,并且可以從文件中創(chuàng)建它;一個并行化的切片(遍布于節(jié)點之間);另一個 RDD 的轉(zhuǎn)換形式;并且最終會徹底改變現(xiàn)有 RDD 的持久性,比如請求緩存在內(nèi)存中。

Spark 中的應用程序稱為驅(qū)動程序,這些驅(qū)動程序可實現(xiàn)在單一節(jié)點上執(zhí)行的操作或在一組節(jié)點上并行執(zhí)行的操作。與 Hadoop 類似,Spark 支持單節(jié)點集群或多節(jié)點集群。對于多節(jié)點操作,Spark 依賴于 Mesos 集群管理器。Mesos 為分布式應用程序的資源共享和隔離提供了一個有效平臺。該設置充許 Spark 與 Hadoop 共存于節(jié)點的一個共享池中。

更多apache的相關(guān)技術(shù)文章,請訪問Apache教程欄目進行學習!

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊11 分享