//
Lambda架構(gòu) vs Kappa架構(gòu) - CSDN博客
http://blog.csdn.net/post_yuan/article/details/52241252
Lambda 架構(gòu)由Storm的作者Nathan Marz提出,其設計目的在于提供一個能滿足大數(shù)據(jù)系統(tǒng)關鍵特性的架構(gòu)渴语,包括高容錯矩距、低延遲习柠、可擴展等流炕。其整合離線計算與實時計算醇坝,融合不可變性孩锡、讀寫分離和復雜性隔離等原則撰洗,可集成Hadoop, Kafka, Spark,Storm等各類大數(shù)據(jù)組件滩届。
//
Kappa 架構(gòu)
Kappa 架構(gòu)是LinkedIn的Jay Kreps結(jié)合實際經(jīng)驗和個人體會集侯,針對Lambda架構(gòu)進行深度剖析,分析其優(yōu)缺點并采用的替代方案帜消。Lambda 架構(gòu)的一個很明顯的問題是需要維護兩套分別跑在批處理和實時計算系統(tǒng)上面的代碼棠枉,而且這兩套代碼得產(chǎn)出一模一樣的結(jié)果。因此對于設計這類系統(tǒng)的人來講泡挺,要面對的問題是:為什么我們不能改進流計算系統(tǒng)讓它能處理這些問題辈讶?為什么不能讓流系統(tǒng)來解決數(shù)據(jù)全量處理的問題?流計算天然的分布式特性注定其擴展性比較好娄猫,能否加大并發(fā)量來處理海量的歷史數(shù)據(jù)贱除?基于種種問題的考慮,Jay提出了Kappa這種替代方案媳溺。
那如何用流計算系統(tǒng)對全量數(shù)據(jù)進行重新計算月幌,步驟如下:
1、用Kafka或類似的分布式隊列保存數(shù)據(jù)悬蔽,需要幾天數(shù)據(jù)量就保存幾天扯躺。
2、當需要全量計算時蝎困,重新起一個流計算實例录语,從頭開始讀取數(shù)據(jù)進行處理,并輸出到一個結(jié)果存儲中禾乘。
3澎埠、當新的實例完成后,停止老的流計算實例始藕,并把老的一引起結(jié)果刪除蒲稳。
一個典型的Kappa架構(gòu)如下,
//
Kappa:比Lambda更好更靈活的實時處理架構(gòu) - bonelee - 博客園
http://www.cnblogs.com/bonelee/p/6603541.html
和Lambda架構(gòu)相比鳄虱,在Kappa架構(gòu)下弟塞,只有在有必要的時候才會對歷史數(shù)據(jù)進行重復計算,并且實時計算和批處理過程使用的是同一份代碼拙已【黾牵或許有些人會質(zhì)疑流式處理對于歷史數(shù)據(jù)的高吞吐量會力不從心,但是這可以通過控制新實例的并發(fā)數(shù)進行改善倍踪。
Kappa架構(gòu)的核心思想包括以下三點:
用Kafka或者類似的分布式隊列系統(tǒng)保存數(shù)據(jù)系宫,你需要幾天的數(shù)據(jù)量就保存幾天索昂。
當需要全量重新計算時,重新起一個流計算實例扩借,從頭開始讀取數(shù)據(jù)進行處理椒惨,并輸出到一個新的結(jié)果存儲中。
當新的實例做完后潮罪,停止老的流計算實例康谆,并把老的一些結(jié)果刪除。
//
可能有這樣回答:流計算給人的印象是對一些流式的嫉到、臨時的數(shù)據(jù)進行計算沃暗,將結(jié)果保存后就將原始數(shù)據(jù)丟棄了,因此它不適合用來處理歷史數(shù)據(jù)何恶。其實這種答案并不完全正確孽锥,對于基于Lambda架構(gòu)實現(xiàn)的Storm框架確實是這樣的,但對于后來出現(xiàn)的Spark并不是细层。
Storm是在2011年7月開源的惜辑,Spark是在2012年之后逐漸為人們所知的,因此在Nathan Marz設計Lambda架構(gòu)的時候疫赎,當時還并沒有一個框架既可以用于離線處理盛撑,又可以進行實時計算。但隨著Spark技術的發(fā)展捧搞,這一想法成為了可能撵彻,Spark本身可以用于批處理,而構(gòu)建在Spark之上的Spark Streaming又可以用于實時計算实牡,因此利用一套系統(tǒng)來應對批處理和實時計算相結(jié)合的業(yè)務完全是可行的。