讓你的Hadoop運行的更快
目前,在數(shù)據(jù)處理上的一個挑戰(zhàn)是,我們輸入數(shù)據(jù)的速度往往比我們處理數(shù)據(jù)的速度快得多。在大數(shù)據(jù)的環(huán)境下,隨著數(shù)據(jù)量的繼續(xù)增長,以及相應的需要更多的復雜的數(shù)據(jù)處理,這個問題正變得更加明顯。
幫助批處理
Hadoop的目的是通過以下幾種方式應對這一挑戰(zhàn):
1. 使用一個分布式的文件系統(tǒng):這使我們能夠分散負載,并根據(jù)需要壯大我們的系統(tǒng)。
2. 優(yōu)化寫入速度:為了能夠快速寫入設計的Hadoop架構,需要在第一次登錄時寫入并處理。這可讓寫入速度相當快。
3. 使用批處理(Map/Reduce)來用處理速度平衡數(shù)據(jù)饋送的速度
批處理的挑戰(zhàn)
批量處理所面臨的挑戰(zhàn)是它假定數(shù)據(jù)量突然增加。如果我們的數(shù)據(jù)在一個連續(xù)的基礎上穩(wěn)定到來,那么假設將導致整個批量處理背后的架構開始崩潰。
如果我們增加了批處理窗口,結果是在數(shù)據(jù)到來的這段時間里的更高的延遲,直到我們真正得到它并納入我們的報告和見解里。此外,在許多系統(tǒng)中,每天進行的批處理窗口時間是有限的。通常情況下,假設大部分的處理可以在非高峰時段來進行,但是,體積變大,處理的數(shù)據(jù)所花費的時間變長,直到有一天它達到時間極限,然后我們面臨處理一個不斷增長的積壓的問題。此外,如果我們的處理過程發(fā)生失敗,我們可能沒有足夠的時間來重新處理。
通過基于流的處理來加快速度
基于流的處理概念是相當簡單的。我們可以在數(shù)據(jù)進來的同時處理它,而不是先記錄再處理。
用生產(chǎn)線這個很好的比喻來解釋其中的差別。想想一家汽車制造線:一種方法是把所有的部件放在一起,然后一件一件地組裝;另一種方法是讓制造商包裝各個部件,并只發(fā)送包裝好的部件到制造線上。哪種方法更快?
Hadoop批處理系統(tǒng)和制造業(yè)的生產(chǎn)線是一樣的道理。
在制造業(yè)中,即使我們在制造商那里預先包裝零部件,我們?nèi)匀恍枰阉械牟考黄鸾M裝起來。同樣的道理,基于流的處理并不意味著要取代我們的Hadoop系統(tǒng),而是減少系統(tǒng)需要處理的大量工作,并讓進入Hadoop的過程變得更容易,從而讓數(shù)據(jù)處理更快。
內(nèi)存中的流處理可以成為一個很好的流處理系統(tǒng)。在這個案例中,對于大數(shù)據(jù)的實時分析的背景下如何工作,我們演示了Twitter使用基于流的處理來面對到來的數(shù)據(jù),然后送入一個大數(shù)據(jù)資料庫。如下圖所示:

最后的注意事項
我們可以在一些工作進入我們的Hadoop系統(tǒng)之前就進行預處理,這樣使我們的Hadoop系統(tǒng)運行得更快。我們也可以不在Hadoop Map/Reduce系統(tǒng)中批處理不適合的工作負載,而是使用Stream Processing。



























