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

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