瞭解批處理,微分批處理和流處理

  數據處理中心在處理新接收數據時的根本區別之一。這種區別對於處理數據的兩個系統的體系結構和設計以及使用和依賴這些系統的應用程序都有重要的意義。在本文中,我們將仔細研究這些差異及其一些含義。

  最簡單的說,基本的區別在於每一條新數據在到達時是被處理的,還是作為一組新數據的一部分稍後處理。這種區分將處理分為兩類:批處理和流處理。

批量處理

  在批處理中,新到達的數據元素被收集到一個組中。整個組在未來的時間進行處理(作為批處理,因此稱為“批處理”)。確切地說,何時處理每個組可以用多種方式來確定 - 例如,它可以基於預定的時間間隔(例如,每五分鐘,處理任何新的數據已被收集)或在某些觸發的條件下(例如,處理只要它包含五個數據元素或一旦它擁有超過1MB的數據)。

瞭解批處理,微分批處理和流處理

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

  通過類比的方式,批處理就像你的朋友(你當然知道這樣的人)從乾衣機中取出一大堆衣物,並簡單地把所有東西都扔進一個抽屜裡,只有當它很難找到東西時才分類和組織它。這個人避免每次洗衣時都要進行分揀工作,但是他們需要花費大量時間在抽屜裡搜索抽屜,並最終需要花費大量時間分離衣服,匹配襪子等。當它變得很難找到東西的時候。

  歷史上,絕大多數數據處理技術都是為批處理而設計的。傳統的數據倉庫和Hadoop是專注於批處理的系統的兩個常見示例。

  術語“microbatch”經常用於描述批次小和/或以小間隔處理的情況。即使處理可能每隔幾分鐘發生一次,數據仍然一次處理一批。Spark Streaming是設計用於支持微批處理的系統的一個例子。

流處理

  在流處理中,每一條新數據都會在到達時進行處理。與批處理不同,在下一批處理間隔之前不會等待,數據將作為單獨的碎片進行處理,而不是一次處理批量。

瞭解批處理,微分批處理和流處理

流處理

  儘管每個新的數據都是單獨處理的,但許多流處理系統也支持“窗口”操作,這些操作允許處理也引用在當前數據到達之前和/或之後在指定時間間隔內到達的數據。

  繼續我們的比喻,組織洗衣店的流程處理方法將分類,匹配和整理從洗衣機中取出的衣物。 在這種方法中,最初對每一件衣物都進行了更多的工作,但是以後不再需要返回並重新整理整個抽屜,因為它已經組織好了,並且不再浪費時間搜尋 用於埋藏衣物的抽屜。

  有越來越多的系統設計用於流處理,包括Apache Storm和Apache Heron。 這些系統經常部署以支持近乎實時的事件處理。

批處理和流處理之間差異的含義

  儘管流處理和批處理(特別是微批處理)之間的差異似乎只是時間差異很小的問題,但它們實際上對數據處理系統的體系結構和使用它們的應用程序都有著根本的影響。

  流處理系統的設計是為了在數據到達時對其進行響應。這就要求它們實現一個由事件驅動的體系結構, 即系統的內部工作流設計為在接收到數據後立即連續監視新數據和調度處理。另一方面, 批處理系統中的內部工作流只定期檢查新數據, 並且只在下一個批處理窗口發生時處理該數據。

  流處理和批處理之間的差異對於應用程序來說也是非常重要的。為批處理而構建的應用程序,通過定義處理數據,具有延遲性。在具有多個步驟的數據管道中,這些延遲會累積。此外,新數據的到達與該數據的處理之間的延遲將取決於直到下一批處理窗口的時間--從在某些情況下完全沒有時間到批處理窗口之間的全部時間不等,這些數據是在批處理開始後到達的。因此,批處理應用程序(及其用戶)不能依賴一致的響應時間,需要相應地調整以適應這種不一致性和更大的延遲。

  批量處理通常適用於具有最新數據並不重要的用例,以及容忍較慢響應時間的情況。 例如,對歷史數據進行離線分析以計算結果或識別相關性是一種常見的批處理用例。

  另一方面,流處理對於需要實時交互和實時響應的用例是必需的。 金融交易處理,實時欺詐檢測和實時定價是最適合流處理的示例。

更多閱讀





分享到:


相關文章: