iT邦幫忙

DAY 24
0

分散式資料處理,以Stream Computing為例系列 第 24

Day 24: Stream Computing特性

  • 分享至 

  • xImage
  •  

突然發現我好像還沒介紹過 Stream Computing :D

Stream Computing 是設計給需要 low-latency 的應用。batch processing 因為整批進整批出,有些已處理好的資料也需要等待其他同批資料都處理完才能一次送出,這樣會導致一些不必要的 latency (類比: 跟團在跑景點時總會有些動作慢的拖到大家的集合時間)。為了要減少 latency,Stream Computing 將處理顆粒度變小到 record,且將處理過程切分成好幾個階段。透過 pipeline 的方式,只要前一個階段處理完的 record,就可以馬上進入下一個階段,這樣可以避免掉不必要的 latency。

但因為這種處理方式會增加資料傳遞量,因此 throughput 會比 batch processing 還低。為了解決這樣的問題,Stream Computing 框架都會內建Scalability。每一個階段的處理程式都是可擴充的,也就是可以第一階段用10個thread、第二階段用5個thread之類的。這種用 efficiency 換 scalability ,再用 scalability 彌補 efficiecy 的方式,在分散式系統裡相當常見。

如果是純運算的應用,沒有很多的reference data 或 其他的side effect的話,Stream Computing 有很好的 scalability。但有許多的應用並不是如此,也因此限制了Stream Computing的應用範圍。目前Stream Computing最常被用來算即時的統計 (包含了window count, 如近五分鐘的統計),因為這些統計數字可以單純從input data中算出,且計算結果有對分散式系統友善的單調漸增(monotonic)特性。

如果是其他的應用,牽涉到其他更複雜的參照資料或運算時,就需要再搭配partitionreplication等分散式資料系統的處理方式。


上一篇
Day 23: Stream Computing的應用範圍
下一篇
Day 25: 選擇Stream Computing框架
系列文
分散式資料處理,以Stream Computing為例30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言