如何區(qū)分批處理還是流處理?

無邊界數(shù)據(jù)和有邊界數(shù)據(jù)

這個世界上的數(shù)據(jù)可以抽象成為兩種,分別是無邊界數(shù)據(jù)(Unbounded Data)和有邊界數(shù)據(jù)(Bounded Data)草巡。

顧名思義,無邊界數(shù)據(jù)是一種不斷增長型酥,可以說是無限的數(shù)據(jù)集山憨。

這種類型的數(shù)據(jù),我們無法判定它們到底什么時候會停止發(fā)送冕末。

例如萍歉,從手機(jī)或者從傳感器發(fā)送出來的信號數(shù)據(jù),又比如我們所熟知的移動支付領(lǐng)域中的交易數(shù)據(jù)档桃。因為每時每刻都會有交易產(chǎn)生枪孩,所以我們不能判定在某一刻這類數(shù)據(jù)就會停止發(fā)送了。

在國外的一些技術(shù)文章上,有時候我們會看到“流數(shù)據(jù)(Streaming Data)”這一說法蔑舞,其實它和無邊界數(shù)據(jù)表達(dá)的是同一個概念拒担。

與此相反,有邊界數(shù)據(jù)是一種有限的數(shù)據(jù)集攻询。

這種數(shù)據(jù)更常見于已經(jīng)保存好了的數(shù)據(jù)中从撼。例如,數(shù)據(jù)庫中的數(shù)據(jù)钧栖,或者是我們常見的 CSV 格式文件中的數(shù)據(jù)低零。

當(dāng)然了,你可能會問拯杠,那我們把無邊界數(shù)據(jù)按照時間窗口提取一小份出來掏婶,那這樣的數(shù)據(jù)是什么數(shù)據(jù)呢?

拿我們之前提到過的移動支付中的交易數(shù)據(jù)來說吧潭陪。移動支付中的交易數(shù)據(jù)可以看作是無邊界數(shù)據(jù)雄妥。那我們按 2019 年 4 月 29 日這個時間窗口提取出來的數(shù)據(jù)呢?這個當(dāng)日的交易數(shù)據(jù)就變成了有邊界數(shù)據(jù)了依溯。

所以老厌,有邊界數(shù)據(jù)其實可以看作是無邊界數(shù)據(jù)的一個子集。

事件時間和處理時間

在處理大規(guī)模數(shù)據(jù)的時候黎炉,我們通常還會關(guān)心時域(Time Domain)的問題枝秤。

我們要處理的任意數(shù)據(jù)都會有兩種時域,分別是事件時間(Event Time)和處理時間(Precessing Time)拜隧。

事件時間指的是一個數(shù)據(jù)實際產(chǎn)生的時間點宿百,而處理時間指的是處理數(shù)據(jù)的系統(tǒng)架構(gòu)實際接收到這個數(shù)據(jù)的時間點。

批處理

數(shù)據(jù)的批處理洪添,可以理解為一系列相關(guān)聯(lián)的任務(wù)按順序(或并行)一個接一個地執(zhí)行。批處理的輸入是在一段時間內(nèi)已經(jīng)收集保存好的數(shù)據(jù)雀费。每次批處理所產(chǎn)生的輸出也可以作為下一次批處理的輸入干奢。

絕大部分情況下,批處理的輸入數(shù)據(jù)都是有邊界數(shù)據(jù)盏袄,同樣的忿峻,輸出結(jié)果也一樣是有邊界數(shù)據(jù)。所以在批處理中辕羽,我們所關(guān)心的更多會是數(shù)據(jù)的事件時間逛尚。

舉個例子,你在每年年初所看到的“支付寶年賬單”就是一個數(shù)據(jù)批處理的典型例子刁愿。

支付寶會將我們在過去一年中的消費數(shù)據(jù)存儲起來绰寞,并作為批處理輸入,提取出過去一年中產(chǎn)生交易的事件時間,然后經(jīng)過一系列業(yè)務(wù)邏輯處理滤钱,得到各種有趣的信息作為輸出觉壶。

在許多情況下,批處理任務(wù)會被安排件缸,并以預(yù)先定義好的時間間隔來運行铜靶,例如一天,一個月或者是一年這樣的特定時間他炊。

批處理架構(gòu)通常會被設(shè)計在以下這些應(yīng)用場景中:

  • 日志分析:日志系統(tǒng)是在一定時間段(日争剿,周或年)內(nèi)收集的,而日志的數(shù)據(jù)處理分析是在不同的時間內(nèi)執(zhí)行痊末,以得出有關(guān)系統(tǒng)的一些關(guān)鍵性能指標(biāo)蚕苇。
  • 數(shù)據(jù)倉庫:數(shù)據(jù)倉庫的主要目標(biāo)是根據(jù)收集好的數(shù)據(jù)事件時間,將數(shù)據(jù)信息合并為靜態(tài)快照 (static snapshot)舌胶,并將它們聚合為每周捆蜀、每月、每季度的報告等幔嫂。
  • 計費應(yīng)用程序:計費應(yīng)用程序會計算出一段時間內(nèi)一項服務(wù)的使用程度辆它,并生成計費信息,例如銀行在每個月末生成的信用卡還款單履恩。

由 Google MapReduce 衍生出來的開源項目 Apache Hadoop 或者是 Apache Spark 等開源架構(gòu)都是支持這種大數(shù)據(jù)批處理架構(gòu)的锰茉。

由于完成批處理任務(wù)具有高延遲性,一般可以需要花費幾小時切心,幾天甚至是幾周的時間飒筑。要是在開發(fā)業(yè)務(wù)中有快速響應(yīng)用戶的時間需求,我們則需要考慮使用流處理 / 實時處理來處理大數(shù)據(jù)绽昏。

流處理

數(shù)據(jù)的流處理可以理解為系統(tǒng)需要接收并處理一系列連續(xù)不斷變化的數(shù)據(jù)协屡。例如,旅行預(yù)訂系統(tǒng)全谤,處理社交媒體更新信息的有關(guān)系統(tǒng)等等肤晓。

流處理的輸入數(shù)據(jù)基本上都是無邊界數(shù)據(jù).

流處理的特點應(yīng)該是要足夠快、低延時认然,以便能夠處理來自各種數(shù)據(jù)源的大規(guī)模數(shù)據(jù)补憾。流處理所需的響應(yīng)時間更應(yīng)該以毫秒(或微秒)來進(jìn)行計算。像我們平時用到的搜索引擎卷员,系統(tǒng)必須在用戶輸入關(guān)鍵字后以毫秒級的延時返回搜索結(jié)果給用戶盈匾。

流處理速度如此之快的根本原因是因為它在數(shù)據(jù)到達(dá)磁盤之前就對其進(jìn)行了分析。

當(dāng)流處理架構(gòu)擁有在一定時間間隔(毫秒)內(nèi)產(chǎn)生邏輯上正確的結(jié)果時毕骡,這種架構(gòu)可以被定義為實時處理(Real-time Processing)削饵。

而如果一個系統(tǒng)架構(gòu)可以接受以分鐘為單位的數(shù)據(jù)處理時間延時岩瘦,我們也可以把它定義為準(zhǔn)實時處理(Near real-time Processing)。

還記得我們在介紹批處理架構(gòu)中所說到的不足嗎葵孤?沒錯担钮,是高延遲。而流處理架構(gòu)則恰恰擁有高吞度量和低延遲等特點尤仍。

在如今的開源架構(gòu)生態(tài)圈中箫津,如 Apache Kafka、Apache Flink宰啦、Apache Storm苏遥、Apache Samza 等,都是流行的流處理架構(gòu)平臺赡模。

批處理模式在不需要實時分析結(jié)果的情況下是一種很好的選擇田炭。尤其當(dāng)業(yè)務(wù)邏輯需要處理大量的數(shù)據(jù)以挖掘更為深層次數(shù)據(jù)信息的時候。

而在應(yīng)用需求需要對數(shù)據(jù)進(jìn)行實時分析處理時漓柑,或者說當(dāng)有些數(shù)據(jù)是永無止境的事件流時(例如傳感器發(fā)送回來的數(shù)據(jù)時)教硫,我們就可以選擇用流處理模式。

最簡單的說辆布,基本的區(qū)別在于每一條新數(shù)據(jù)在到達(dá)時是被處理的瞬矩,還是作為一組新數(shù)據(jù)的一部分稍后處理。這種區(qū)分將處理分為兩類:批處理和流處理锋玲。

批量處理

在批處理中景用,新到達(dá)的數(shù)據(jù)元素被收集到一個組中。整個組在未來的時間進(jìn)行處理(作為批處理惭蹂,因此稱為“批處理”)伞插。確切地說,何時處理每個組可以用多種方式來確定 - 例如盾碗,它可以基于預(yù)定的時間間隔(例如媚污,每五分鐘,處理任何新的數(shù)據(jù)已被收集)或在某些觸發(fā)的條件下(例如廷雅,處理只要它包含五個數(shù)據(jù)元素或一旦它擁有超過1MB的數(shù)據(jù))杠步。

image.png

基于時間的批處理間歇過程

通過類比的方式,批處理就像你的朋友(你當(dāng)然知道這樣的人)從干衣機(jī)中取出一大堆衣物榜轿,并簡單地把所有東西都扔進(jìn)一個抽屜里,只有當(dāng)它很難找到東西時才分類和組織它朵锣。這個人避免每次洗衣時都要進(jìn)行分揀工作谬盐,但是他們需要花費大量時間在抽屜里搜索抽屜,并最終需要花費大量時間分離衣服诚些,匹配襪子等飞傀。當(dāng)它變得很難找到東西的時候皇型。

歷史上,絕大多數(shù)數(shù)據(jù)處理技術(shù)都是為批處理而設(shè)計的砸烦。傳統(tǒng)的數(shù)據(jù)倉庫和Hadoop是專注于批處理的系統(tǒng)的兩個常見示例弃鸦。

術(shù)語“microbatch”經(jīng)常用于描述批次小和/或以小間隔處理的情況。即使處理可能每隔幾分鐘發(fā)生一次幢痘,數(shù)據(jù)仍然一次處理一批唬格。Spark Streaming是設(shè)計用于支持微批處理的系統(tǒng)的一個例子。

流處理

在流處理中颜说,每一條新數(shù)據(jù)都會在到達(dá)時進(jìn)行處理购岗。與批處理不同,在下一批處理間隔之前不會等待门粪,數(shù)據(jù)將作為單獨的碎片進(jìn)行處理喊积,而不是一次處理批量。


image.png

盡管每個新的數(shù)據(jù)都是單獨處理的玄妈,但許多流處理系統(tǒng)也支持“窗口”操作乾吻,這些操作允許處理也引用在當(dāng)前數(shù)據(jù)到達(dá)之前和/或之后在指定時間間隔內(nèi)到達(dá)的數(shù)據(jù)。

繼續(xù)我們的比喻拟蜻,組織洗衣店的流程處理方法將分類绎签,匹配和整理從洗衣機(jī)中取出的衣物。 在這種方法中瞭郑,最初對每一件衣物都進(jìn)行了更多的工作辜御,但是以后不再需要返回并重新整理整個抽屜,因為它已經(jīng)組織好了屈张,并且不再浪費時間搜尋 用于埋藏衣物的抽屜擒权。

有越來越多的系統(tǒng)設(shè)計用于流處理,包括Apache Storm和Apache Heron阁谆。 這些系統(tǒng)經(jīng)常部署以支持近乎實時的事件處理碳抄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市场绿,隨后出現(xiàn)的幾起案子剖效,更是在濱河造成了極大的恐慌,老刑警劉巖焰盗,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件璧尸,死亡現(xiàn)場離奇詭異,居然都是意外死亡熬拒,警方通過查閱死者的電腦和手機(jī)爷光,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澎粟,“玉大人蛀序,你說我怎么就攤上這事欢瞪。” “怎么了徐裸?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵遣鼓,是天一觀的道長。 經(jīng)常有香客問我重贺,道長骑祟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任檬姥,我火速辦了婚禮曾我,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘健民。我一直安慰自己抒巢,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布秉犹。 她就那樣靜靜地躺著蛉谜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪崇堵。 梳的紋絲不亂的頭發(fā)上型诚,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音鸳劳,去河邊找鬼狰贯。 笑死,一個胖子當(dāng)著我的面吹牛赏廓,可吹牛的內(nèi)容都是我干的涵紊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼幔摸,長吁一口氣:“原來是場噩夢啊……” “哼摸柄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起既忆,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤驱负,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后患雇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跃脊,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年苛吱,在試婚紗的時候發(fā)現(xiàn)自己被綠了匾乓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡又谋,死狀恐怖拼缝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情彰亥,我是刑警寧澤咧七,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站任斋,受9級特大地震影響继阻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜废酷,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一瘟檩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧澈蟆,春花似錦墨辛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寥闪,卻和暖如春太惠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疲憋。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工凿渊, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缚柳。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓埃脏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親喂击。 傳聞我的和親對象是個殘疾皇子剂癌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355