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

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


























