雖然接觸hadoop有了兩年多的時間,但是一直沒有深入地思考過,為什么業(yè)界需要這個東西來解決問題?
想從兩個方面來說說這個問題:
1.工業(yè)界之前是用什么來解決的?
2.大家遇到了什么問題,而這個問題之前的方案不能解決?
我們先看第一個問題,在早期人們進(jìn)行數(shù)據(jù)存儲和計(jì)算主要是使用RDBMS進(jìn)行,不論是sql server、oracle,而且通常針對數(shù)據(jù)是做一些經(jīng)營報(bào)表、財(cái)務(wù)數(shù)據(jù)等的分析。這種需求下,數(shù)據(jù)量較小,幾十年的數(shù)據(jù)可能也就幾個T,運(yùn)行速度還很快。
第二個問題,遇到了什么問題?
伴隨著互聯(lián)網(wǎng)的蒸蒸日上,一方面網(wǎng)絡(luò)用戶增多,另一方面人們對于數(shù)據(jù)的渴望已經(jīng)不能局限在看最后的財(cái)務(wù)報(bào)告,大家都想更貼近用戶、機(jī)器,同時其他的譬如交通、電信行業(yè),產(chǎn)生的富媒體數(shù)據(jù)更是豐富多彩,數(shù)據(jù)規(guī)模也是不斷增長。我們希望能從這些用戶行為、機(jī)器日志中看到更多能夠優(yōu)化系統(tǒng)、優(yōu)化用戶體驗(yàn),做更多的用戶研究。所以更多的數(shù)據(jù)帶來更多的存儲問題,原來的單機(jī)已經(jīng)不能解決,而多個磁盤的輪詢讀取性能也是很低,同時磁盤的發(fā)展趨勢:尋址時間的提高遠(yuǎn)遠(yuǎn)慢于傳輸速率的提高。
聽以前一家公司的前輩們聊起在hadoop沒有成熟之前,沒有是自己開發(fā)的一個類分布式系統(tǒng),解決多機(jī)存儲計(jì)算問題但是問題很多,迫切需要解決對數(shù)據(jù)處理系統(tǒng)的這種一次寫入、多次讀取而非像傳統(tǒng)RDBMS的持續(xù)更新的需求。
所以Hadoop就應(yīng)運(yùn)而生了。
這個得從Hadoop的兩個關(guān)鍵概念的作用說起:MR和HDFS。
前者是一種編程模型,解決的是數(shù)據(jù)塊獨(dú)立并行計(jì)算的問題;后者是一種存儲方案,解決的是分布式存儲,確保水平擴(kuò)展、容災(zāi)、備份。這樣的設(shè)計(jì)可以使數(shù)據(jù)和計(jì)算都分散到每一臺機(jī)器上進(jìn)行,數(shù)據(jù)本地化也成為了MR的核心特征,也正因?yàn)檫@個獲得良好的性能。