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