lambda architecture 概念
mathan marz的大作big data: principles and best practices of scalable real-time data systems介紹了lambda architecture的概念,用于在大數據架構中,如何讓real-time與batch job更好地結合起來,以達成對大數據的實時處理。
大數據平臺中包括批量計算的batch layer和實時計算的speed layer,通過在一套平臺中將批計算和流計算整合在一起。
例如使用hadoop mapreduce、spark進行批量數據的處理,使用apache storm、spark streaming 進行實時數據的處理。
這種架構在一定程度上解決了不同計算類型的問題,但是帶來的問題是框架太多,會導致平臺復雜度過高、運維成功高等。
lambda架構的主要思想就是將大數據系統構建為多個層次,如下圖所示:
我們來梳理一下他們是如何分工協助的:
首先new data作為整個數據系統的數據源頭,batch layer作為數據的批處理層次對原始數據進行加工與處理,并且將處理的數據結果的batch view輸入到serving layer。(這里對應的是全量數據)speed layer對于實時增加的數據進行處理,生成對增量數據計算結果的real-time view。(這里對應的是增量數據)最終用戶查詢是通過batch view與real-time view相結合的形式將最終結果呈現出來。基于lambda架構,一旦數據通過batch layer進入到serving layer,在real-time view中的相應結果就不再需要了。
小 結
lambda架構結合了實時處理與批處理的結果,很好的反饋了查詢需求,并且在速度和可靠性之間求取了平衡,具有足夠的擴展性。理想狀態下,所有的查詢都可以定位成一個函數:
query?=?function(data)? 但是,若數據達到相當大的一個級別(例如pb),且還需要支持實時查詢時,就需要耗費非常龐大的資源。
而lambda架構將數據和計算系統進行細分:
query?=?batch(old_data)?+?realtime(new_data)? 但是這種架構同樣存在一些問題:需要運維兩套不同的計算系統,并且合并查詢結果,這一定程序上帶來了復雜性的增加。
西安到安達物流專線武漢到曹縣物流專線武漢到格爾木物流專線濟南到阜寧物流專線如何從零開始做好深圳網站內容運營?泰州到博羅物流專線網站設計的未來是什么?常州到鎮江物流專線