Lambda Architecture

為什么要用Lambda Architecture

在大數據處理系統中,數據處理的可靠性和實時性是一對矛盾,往往不可兼得。可靠性是指在任何異常出現的情況下,數據處理都能夠做到不重不丟,并且最終得到準確的結果。實時性是指數據從輸入到處理完畢輸出的時間間隔。一般來說,對于像Hadoop MapReduce這樣的批處理系統來說,可靠性很高,而實時性很差;對于Storm這樣的流式處理系統來說,則情況正好相反。

那么,有沒有辦法使得數據處理系統即可以做到高可靠,又可以做到低延遲呢?Lambda Architecture就是這個問題的答案。

Lambda Architecture是為了滿足如下需求:

  • 系統故障或人為錯誤不丟數據
  • 數據分析低延遲
  • 系統具備線性擴展能力
  • 系統中很容易增加新特性

Lambda Architecture是什么

Lambda Architecture

如上圖所示,Lambda Architecture由batch layer、speed layer、serving layer組成。在輸入端集中接收數據,并拷貝數據,分別導入到batch layer和 speed layer。

Batch Layer

Batch layer的職責是保證數據處理的準確性和可靠性。

Batch layer首先把數據以其原始格式存儲在HDFS上,以加強系統的可靠性。然后,利用Hadoop MapReduce作業對數據進行處理,并將結果保存起來(這種處理之后的數據稱之為batch view)。Hadoop作業具有很好魯棒性,在運行過程中出現各種異常時都不會損失數據。對于存儲系統來說,這種批處理方式只需要隨機讀、追加寫,不需要處理隨機寫、加鎖、數據一致性等問題,因此大大簡化了存儲系統的設計。但是batch layer對數據處理的延遲是很大的,通常是幾個小時到幾天。

Speed Layer

Speed layer的職責是滿足所有實時性處理的需求。

Speed layer通常基于Storm這樣的流式計算平臺,通過快速的增量式算法,以分鐘級、秒級甚至毫秒級來讀取、分析、保存數據。對于存儲系統,由于需要支持持續的update操作,其設計要復雜的多。為了簡化問題,通常使用劃窗機制來保存一段時間的數據,劃窗的時間一般和batch layer的數據處理一致。

流式處理往往使用內存計算,這意味著當出現異常(比如升級或工作節點異常)時,可能會導致數據的丟失或計算結果錯誤。然而,Lambda Architecture卻不需要過多考慮這類問題,因為下一次batch layer的作業會再次處理所有數據并獲得準確的結果。

Serving Layer

Serving layer的職責是將speed layer輸出數據merge到batch layer輸出數據上,從而得到一份完整的輸出數據,并保存到諸如HBASE這樣的NoSQL數據庫中,以服務于在線檢索應用。在batch計算結果之上meger少量實時數據,其結果同完全使用batch計算相比,具有很好的近似性。

Lambda Architecture的收益

Lambda Architecture帶來了如下收益:

  • 算法可以同時分析歷史數據和短期實時數據,兼顧了準確性和實時性
  • 向存儲介質的隨機寫入大大減少了,提升了性能
  • Batch Layer(在HDFS上)保存了原始數據,可以避免人為錯誤造成的數據損失

當然,獲得這些收益也是有代價的。Batch layer和speed layer事實上做了重復的計算。從資源的角度看,Lambda architecture消耗了更多的資源。

Lambda Architecture在產品中的應用案例

product.png

上圖是一個用戶畫像產品的大數據處理架構的簡化版本,略去了和這個主題無關的部分。可以看到這個產品采用了典型的Lambda Architecture:

  1. Bigpipe百度自研的分布式流式數據傳輸系統,實時傳輸在線系統的日志,下游可以通過訂閱的方式來獲取數據。Bigpipe保證數據在傳輸過程中不重不丟。
  2. Data Warehouse是基于HDFS的數據倉庫,保存收到的所有原始數據。
  3. Batch layer:一系列的Hadoop App完成用戶特征的挖掘,App之間通過HDFS來交換數據。Batch layer每天運行一次,數據的延遲是一天。
  4. Speed layer:利用百度自研的DStream實時流式計算平臺,完成當天用戶特征的實時挖掘。
  5. MolaDB是百度自研的一個面向在線業務的低延遲KV數據庫,存儲挖掘后用戶特征,并為在線系統提供服務。
  6. Search Router是在線業務的檢索入口,根據在線業務的檢索請求查詢MolaDB。
    通過采用Lambda Architecture,即實現了海量用戶畫像數據的實時處理,同時也最大限度的保證了系統的可靠性。

參考資料

  1. [Lambda Architecture][1]
  2. [Lambda Architecture: Achieving Velocity and Volume with Big Data][2]
    [1]: https://www.mapr.com/developercentral/lambda-architecture
    [2]: http://www.semantikoz.com/blog/lambda-architecture-velocity-volume-big-data-hadoop-storm/
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容