2015-12-19 45 views
3

我正在通過lambda架構並瞭解如何使用它來構建容錯大數據系統。Lambda架構 - 爲什麼批次圖層

我想知道如何在實時視圖中存儲所有內容並從中生成結果時如何批處理圖層有用?是因爲實時存儲不能被用來存儲所有的數據,那麼它不會是實時的,因爲檢索數據所花費的時間取決於數據存儲的空間。

回答

3

爲什麼料層

爲了節省時間和金錢!

它主要有兩個功能,

  • 來管理主數據集(假定爲不可變)
  • 預先計算的特設的批處理視圖查詢

一切都可以實時存儲並生成結果 - 非真

以上當然是可能的,但不是可行的,因爲數據可能是PB的100's..1000的和產生的結果可能需要一些時間..大量的時間!

這裏的關鍵是要在大數據集上獲得低延遲查詢。批處理層用於創建批處理視圖(低延遲查詢),實時層用於通常較小的最近/更新數據。現在,任何即席查詢都可以通過合併來自批量視圖和實時視圖的結果而不是通過所有主數據集計算來應答。

此外,想想一個查詢(同一個查詢?)一次又一次地在巨大的數據集上運行..浪費時間和金錢!

2

爲了進一步推動@karthik manchala提供的答案,數據處理可以通過三種方式來處理 - 批次,互動,實時/流

我相信,你的參考實時更比流媒體,因爲不是所有用例流相關的交互響應。

交互式響應是其中該響應可從亞秒的任何地方預期數秒至數分鐘,這取決於使用情況。這裏的關鍵是理解處理是在靜止的數據上完成的,即已經存儲在存儲介質上。用戶在處理時與系統交互,因此等待響應。 Hive對Tez,Impala,Spark核心等的所有努力都是爲了解決這個問題並儘可能快地做出迴應。

流的另一邊就是數據流進入系統實時 - 比如推特饋送,點擊流等,並需要處理,以儘快生成的數據來完成。像Storm,Spark Streaming這樣的框架可以解決這個問題。

批處理的情況是爲了解決需要在大型數據集上完成一些繁重工作的情況,以便使用戶相信他所看到的響應是實時的。例如,將大量文檔索引到Apache Solr中是一項批量作業,其中索引將根據數據集運行幾分鐘或幾小時。但是,查詢Solr索引的用戶將得到亞秒等待時間的響應。正如您所看到的那樣,索引不能實時實現,因爲可能會有大量數據。 Google搜索的情況也是如此,其中索引將以批處理模式完成,結果以交互模式顯示。

所有這三種數據處理模式都可能涉及任何組織應對數據挑戰。 Lambda架構有效應對這一挑戰,使用相同的數據源滿足多種數據處理需求

0

您可以查看沒有單獨批處理層的Kappa架構。 一切都在流層分析。您可以在正確的配置中使用Kafka作爲master-datasetstorage,並將計算的數據作爲視圖保存在數據庫中。

如果您想重新計算,您可以開始一個新的流處理作業,並將您的視圖從Kafka重新計算到您的數據庫並替換舊視圖。 只能使用實時視圖作爲臨時查詢的主存儲器,但正如其他答案中已經提到的那樣,如果您有大量數據需要執行批處理和流處理分離而不是批量處理,作爲流工作的工作。這取決於你的數據的大小。 另外,使用hdfs而不是批量計算數據庫的存儲更便宜。

最後一點在許多情況下,您有不同的批處理和流處理算法,因此您需要單獨進行處理。但基本上可以僅使用「實時視圖」作爲批處理和流層,而不使用Kafka作爲主服務器。這取決於你的用例。