通過一個對數據的存儲和分析的簡單實例初識Hadoop

        對於一個剛剛接觸Hadoop的菜鳥來說,Hadoop的概念還是挺抽象的,而且這個技術剛剛興起,除了阿里巴巴,騰訊、中國移動這些技術實力非常強而且需要對數據進行海量存儲的公司對Hadoop技術有一些初步應用以外,其它中小企業對它的應用和需求並不多,網絡上也鮮有比較適合的解決方案以供參考。前陣,在Hadoop的官方網站看過一篇文檔,通過  一個數據存儲和分析的簡單實例,淺顯易懂的對Hadoop進行了一個簡要介紹,自認爲對我理解Hadoop起到了啓蒙作用,下面通過這個實例和我的它的理解對Hadoop的概念做一個初步說明。
      多年來,硬盤存儲容量快速增長的同時,訪問速度(數據從硬盤讀取的速度)卻未能與時俱進。1990年,一個普通硬盤驅動器的存儲容量爲1370 MB,傳輸速度爲4.4 MB/s,讀完整個硬盤的數據需要5分鐘的時間;20年過去了,1TB級別的磁盤驅動器是很正常的,但數據傳輸的速度卻在100 MB/s左右,所以它需要花將近3個小時才能讀完整個驅動器的數據。從一個驅動器上讀取所有的數據需要很長時間,寫數據甚至更慢。
      所以,如何大幅減少硬盤驅動器的數據讀取時間顯的至關重要。一個很簡單的方法就是同時從多個磁盤讀取數據。假設,我們有100個容量爲1TB的磁盤,需要存儲的數據爲1TB,每個磁盤存儲百分之一的數據(即1/100T=10485.76MB),如果這100個硬盤並行運算,那麼不到兩分鐘我們就可以讀完這1T的數據。由此可見並行運算對於減少數據讀取時間是非常有效的。但多個磁盤並行運算也有一些瓶頸問題:
       1. 第一個需要解決的問題是硬件故障:一旦開始使用多個硬件設施,其中一個會出故障的概率是非常高的,避免數據丟失的常見做法就是複製;通過系統保存數據的冗餘副本,在故障發生時,可以使用數據的另一份副本。這就是冗餘磁盤陣列的工作方式。Hadoop的文件系統HDFS也是一個例子,它的工作原理與冗餘磁盤陣列基本相似,都是通過保存數據的冗餘副本來避免數據丟失,不同的是HDFS以數據塊(Block)的形式,將數據塊複製三份,存儲在不同的數據節點上。
       2. 之前的數據是通過分佈式存儲做並行運算的,大部分數據分析任務需要通過某種方式把數據合併起來,即從一個磁盤讀取的數據可能需要和另外99個磁盤中讀取的數據合併起來才能使用。目前,各種不同的分佈式系統是能夠組合多個來源的數據,但是如何保證正確性是一個非常難的挑戰,而Hadoop中的核心組件MapReduce提供了一個編程模型,其抽象出上述磁盤讀寫的問題,將其轉換爲計算一個由成對鍵/值組成的數據集,通過Map和Reduce的接口將分佈式存儲的數據整合在一起。
       綜上,Hadoop提供了一個穩定的共享存儲和分析系統。存儲由HDFS實現,分析由MapReduce實現,Hadoop很好的解決了上述關於分佈式存儲和並行運算所遇到的瓶頸問題,縱然Hadoop還有其他功能,但這些功能是它的核心所在。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章