《Hadoop與大數據挖掘》一2.1 Hadoop概述
本節書摘來華章計算機《Hadoop與大數據挖掘》一書中的第1章 ,第1.1節,張良均 樊 哲 位文超 劉名軍 許國傑 周 龍 焦正升 著 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。
2.1 Hadoop概述
2.1.1 Hadoop簡介
隨著現代社會的發展,各種信息數據存量與增量都非常大,很多情況下需要我們能夠對TB級,甚至PB級數據集進行存儲和快速分析,然而單機的計算機,無論是硬盤存儲、網絡IO、計算CPU還是內存都是非常有限的。針對這種情況,Hadoop應運而生。
那麼,Hadoop是什麼呢?我們可以很容易在一些比較權威的網站上找到它的定義,例如:Hadoop是一個由Apache基金會所開發的分布式係統基礎架構,它可以使用戶在不了解分布式底層細節的情況下開發分布式程序,充分利用集群的威力進行高速運算和存儲。
從其定義就可以發現,它解決了兩大問題:大數據存儲、大數據分析。也就是Hadoop的兩大核心:HDFS和MapReduce。
HDFS(Hadoop Distributed File System)是可擴展、容錯、高性能的分布式文件係統,異步複製,一次寫入多次讀取,主要負責存儲。
MapReduce為分布式計算框架,主要包含map(映射)和reduce(歸約)過程,負責在HDFS上進行計算。
要深入學習Hadoop,就不得不提到Google的3篇相關論文,也就是Hadoop的基礎理論。
- 2003年發表的《The Google File System》,奠定了“首個商用的超大型分布式文件係統”,從而驗證這種分布式文件係統架構是可行的。
- 2004年發表的《MapReduce: Simplifed Data Processing on Large Clusters》,汲取了函數式編程設計思想,倡導把計算移動到數據思想,該思想的應用大大加快了數據的處理分析。
- 2006年發表的《Bigtable: A Distributed Storage System for Structured Data》,這一論文同樣也是告訴大家,這種分布式數據庫的架構是可行的。 說到這裏,我們來簡單了解下Hadoop的發展曆史,如圖2-1所示。
2002~2004年,第一輪互聯網泡沫剛剛破滅,很多互聯網從業人員都失業了。我們的“主角”Doug Cutting也不例外,他隻能寫點技術文章賺點稿費來養家煳口。但是Doug Cutting不甘寂寞,懷著對夢想和未來的渴望,與他的好朋友Mike Cafarella一起開發出一個開源的搜索引擎Nutch,並曆時一年把這個係統做到能支持億級網頁的搜索。但是當時的網頁數量遠遠不止這個規模,所以兩人不斷改進,想讓支持的網頁量再多一個數量級。
在2003年和2004年,Google分別公布了GFS和MapReduce兩篇論文。Doug Cutting 和Mike Cafarella發現這與他們的想法不盡相同,且更加完美,完全脫離了人工運維的狀態,實現了自動化。
在經過一係列周密考慮和詳細總結後,2006年,Dog Cutting放棄創業,隨後幾經周折加入了Yahoo公司(Nutch的一部分也被正式引入),機緣巧合下,他以自己兒子的一個玩具大象的名字Hadoop命名了該項目。
當係統進入Yahoo以後,項目逐漸發展並成熟了起來。首先是集群規模,從最開始幾十台機器的規模發展到能支持上千個節點的機器,中間做了很多工程性質的工作; 然後是除搜索以外的業務開發,Yahoo逐步將自己廣告係統的數據挖掘相關工作也遷移到了Hadoop上,使Hadoop係統進一步成熟化了。
2007年,紐約時報在100個亞馬遜的虛擬機服務器上使用Hadoop轉換了4TB的圖片數據,更加加深了人們對Hadoop的印象。
在2008年的時候,一位Google的工程師發現要把當時的Hadoop放到任意一個集群中去運行是一件很困難的事情,所以就與幾個好朋友成立了一個專門商業化Hadoop的公司Cloudera。同年,Facebook團隊發現他們很多人不會寫Hadoop的程序,而對SQL的一套東西很熟,所以他們就在Hadoop上構建了一個叫作Hive的軟件,專門用於把SQL轉換為Hadoop的MapReduce程序。
2011年,Yahoo將Hadoop團隊獨立出來,成立了一個子公司Hortonworks,專門提供Hadoop相關的服務。
說了這麼多,那Hadoop有哪些優點呢?
Hadoop是一個能夠讓用戶輕鬆架構和使用的分布式計算的平台。用戶可以輕鬆地在Hadoop上開發和運行處理海量數據的應用程序。其優點主要有以下幾個。
- 高可靠性:Hadoop按位存儲和處理數據的能力值得人們信賴。
- 高擴展性:Hadoop是在可用的計算機集簇間分配數據並完成計算任務的,這些集簇可以方便地擴展到數以千計的節點中。
- 高效性:Hadoop能夠在節點之間動態地移動數據,並保證各個節點的動態平衡,因此處理速度非常快。
- 高容錯性:Hadoop能夠自動保存數據的多個副本,並且能夠自動將失敗的任務重新分配。
- 低成本:與一體機、商用數據倉庫以及QlikView、Yonghong Z-Suite等數據集市相比,Hadoop是開源的,項目的軟件成本因此會大大降低。
- Hadoop帶有用Java語言編寫的框架,因此運行在Linux生產平台上是非常理想的,Hadoop 上的應用程序也可以使用其他語言編寫,比如C++。
最後更新:2017-06-26 09:01:54