偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

從Hadoop到Spark和Flink,大數(shù)據(jù)處理框架十年激蕩發(fā)展史

大數(shù)據(jù) Hadoop Spark
本文將從大數(shù)據(jù)的基礎(chǔ)特性開始,進(jìn)而解釋分而治之的處理思想,最后介紹一些流行的大數(shù)據(jù)技術(shù)和組件,讀者能夠通過本文了解大數(shù)據(jù)的概念、處理方法和流行技術(shù)。

當(dāng)前這個數(shù)據(jù)時代,各領(lǐng)域各業(yè)務(wù)場景時時刻刻都有大量的數(shù)據(jù)產(chǎn)生,如何理解大數(shù)據(jù),對這些數(shù)據(jù)進(jìn)行有效的處理成為很多企業(yè)和研究機(jī)構(gòu)所面臨的問題。本文將從大數(shù)據(jù)的基礎(chǔ)特性開始,進(jìn)而解釋分而治之的處理思想,最后介紹一些流行的大數(shù)據(jù)技術(shù)和組件,讀者能夠通過本文了解大數(shù)據(jù)的概念、處理方法和流行技術(shù)。

什么是大數(shù)據(jù)?

大數(shù)據(jù),顧名思義,就是擁有龐大體量的數(shù)據(jù)。關(guān)于什么是大數(shù)據(jù),如何定義大數(shù)據(jù),如何使用大數(shù)據(jù)等一系列問題,不同領(lǐng)域背景的朋友理解各不相同。IBM將大數(shù)據(jù)歸納為5個V[^1],涵蓋了大數(shù)據(jù)絕大多數(shù)的特性。 

從Hadoop到Spark和Flink,大數(shù)據(jù)處理框架十年激蕩發(fā)展史

大數(shù)據(jù)的5個V 來源:IBM

  • Volume:數(shù)據(jù)量大,從TB(1,024 GB)、PB(1,024 TB)、EB(1,024 PB)、ZB(1,024 EB)甚至到Y(jié)B(1,024 ZB)。紐約證交所每天產(chǎn)生的交易數(shù)據(jù)大約在TB級,瑞士日內(nèi)瓦附近的大型強(qiáng)子對撞機(jī)每年產(chǎn)生的數(shù)據(jù)約為PB級,而目前全球數(shù)據(jù)總量已經(jīng)在ZB級,相當(dāng)于 1,000,000 PB,也就是大家更熟悉的10億 TB?;诟笠?guī)模的數(shù)據(jù),我們可以對某個研究對象的歷史、現(xiàn)狀和未來有更加全面的了解。
  • Velocity:數(shù)據(jù)產(chǎn)生速度快,所要求的處理速度和時效性高,因?yàn)闀r間就是金錢。金融市場的交易數(shù)據(jù)必須以秒級的速度進(jìn)行處理,搜索和推薦引擎需要在分鐘級將實(shí)時新聞推送給用戶。更快的數(shù)據(jù)處理速度,讓我們基于最新的數(shù)據(jù)上做更加實(shí)時的決策。
  • Variety:數(shù)據(jù)類型繁多,包括數(shù)字、文字、圖片、視頻等不同的數(shù)據(jù)形式,也包括來自社交網(wǎng)絡(luò)、視頻網(wǎng)站、可穿戴設(shè)備以及各類傳感器的數(shù)據(jù)。數(shù)據(jù)可能是Excel里高度結(jié)構(gòu)化的數(shù)據(jù),也可能是圖片和視頻這種非結(jié)構(gòu)化的數(shù)據(jù)。
  • Veracity:數(shù)據(jù)真實(shí)性。一方面,數(shù)據(jù)并非天然具有高價值,一些異常值會被摻雜進(jìn)來,例如,統(tǒng)計偏差、人的情感影響、天氣、經(jīng)濟(jì)因素甚至謊報數(shù)據(jù)等。另一方面,數(shù)據(jù)源類型不同,數(shù)據(jù)源多樣,如何將這些多元異構(gòu)數(shù)據(jù)連接、匹配、清洗和轉(zhuǎn)化,形成具有高置信度的數(shù)據(jù)是一項非常有挑戰(zhàn)的工作。
  • Value:數(shù)據(jù)價值。我們研究和利用大數(shù)據(jù)的最終目的是提供更有價值的決策支持,基于以上提到的四個V,挖掘大數(shù)據(jù)的深層價值。

在數(shù)據(jù)分析領(lǐng)域,研究對象的全部被稱為總體(Population),總體包含大量的數(shù)據(jù),甚至說數(shù)據(jù)可能是無限的。比如調(diào)查15個國家的國民的誠信情況,所有國民是總體。很多情況下,我們無法保證能收集和分析總體的所有數(shù)據(jù),因此研究者一般基于研究對象的一個子集進(jìn)行數(shù)據(jù)分析。樣本(Sample)是從總體中抽取的個體,是研究對象的子集,通過對樣本的調(diào)查和分析,研究者可以推測總體的情況。在誠信調(diào)查的案例中,我們可以在每個國家抽取一部分國民作為樣本,以此推測該國國民的誠信水平。

在大數(shù)據(jù)技術(shù)成熟之前,受限于數(shù)據(jù)收集、存儲和分析能力,樣本數(shù)量相對較小,大數(shù)據(jù)技術(shù)的出現(xiàn)讓數(shù)據(jù)存儲和分析能力不再是瓶頸,研究者可以在更大規(guī)模的數(shù)據(jù)上,以更快地速度進(jìn)行數(shù)據(jù)分析。但數(shù)據(jù)并非天然有價值,如何讓數(shù)據(jù)點(diǎn)石成金非常有挑戰(zhàn)。在誠信調(diào)查中,如果我們直接詢問樣本對象:“你是否謊報了自己和家庭的資產(chǎn)以獲取更大的金融借貸額度?”十之八九,我們得不到真實(shí)的答案,但我們可以綜合多種渠道來分析該問題,比如結(jié)合樣本對象的工作經(jīng)歷、征信記錄等數(shù)據(jù)。

可見,大數(shù)據(jù)具有更大的數(shù)據(jù)量、更快的速度、更多的數(shù)據(jù)類型的特點(diǎn)。在一定的數(shù)據(jù)真實(shí)性基礎(chǔ)上,大數(shù)據(jù)技術(shù)最終為數(shù)據(jù)背后的價值服務(wù)。

隨著大數(shù)據(jù)技術(shù)的發(fā)展,數(shù)據(jù)的復(fù)雜性越來越高,有人在這5個V的基礎(chǔ)上,又提出了一些補(bǔ)充,比如增加了動態(tài)性(Vitality),強(qiáng)調(diào)整個數(shù)據(jù)體系的動態(tài)性;增加了可視性(Visualization),強(qiáng)調(diào)數(shù)據(jù)的顯性化展現(xiàn);增加了合法性(Validity),強(qiáng)調(diào)數(shù)據(jù)采集和應(yīng)用的合法性,特別是對于個人隱私數(shù)據(jù)的合理使用等;增加了數(shù)據(jù)在線(Online),強(qiáng)調(diào)數(shù)據(jù)永遠(yuǎn)在線,能隨時調(diào)用和計算。

分布式計算 分而治之

計算機(jī)誕生之后,一般是在單臺計算機(jī)上處理數(shù)據(jù)。大數(shù)據(jù)時代到來后,一些傳統(tǒng)的數(shù)據(jù)處理方法無法滿足大數(shù)據(jù)的處理需求,將一組計算機(jī)組織到一起形成一個集群,利用集群的力量來處理大數(shù)據(jù)的工程實(shí)踐逐漸成為主流方案。這種使用集群進(jìn)行計算的方式被稱為分布式計算,當(dāng)前幾乎所有的大數(shù)據(jù)系統(tǒng)都是在集群進(jìn)行分布式計算。 

從Hadoop到Spark和Flink,大數(shù)據(jù)處理框架十年激蕩發(fā)展史

分而治之的算法思想

分布式計算的概念聽起來很高深,其背后的思想十分樸素,即分而治之(Divide and Conquer),又被稱為分治法。分治法將一個原始問題分解為子問題,多個子問題分別在多臺機(jī)器上求解,借助必要的數(shù)據(jù)交換和合并策略,將子結(jié)果匯總即可求出最終結(jié)果。具體而言,不同的分布式計算系統(tǒng)所使用的算法和策略根據(jù)所要解決的問題各有不同,但基本上都是將計算拆分,把子問題放到多臺機(jī)器上,分而治之地計算求解。分布式計算的每臺機(jī)器(物理機(jī)或虛擬機(jī))又被稱為一個節(jié)點(diǎn)。

分布式計算在科研界已經(jīng)有很多比較成熟的方案,其中比較有名的有消息傳遞接口(Message Passing Interface,MPI)和MapReduce。

MPI

MPI是一個老牌分布式計算框架,主要解決節(jié)點(diǎn)間數(shù)據(jù)通信的問題。在前MapReduce時代,MPI是分布式計算的業(yè)界標(biāo)準(zhǔn)。MPI程序現(xiàn)在依然廣泛運(yùn)行在全球各大超級計算中心、大學(xué)、政府和軍隊下屬研究機(jī)構(gòu)中,許多物理、生物、化學(xué)、能源、航空航天等基礎(chǔ)學(xué)科的大規(guī)模分布式計算都依賴MPI。

分治法將問題切分成子問題,在不同節(jié)點(diǎn)上分而治之地求解,MPI提供了一個在多進(jìn)程多節(jié)點(diǎn)間進(jìn)行數(shù)據(jù)通信的方案,因?yàn)榻^大多數(shù)情況下,在中間計算和最終合并的過程中,需要對多個節(jié)點(diǎn)上的數(shù)據(jù)進(jìn)行交換和同步。 

從Hadoop到Spark和Flink,大數(shù)據(jù)處理框架十年激蕩發(fā)展史

MPI并行計算示意圖

MPI中最重要的兩個操作為數(shù)據(jù)發(fā)送(Send)和數(shù)據(jù)接收(Recv),Send表示將本進(jìn)程中某塊數(shù)據(jù)發(fā)送給其他進(jìn)程,Recv表示接收其他進(jìn)程的數(shù)據(jù)。上圖展示了MPI架構(gòu)在4臺服務(wù)器上并行計算的示意圖。在實(shí)際的代碼開發(fā)過程中,用戶需要自行設(shè)計分治算法,將復(fù)雜問題切分為子問題,手動調(diào)用MPI庫,將數(shù)據(jù)發(fā)送給指定的進(jìn)程。

MPI能夠在很細(xì)的粒度上控制數(shù)據(jù)的通信,這是它的優(yōu)勢,同時也是它的劣勢,因?yàn)榧?xì)粒度的控制意味著從分治算法設(shè)計到數(shù)據(jù)通信到結(jié)果匯總都需要編程人員手動控制。有經(jīng)驗(yàn)的程序員可以對程序進(jìn)行底層優(yōu)化,取得成倍的速度提升。但如果對計算機(jī)和分布式系統(tǒng)沒有太多經(jīng)驗(yàn),編碼、調(diào)試和運(yùn)行MPI程序的時間成本極高,加上數(shù)據(jù)在不同節(jié)點(diǎn)上不均衡和通信延遲等問題,一個節(jié)點(diǎn)進(jìn)程失敗將會導(dǎo)致整個程序失敗,因此,MPI對于大部分程序員來說簡直就是噩夢。

并非所有的編程人員都能熟練掌握MPI編程,衡量一個程序的時間成本,不僅要考慮程序運(yùn)行的時間,也要考慮程序員學(xué)習(xí)、開發(fā)和調(diào)試的時間。就像C語言運(yùn)算速度極快,但是Python語言卻更受歡迎一樣,MPI雖然能提供極快的分布式計算加速,但不太接地氣。

MapReduce

為了解決分布式計算學(xué)習(xí)和使用成本高的問題,研究人員提出了更簡單易用的MapReduce編程模型[^2]。MapReduce是Google 2004年提出的一種編程范式,比起MPI將所有事情交給程序員控制不同,MapReduce編程模型只需要程序員定義兩個操作:map和reduce。 

從Hadoop到Spark和Flink,大數(shù)據(jù)處理框架十年激蕩發(fā)展史

使用MapReduce制作三明治

網(wǎng)絡(luò)上有很多MapReduce的介紹和解釋,這里我們用三明治的制作過程對MapReduce進(jìn)行了分解。假設(shè)我們需要大批量地制作三明治,三明治的每種食材可以分別單獨(dú)處理,map階段將原材料在不同的節(jié)點(diǎn)上分別進(jìn)行處理,生成一些中間食材,shuffle階段將不同的中間食材進(jìn)行組合,reduce最終將一組中間食材組合成為三明治成品??梢钥吹剑@種map + shuffle + reduce的方式就是分而治之思想的一種實(shí)現(xiàn)。

基于MapReduce編程模型,不同的團(tuán)隊分別實(shí)現(xiàn)了自己的大數(shù)據(jù)框架:Hadoop是最早的一種開源實(shí)現(xiàn),如今已經(jīng)成為大數(shù)據(jù)領(lǐng)域的業(yè)界標(biāo)桿,之后又出現(xiàn)了Spark和Flink。這些框架提供了編程接口和API,輔助程序員存儲、處理和分析大數(shù)據(jù)。

比起MPI,MapReduce編程模型將更多的中間過程做了封裝,程序員只需要將原始問題轉(zhuǎn)化為更高層次的API,至于原始問題如何切分為更小的子問題、中間數(shù)據(jù)如何傳輸和交換、如何將計算伸縮擴(kuò)展到多個節(jié)點(diǎn)等一系列細(xì)節(jié)問題可以交給大數(shù)據(jù)框架來解決。因此,MapReduce相對來說學(xué)習(xí)門檻更低,使用更方便,編程開發(fā)速度更快。

批處理和流處理

數(shù)據(jù)與數(shù)據(jù)流

在大數(shù)據(jù)的5V定義中我們已經(jīng)提到,數(shù)據(jù)的容量大且產(chǎn)生速度快。從時間維度上來講,數(shù)據(jù)源源不斷地產(chǎn)生,形成一個無界的數(shù)據(jù)流(Unbounded Stream)。例如我們每時每刻的運(yùn)動數(shù)據(jù)都會累積到手機(jī)傳感器上,金融交易隨時隨地發(fā)生著,傳感器會持續(xù)監(jiān)控并生成數(shù)據(jù)。數(shù)據(jù)流中的某段有界數(shù)據(jù)流(Bounded Stream)可以組成一個數(shù)據(jù)集。我們通常所說的對某份數(shù)據(jù)進(jìn)行分析,指的是對某個數(shù)據(jù)集進(jìn)行分析。隨著數(shù)據(jù)的產(chǎn)生速度越來越快,數(shù)據(jù)源越來越多,人們對時效性的重視程度越來越高,如何處理數(shù)據(jù)流成了大家更為關(guān)注的問題。 

從Hadoop到Spark和Flink,大數(shù)據(jù)處理框架十年激蕩發(fā)展史

 數(shù)據(jù)與數(shù)據(jù)流

批處理

批處理(Batch Processing)是對一批數(shù)據(jù)進(jìn)行處理。我們身邊批量計算比比皆是,最簡單的批量計算例子有:微信運(yùn)動每天晚上有一個批量任務(wù),把用戶好友一天所走的步數(shù)統(tǒng)計一遍,生成排序結(jié)果后推送給用戶;銀行信用卡中心每月賬單日有一個批量任務(wù),把一個月的消費(fèi)總額統(tǒng)計一次,生成用戶月度賬單;國家統(tǒng)計局每季度對經(jīng)濟(jì)數(shù)據(jù)做一次統(tǒng)計,公布季度GDP增速??梢?,批量任務(wù)一般是對一段時間的數(shù)據(jù)聚合后進(jìn)行處理。對于數(shù)據(jù)量龐大的應(yīng)用,如微信運(yùn)動、銀行信用卡等情景,一段時間內(nèi)積累的數(shù)據(jù)總量非常大,計算非常耗時。

批量計算的歷史可以追溯的計算機(jī)剛剛起步的上世紀(jì)60年代,當(dāng)前應(yīng)用最為廣泛的當(dāng)屬數(shù)據(jù)倉庫的ETL(Extract Transform Load)數(shù)據(jù)轉(zhuǎn)化工作,如以O(shè)racle為代表的商業(yè)數(shù)據(jù)倉庫和以Hadoop/Spark為代表的開源數(shù)據(jù)倉庫。

流處理

如前文所說,數(shù)據(jù)其實(shí)是以流(Stream)的方式持續(xù)不斷地產(chǎn)生著,流處理(Stream Processing)就是對數(shù)據(jù)流進(jìn)行處理。時間就是金錢,對數(shù)據(jù)流進(jìn)行分析和處理,獲取實(shí)時數(shù)據(jù)價值越發(fā)重要。個人用戶每晚看一次微信運(yùn)動排名覺得是一個比較舒適的節(jié)奏,但是對于金融界來說,時間是以百萬、千萬甚至上億為單位的金錢!雙十一電商大促銷,管理者要以秒級的響應(yīng)時間查看實(shí)時銷售業(yè)績、庫存信息以及與競品的對比結(jié)果,以爭取更多的決策時間;股票交易要以毫秒級的速度來對新信息做出響應(yīng);風(fēng)險控制要對每一份欺詐交易迅速做出處理,以減少不必要的損失;網(wǎng)絡(luò)運(yùn)營商要以極快速度發(fā)現(xiàn)網(wǎng)絡(luò)和數(shù)據(jù)中心的故障等等。以上這些場景,一旦出現(xiàn)故障,造成了服務(wù)的延遲,損失都難以估量,因此,響應(yīng)速度越快,越能減少損失,增加收入。而IoT物聯(lián)網(wǎng)和5G通信的興起將為數(shù)據(jù)生成提供更完美的底層技術(shù)基礎(chǔ),海量的數(shù)據(jù)在IoT設(shè)備上采集生成,并通過更高速的5G通道傳輸?shù)椒?wù)器,更龐大的實(shí)時數(shù)據(jù)流將洶涌而至,流式處理的需求肯定會爆炸式增長。

代表性大數(shù)據(jù)技術(shù)

如前文所述,MapReduce編程模型的提出為大數(shù)據(jù)分析和處理開創(chuàng)了一條先河,之后陸續(xù)涌現(xiàn)出了Hadoop、Spark和Flink等大數(shù)據(jù)框架。

Hadoop

2004年,Hadoop的創(chuàng)始人受MapReduce編程模型等一系列論文的啟發(fā),對論文中提及的思想進(jìn)行了編程實(shí)現(xiàn)。Hadoop的名字來源于創(chuàng)始人Doug Cutting兒子的玩具大象。由于創(chuàng)始人Doug Cutting當(dāng)時加入了雅虎,并在此期間支持了大量Hadoop的研發(fā)工作,因此Hadoop也經(jīng)常被認(rèn)為是雅虎開源的一款大數(shù)據(jù)框架。時至今日,Hadoop不僅僅是整個大數(shù)據(jù)領(lǐng)域的先行者和領(lǐng)導(dǎo)者,更形成了一套圍繞Hadoop的生態(tài)系統(tǒng),Hadoop和它的生態(tài)是絕大多數(shù)企業(yè)首選的大數(shù)據(jù)解決方案。 

從Hadoop到Spark和Flink,大數(shù)據(jù)處理框架十年激蕩發(fā)展史

Hadoop生態(tài)

盡管Hadoop生態(tài)中的組件眾多,其核心組件主要有三個:

  • Hadoop MapReduce:Hadoop版本的MapReduce編程模型,可以處理海量數(shù)據(jù),主要面向批處理。
  • HDFS:HDFS全稱為Hadoop Distributed File System,是Hadoop提供的分布式文件系統(tǒng),有很好的擴(kuò)展性和容錯性。
  • YARN:YARN是Yet Another Resource Negotiator的縮寫,是Hadoop生態(tài)系統(tǒng)中的資源調(diào)度器,可以管理一個Hadoop集群,并為各種類型的大數(shù)據(jù)任務(wù)分配計算資源。

這三大組件中,數(shù)據(jù)存儲在HDFS上,由MapReduce負(fù)責(zé)計算,YARN負(fù)責(zé)集群的資源管理。除了三大核心組件,Hadoop生態(tài)圈還有很多其他著名的組件:

  • Hive:借助Hive,用戶可以編寫SQL語句來查詢HDFS上的結(jié)構(gòu)化數(shù)據(jù),SQL會被轉(zhuǎn)化成MapReduce執(zhí)行。
  • HBase:HDFS上的數(shù)據(jù)量非常龐大,但訪問和查詢速度比較慢,HBase可以提供給用戶毫秒級的實(shí)時查詢服務(wù),是一個基于HDFS的分布式數(shù)據(jù)庫。
  • Storm:Strom是一款實(shí)時計算框架,主要負(fù)責(zé)流處理。
  • Zookeeper:Hadoop生態(tài)圈很多組件使用動物來命名,形成了一個大型動物園,Zookeeper是這個動物園的管理者,主要負(fù)責(zé)分布式環(huán)境的協(xié)調(diào)。

Spark

Spark于2009年誕生于加州大學(xué)伯克利分校,2013年被捐獻(xiàn)給Apache基金會。Spark是一款大數(shù)據(jù)計算框架,其初衷是改良Hadoop MapReduce的編程模型和執(zhí)行速度。與Hadoop相比,Spark的改進(jìn)主要有兩點(diǎn):

  • 易用性:比起MPI,MapReduce模型更友好,但仍然不夠方便,因?yàn)椴⒉皇撬杏嬎闳蝿?wù)都可以簡單拆分成map和reduce,有可能為了解決一個問題,要設(shè)計多個MapReduce任務(wù),任務(wù)之間相互依賴,整個程序非常復(fù)雜,導(dǎo)致代碼的可讀性差。Spark提供更加方便易用的接口,提供Java、Scala、Python和R幾種語言的API,支持SQL、機(jī)器學(xué)習(xí)和圖計算,覆蓋了絕大多數(shù)大數(shù)據(jù)計算的場景。
  • 速度快:Hadoop的map和reduce之間的中間結(jié)果都需要落地到磁盤上,而Spark盡量將大部分計算放在內(nèi)存中,加上Spark的有向無環(huán)圖優(yōu)化,在官方的基準(zhǔn)測試中,Spark比Hadoop快一百倍以上。 
從Hadoop到Spark和Flink,大數(shù)據(jù)處理框架十年激蕩發(fā)展史

Spark生態(tài)

Spark的核心在于計算,主要目的在于優(yōu)化Hadoop MapReduce計算部分,在計算層面提供更細(xì)致的服務(wù),比如提供了常用幾種數(shù)據(jù)科學(xué)語言的API,提供了SQL、機(jī)器學(xué)習(xí)和圖計算支持,這些服務(wù)都是最終面向計算的。Spark并不能完全取代Hadoop,實(shí)際上,Spark融入到了Hadoop生態(tài)圈,成為其中的重要一元。一個Spark任務(wù)很可能依賴HDFS上的數(shù)據(jù),向YARN來申請計算資源,將HBase作為輸出結(jié)果的目的地。當(dāng)然,Spark也可以不用依賴這些Hadoop組件,獨(dú)立地完成計算。

從Hadoop到Spark和Flink,大數(shù)據(jù)處理框架十年激蕩發(fā)展史

 Spark Streaming數(shù)據(jù)流示意圖

Spark主要面向批處理需求,因其優(yōu)異的性能和易用的接口,Spark已經(jīng)是批處理界絕對的王者。Spark Streaming提供了流處理的功能,它的流處理主要基于mini-batch的思想,即將輸入數(shù)據(jù)流拆分成多個批次,每個批次使用批處理的方式進(jìn)行計算。因此,Spark是一款批量和流式于一體的計算框架。

Flink

Flink是由德國幾所大學(xué)發(fā)起的的學(xué)術(shù)項目,后來不斷發(fā)展壯大,并于2014年末成為Apache頂級項目。Flink主要面向流處理,如果說Spark是批處理界的王者,那么Flink就是流處理領(lǐng)域的冉冉升起的新星。在Flink之前,不乏流式處理引擎,比較著名的有Storm、Spark Streaming,但某些特性遠(yuǎn)不如Flink。 

從Hadoop到Spark和Flink,大數(shù)據(jù)處理框架十年激蕩發(fā)展史

流處理框架演進(jìn)史

第一代被廣泛采用的流處理框架是Strom。在多項基準(zhǔn)測試中,Storm的數(shù)據(jù)吞吐量和延遲都遠(yuǎn)遜于Flink。Storm只支持"at least once"和"at most once",即數(shù)據(jù)流里的事件投遞只能保證至少一次或至多一次,不能保證只有一次。對于很多對數(shù)據(jù)準(zhǔn)確性要求較高的應(yīng)用,Storm有一定劣勢。第二代非常流行的流處理框架是Spark Streaming。Spark Streaming使用mini-batch的思想,每次處理一小批數(shù)據(jù),一小批數(shù)據(jù)包含多個事件,以接近實(shí)時處理的效果。因?yàn)樗看斡嬎阋恍∨鷶?shù)據(jù),因此總有一些延遲。但Spark Streaming的優(yōu)勢是擁有Spark這個靠山,用戶從Spark遷移到Spark Streaming的成本較低,因此能給用戶提供一個批量和流式于一體的計算框架。

Flink是與上述兩代框架都不太一樣的新一代計算框架,它是一個支持在有界和無界數(shù)據(jù)流上做有狀態(tài)計算的大數(shù)據(jù)引擎。它以事件為單位,并且支持SQL、State、WaterMark等特性。它支持"exactly once",即事件投遞保證只有一次,不多也不少,這樣數(shù)據(jù)的準(zhǔn)確性能得到提升。比起Storm,它的吞吐量更高,延遲更低,準(zhǔn)確性能得到保障;比起Spark Streaming,它以事件為單位,達(dá)到真正意義上的實(shí)時計算,且所需計算資源相對更少。

之前提到,數(shù)據(jù)都是以流的形式產(chǎn)生的。數(shù)據(jù)可以分為有界(bounded)和無界(unbounded),批量處理其實(shí)就是一個有界的數(shù)據(jù)流,是流處理的一個特例。Flink基于這種思想,逐步發(fā)展成一個可支持流式和批量處理的大數(shù)據(jù)框架。

經(jīng)過幾年的發(fā)展,F(xiàn)link的API已經(jīng)非常完善,可以支持Java、Scala和Python,并且支持SQL。Flink的Scala版API與Spark非常相似,有Spark經(jīng)驗(yàn)的程序員可以用一個小時的時間熟悉Flink API。

與Spark類似,F(xiàn)link目前主要面向計算,并且可以與Hadoop生態(tài)高度集成。Spark和Flink各有所長,也在相互借鑒,一邊競爭,一邊學(xué)習(xí),究竟最終誰能一統(tǒng)江湖,我們拭目以待。

小結(jié)

大數(shù)據(jù)一般基于分而治之的思想,分布式地進(jìn)行計算。經(jīng)過十幾年的發(fā)展,大數(shù)據(jù)生態(tài)圈涌現(xiàn)出一大批優(yōu)秀的組件和框架,這些組件對一些底層技術(shù)做了封裝,提供給程序員簡單易用的API接口。在大數(shù)據(jù)分析和處理領(lǐng)域,Hadoop已經(jīng)發(fā)展成為一個非常成熟的生態(tài)圈,涵蓋了很多大數(shù)據(jù)相關(guān)的基礎(chǔ)服務(wù),Spark和Flink主要針對大數(shù)據(jù)計算,分別在批處理和流處理方向建立了自己的優(yōu)勢。

 

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2022-05-27 17:10:51

知識圖譜谷歌

2017-06-22 13:26:37

人工智能發(fā)展歷史大數(shù)據(jù)

2022-07-06 10:56:51

數(shù)據(jù)湖架構(gòu)

2024-11-26 18:05:02

2009-11-13 05:30:38

PowerIBM

2021-10-14 11:08:17

大數(shù)據(jù)框架內(nèi)存

2012-10-18 14:51:10

數(shù)據(jù)中心發(fā)展

2018-11-06 12:58:43

大數(shù)據(jù)人工智能搜索引擎

2017-02-14 13:11:23

HadoopStormSamza

2011-11-28 14:43:10

微處理器

2024-01-19 08:04:13

2023-10-23 16:34:37

Elasticsea深度學(xué)習(xí)

2018-01-22 08:33:28

SparkHadoop計算

2018-07-25 15:31:51

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

2017-06-30 15:37:05

互聯(lián)網(wǎng)架構(gòu)金融

2017-01-12 16:25:41

互聯(lián)網(wǎng)金融架構(gòu)

2011-08-23 10:49:44

算法

2016-10-10 22:11:02

2021-12-14 09:56:51

HadoopSparkKafka

2010-11-01 00:40:39

Unix發(fā)展史
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號