亞寵展、全球?qū)櫸锂a(chǎn)業(yè)風(fēng)向標(biāo)——亞洲寵物展覽會(huì)深度解析
827
2022-05-30
2.5 Spark
2.5.1 概述
十年前我們只有Hadoop,大家首先通過HDFS實(shí)現(xiàn)海量數(shù)據(jù)的共享存儲(chǔ),然后使用MapReduce以批處理的方式處理這些海量數(shù)據(jù),這一切看起來似乎十分完美。但眾口難調(diào)啊,有人覺得MapReduce的編程模型太難使用了,為什么不能使用SQL來分析數(shù)據(jù)呢?我們數(shù)據(jù)庫領(lǐng)域已經(jīng)有非常成熟的數(shù)據(jù)倉庫模型了,為何不實(shí)現(xiàn)一個(gè)大數(shù)據(jù)技術(shù)的數(shù)據(jù)倉庫呢?于是Hive類的框架便誕生了,人們開始使用Hive類的框架來構(gòu)建大數(shù)據(jù)技術(shù)的數(shù)據(jù)倉庫,使用SQL查詢數(shù)據(jù)。接著人們又開始詬病MapReduce的執(zhí)行效率太慢,因?yàn)樗举|(zhì)上是面向批處理場(chǎng)景的,難以支撐一些實(shí)時(shí)性要求很高的場(chǎng)景,我們需要一種能夠支撐流計(jì)算的架構(gòu),于是Storm類的框架誕生了。人們開始使用Storm這類框架處理流計(jì)算場(chǎng)景。接著伴隨垃圾郵件分析、商品推薦、金融風(fēng)控這類應(yīng)用場(chǎng)景需求的出現(xiàn),又迫使我們需要在大數(shù)據(jù)場(chǎng)景下具備機(jī)器學(xué)習(xí)的能力,于是乎Mahout類的框架出現(xiàn)了,人們使用它們來進(jìn)行大數(shù)據(jù)下的機(jī)器學(xué)習(xí)。
隨著越來越多來自應(yīng)用領(lǐng)域的細(xì)分需求,人們從最初Hadoop的HDFS和Map-Reduce開始,一步步地構(gòu)造出了各種細(xì)分領(lǐng)域的技術(shù)框架。有專攻處理批處理場(chǎng)景的,有專攻數(shù)據(jù)倉庫場(chǎng)景的,有處理流計(jì)算場(chǎng)景的,也有專職機(jī)器學(xué)習(xí)的。在我看來這有點(diǎn)像在給Hadoop打補(bǔ)丁,因?yàn)镠adoop在設(shè)計(jì)之初根本沒有考慮過這么多的場(chǎng)景,它只是為了支撐離線批處理。但是需求擺在這里,為了實(shí)現(xiàn)目標(biāo)只得另起爐灶通過設(shè)計(jì)一個(gè)全新的系統(tǒng)滿足需求。這種現(xiàn)狀造成了很多問題。
重復(fù)工作:不同的系統(tǒng)之間都需要解決一些相同的共性問題,比如分布式執(zhí)行和容錯(cuò)性。例如MapReduce、SQL查詢引擎和機(jī)器學(xué)習(xí)系統(tǒng)都會(huì)涉及聚合操作。
組合:不同系統(tǒng)之間的組合使用非常“昂貴”,因?yàn)椴煌到y(tǒng)之間無法有效的功效數(shù)。為了組合使用我們需要將數(shù)據(jù)在不同的系統(tǒng)之間頻繁的導(dǎo)出導(dǎo)入,數(shù)據(jù)用來移動(dòng)的時(shí)間可能都會(huì)超過計(jì)算的時(shí)間。
維護(hù)成本:雖然這些系統(tǒng)從每個(gè)個(gè)體的角度來看都十分優(yōu)秀,但是它們都是在不同時(shí)期由不同的團(tuán)隊(duì)設(shè)計(jì)實(shí)現(xiàn)的,其設(shè)計(jì)思路和實(shí)現(xiàn)方式也各不相同。這導(dǎo)致平臺(tái)在部署運(yùn)維這些系統(tǒng)的時(shí)候十分痛苦,因?yàn)樗鼈儾町愄罅恕?/p>
學(xué)習(xí)成本:系統(tǒng)之間巨大的差異性對(duì)于開發(fā)人員來講更是如此,這些技術(shù)框架擁有不同的邏輯對(duì)象、專業(yè)術(shù)語、API和編程模型,每種框架都需要重新學(xué)習(xí)一遍才能使用。
Spark意識(shí)到了這個(gè)問題,作為一個(gè)后起之秀它擁有天然的優(yōu)勢(shì)。Spark誕生于2012年,那個(gè)時(shí)候Hadoop生態(tài)已經(jīng)經(jīng)過了6個(gè)年頭的發(fā)展,其生態(tài)格局已經(jīng)成型。Spark已經(jīng)能夠看清大數(shù)據(jù)有哪些細(xì)分領(lǐng)域,同時(shí)MapReduce、Hive、Storm等開源組件也已經(jīng)發(fā)展多年,Spark也能夠了解到它們的長處和不足。
于是Spark橫空出世,成為目前開源社區(qū)最為火爆的一款分布式內(nèi)存計(jì)算引擎。Spark使用DAG(有向無環(huán)圖)模型作為其執(zhí)行模型,并且主要使用內(nèi)存計(jì)算的方式進(jìn)行任務(wù)計(jì)算。Spark基于一套統(tǒng)一的數(shù)據(jù)模型(RDD)和編程模型(Trans-foration /Action)之上,構(gòu)建出了Spark SQL、Spark Streaming、Spark MLibs等多個(gè)分支,其功能涵蓋了大數(shù)據(jù)的多個(gè)領(lǐng)域,如圖2-14所示。
圖2-14 Spark涵蓋的領(lǐng)域
Spark通過統(tǒng)一的數(shù)據(jù)模型和編程模型,構(gòu)造出了SQL查詢、流計(jì)算、機(jī)器學(xué)習(xí)和圖計(jì)算等多個(gè)分支庫
spark 大數(shù)據(jù)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。