lambda架構由storm的作者nathan marz提出。旨在設計出乙個能滿足。實時大資料系統關鍵特性的架構,具有高容錯、低延時和可擴充套件等特。
lambda架構整合離線計算和實時計算,融合不可變(immutability,讀寫分離和隔離 一系列構原則,可整合hadoop,kafka,storm,spark,hbase等各類大資料元件。
lambda架構的主要思想就是將大資料系統構建為多個層次,三層架構:批處理層、實時處理層、服務層 ,如下圖
儲存master dataset,這是乙個不變的持續增長的資料集
針對這個master dataset進行預運算
顯然,batch layer執行的是批量處理,例如hadoop或者spark支援的map-reduce方式。 它的執行方式可以用一段偽**來表示
1function runbatchlayer():
while (true):
recomputebatchviews()12
3利用batch layer進行預運算的作用實際上就是將大資料變小,從而有效地利用資源,改善實時查詢的效能。但這裡有乙個前提,
就是我們需要預先知道查詢需要的資料,如此才能在batch layer中安排執行計畫,定期對資料進行批量處理。 此外,還要求這些預運算的統計資料是支援合併(merge)的。
2實時處理層
只要batch layer完成對batch view的預計算,serving layer就會對其進行 更新。這意味著在執行預計算時進入的資料不會馬上呈現到batch view中。這對於 要求完全實時的資料系統而言是不能接受的。要解決這個問題,就要通過speed layer。從對資料的處理來看,speed layer與batch layer非常相似,它們之間最大的 區別是前者只處理最近的資料,後者則要處理所有的資料。
另乙個區別是為了滿足最 小的延遲,speed layer並不會在同一時間讀取所有的新資料,相反,它會在接收到 新資料時,更新realtime view, 而不會像batch layer那樣重新運算整個view。 speed layer是一種增量的計算,而非重新運算(recomputation)。
因而,speed layer的作用包括:
對更新到serving layer帶來的高延遲的一種補充
快速、增量的演算法
最終batch layer會覆蓋speed layer
speed layer的等式表達如下所示:
realtime view = function(realtime view, new data)
13服務層
batch layer通過對master dataset執行查詢獲得了batch view,而 serving layer就要負責對batch view進行操作,從而為最終的實時查詢提供支撐。因此serving layer的職責包含:
對batch view的隨機訪問
更新batch view serving layer應該是乙個專用的分布式資料庫,例如elephant
db,以支援對batch view的載入、隨機讀取以及更新。
注意,它並不支援對batch view的隨機寫,因為隨機寫會為資料庫引來許多複雜 性。簡單的特性才能使系統變得更健壯、可**、易配置,也易於運維。
總結下來,lambda架構就是如下的三個等式
batch view = function(all data)
realtime view = function(realtime view, new data)
query = function(batch view . realtime view)12
34.lambda架構元件選型
下圖給出了lambda架構中各個層常用的元件。資料流儲存可選用基於不 可變日誌的分布式訊息系統kafka;batch layer資料集的儲存可選用hadoop的 hdfs,或者是阿里雲的odps;batch view的預計算可以選用mapreduce或 spark;batch view自身結果資料的儲存可使用mysql(查詢少量的最近結果數 據),或hbase(查詢大量的歷史結果資料)。speed layer增量資料的處理可選用 storm或spark streaming;realtime view增量結果資料集為了滿足實時更新的效 率,可選用redis等記憶體nosql
5.lambda架構元件選型原則
lambda架構是個通用框架,各個層選型時不要侷限時上面給出的元件,特 別是對於view的選型。從我對lambda架構的實踐來看,因為view是個和業務關聯 性非常大的概念,view選擇元件時關鍵是要根據業務的需求,來選擇最適合查詢的 元件。不同的view元件的選擇要深入挖掘資料和計算自身的特點,從而選擇出最適 合資料和計算自身特點的元件,同時不同的view可以選擇不同的元件。
6.lambda架構優缺點
優點:實時:低延遲處理資料
可重計算:由於資料不可變,重新計算一樣可以得到正確的結果
容錯:第二點帶來的,程式bug、系統問題等,可以重新計算
複雜性分離、讀寫分離
缺點:開發和運維的複雜性:lambda需要將所有的演算法實現兩次,一次是為批處理系統,另一次是為實時系統,還要求查詢得到的是兩個系統結果的合併
DKHadoop大資料平台架構詳解
大資料的時代已經來了,資訊的 式增長使得越來越多的行業面臨這大量資料需要儲存和分析的挑戰。hadoop作為乙個開源的分布式並行處理平台,以其高拓展 高效率 高可靠等優點越來越受到歡迎。這同時也帶動了hadoop商業版的發行。這裡就通過大快dkhadoop為大家詳細介紹一下hadoop大資料平台架構內...
kylin 大資料架構 大資料Lambda架構
眾所周知,大資料的volume 體積 和velocity 速度 在架構設計中是一對矛盾,具體的表現是大體積的資料處理起來速度就慢。架對於大資料的批處理和實時處理兩種場景往往需要不同的技術。lambda架構就是將實時處理和批處理兩個場景放在一起。apache hadoop提供了hdfs和計算框架 ma...
大資料篇 Lambda架構和Kappa架構(上)
在講解之前我們先來看看這個實際的專案。情況是這樣的,乙個正執行著的廣告精準投放業務,且擁有海量的使用者訪問行為。現在需要進行使用者行為分析倆建立乙個模型,然後根據這個模型來投放使用者喜好的廣告。這時你應該想到,我們可以使用批處理架構來完成,沒錯,這確實也是乙個很不錯的選擇。可是你別忘了,批處理架構有...