- 大數據技術原理與應用(第2版)
- 林子雨編著
- 2620字
- 2019-07-30 13:20:26
2.1 概述
本節簡要介紹Hadoop的起源、發展歷史、特性、應用現狀和版本演變。
2.1.1 Hadoop簡介
Hadoop是Apache軟件基金會旗下的一個開源分布式計算平臺,為用戶提供了系統底層細節透明的分布式基礎架構。Hadoop 是基于 Java語言開發的,具有很好的跨平臺特性,并且可以部署在廉價的計算機集群中。Hadoop的核心是分布式文件系統(Hadoop Distributed File System,HDFS)和MapReduce。HDFS是針對谷歌文件系統(Google File System,GFS)的開源實現,是面向普通硬件環境的分布式文件系統,具有較高的讀寫速度、很好的容錯性和可伸縮性,支持大規模數據的分布式存儲,其冗余數據存儲的方式很好地保證了數據的安全性。MapReduce是針對谷歌 MapReduce 的開源實現,允許用戶在不了解分布式系統底層細節的情況下開發并行應用程序,采用MapReduce來整合分布式文件系統上的數據,可保證分析和處理數據的高效性。借助于Hadoop,程序員可以輕松地編寫分布式并行程序,將其運行于廉價計算機集群上,完成海量數據的存儲與計算。
Hadoop被公認為行業大數據標準開源軟件,在分布式環境下提供了海量數據的處理能力。幾乎所有主流廠商都圍繞 Hadoop 提供開發工具、開源軟件、商業化工具和技術服務,如谷歌、雅虎、微軟、思科、淘寶等都支持Hadoop。
2.1.2 Hadoop的發展簡史
Hadoop這個名稱朗朗上口,至于為什么要取這樣一個名字,其實并沒有深奧的道理,只是追求名稱簡短、容易發音和記憶而已。很顯然,小孩子是這方面的高手,大名鼎鼎的“Google”就是由小孩子給取名的,Hadoop同樣如此,它是小孩子給“一頭吃飽了的棕黃色大象”取的名字(見圖2-1)。Hadoop后來的很多子項目和模塊的命名方式都沿用了這種風格,如Pig和Hive等。

圖2-1 Hadoop的標志
Hadoop最初是由Apache Lucene項目的創始人Doug Cutting開發的文本搜索庫。Hadoop源自2002年的Apache Nutch項目——一個開源的網絡搜索引擎并且也是Lucene項目的一部分。在2002年的時候,Nutch項目遇到了棘手的難題,該搜索引擎框架無法擴展到擁有數十億網頁的網絡。而就在一年以后的2003 年,谷歌公司發布了分布式文件系統 GFS 方面的論文,可以解決大規模數據存儲的問題。于是,在2004年,Nutch項目也模仿GFS開發了自己的分布式文件系統(Nutch Distributed File System,NDFS),也就是HDFS的前身。
2004 年,谷歌公司又發表了另一篇具有深遠影響的論文,闡述了 MapReduce 分布式編程思想。2005年,Nutch開源實現了谷歌的MapReduce。到了2006年2月,Nutch中的NDFS和MapReduce開始獨立出來,成為Lucene項目的一個子項目,稱為Hadoop,同時Doug Cutting加盟雅虎。2008年1月,Hadoop正式成為Apache頂級項目,Hadoop也逐漸開始被雅虎之外的其他公司使用。2008年4月,Hadoop打破世界紀錄,成為最快排序1 TB數據的系統,它采用一個由910個節點構成的集群進行運算,排序時間只用了209s。在2009年5月,Hadoop更是把1 TB數據排序時間縮短到62 s。Hadoop從此聲名大噪,迅速發展成為大數據時代最具影響力的開源分布式開發平臺,并成為事實上的大數據處理標準。
2.1.3 Hadoop的特性
Hadoop是一個能夠對大量數據進行分布式處理的軟件框架,并且是以一種可靠、高效、可伸縮的方式進行處理的,它具有以下幾個方面的特性。
● 高可靠性。采用冗余數據存儲方式,即使一個副本發生故障,其他副本也可以保證正常對外提供服務。
● 高效性。作為并行分布式計算平臺,Hadoop采用分布式存儲和分布式處理兩大核心技術,能夠高效地處理PB級數據。
● 高可擴展性。Hadoop 的設計目標是可以高效穩定地運行在廉價的計算機集群上,可以擴展到數以千計的計算機節點上。
● 高容錯性。采用冗余數據存儲方式,自動保存數據的多個副本,并且能夠自動將失敗的任務進行重新分配。
● 成本低。Hadoop 采用廉價的計算機集群,成本比較低,普通用戶也很容易用自己的 PC搭建Hadoop運行環境。
● 運行在Linux平臺上。Hadoop是基于Java語言開發的,可以較好地運行在Linux平臺上。
● 支持多種編程語言。Hadoop上的應用程序也可以使用其他語言編寫,如C++。
2.1.4 Hadoop的應用現狀
Hadoop憑借其突出的優勢,已經在各個領域得到了廣泛的應用,而互聯網領域是其應用的主陣地。
2007年,雅虎在Sunnyvale總部建立了M45——一個包含了4 000個處理器和1.5 PB容量的Hadoop集群系統。此后,包括卡耐基梅隆大學、加州大學伯克利分校、康奈爾大學和馬薩諸塞大學阿默斯特分校、斯坦福大學、華盛頓大學、密歇根大學、普渡大學等12所大學加入該集群系統的研究,推動了開放平臺下的開放源碼發布。目前,雅虎擁有全球最大的 Hadoop 集群,有大約25 000個節點,主要用于支持廣告系統與網頁搜索。
Facebook作為全球知名的社交網站,擁有超過3億的活躍用戶,其中,約有3 000萬用戶至少每天更新一次自己的狀態;用戶每月總共上傳 10 億余張照片、1 000 萬個視頻,每周共享 10億條內容,包括日志、鏈接、新聞、微博等。因此,Facebook需要存儲和處理的數據量同樣是非常巨大的,每天新增加4 TB壓縮后的數據,掃描135 TB大小的數據,在集群上執行Hive任務超過7 500次,每小時需要進行8萬次計算。很顯然,對于Facebook而言,Hadoop是非常理想的選擇,Facebook主要將Hadoop平臺用于日志處理、推薦系統和數據倉庫等方面。
國內采用Hadoop的公司主要有百度、淘寶、網易、華為、中國移動等,其中,淘寶的Hadoop集群比較大。據悉,淘寶Hadoop集群擁有2 860個節點,清一色基于英特爾處理器的X86服務器,其總存儲容量達到50 PB,實際使用容量超過40PB,日均作業數高達15萬,服務于阿里巴巴集團各部門,數據來源于各部門產品的線上數據庫(Oracle、MySQL)備份、系統日志以及爬蟲數據,每天在Hadoop集群運行各種MapReduce任務,如數據魔方、量子統計、推薦系統、排行榜等。
作為全球最大的中文搜索引擎公司,百度對海量數據的存儲和處理要求是非常高的。因此,百度選擇了Hadoop,主要用于日志的存儲和統計、網頁數據的分析和挖掘、商業分析、在線數據反饋、網頁聚類等。百度目前擁有3個Hadoop集群,計算機節點數量在700個左右,并且規模還在不斷增加中,每天運行的MapReduce任務在3 000個左右,處理數據約120 TB/天。
華為是 Hadoop 的使用者,也是 Hadoop 技術的重要推動者。由雅虎成立的 Hadoop 公司Hortonworks 曾經發布一份報告,用來說明各個公司對 Hadoop 發展的貢獻。其中,華為公司在Hadoop重要貢獻公司名單內,排在谷歌和思科公司的前面,說明華為公司也在積極參與開源社區貢獻。
2.1.5 Hadoop的版本
Apache Hadoop版本分為兩代,第一代Hadoop稱為Hadoop 1.0,第二代Hadoop稱為Hadoop 2.0。第一代Hadoop包含0.20.x、0.21.x和0.22.x三大版本,其中,0.20.x最后演化成1.0.x,變成了穩定版,而0.21.x和0.22.x則增加了HDFS HA等重要的新特性。第二代Hadoop包含0.23.x和2.x兩大版本,它們完全不同于Hadoop 1.0,是一套全新的架構,均包含HDFS Federation和YARN(Yet Another Resource Negotiator)兩個系統。
除了免費開源的Apache Hadoop以外,還有一些商業公司推出Hadoop的發行版。2008年,Cloudera成為第一個Hadoop商業化公司,并在2009年推出第一個Hadoop發行版。此后,很多大公司也加入了做 Hadoop產品化的行列,比如 MapR、Hortonworks、星環等。一般而言,商業化公司推出的Hadoop發行版也是以Apache Hadoop為基礎,但是前者比后者具有更好的易用性、更多的功能以及更高的性能。
- 大數據項目管理:從規劃到實現
- Go Machine Learning Projects
- Drupal 7 Multilingual Sites
- Getting Started with MariaDB
- 城市道路交通主動控制技術
- 觸控顯示技術
- MATLAB/Simulink權威指南:開發環境、程序設計、系統仿真與案例實戰
- Grome Terrain Modeling with Ogre3D,UDK,and Unity3D
- 西門子變頻器技術入門及實踐
- 工業自動化技術實訓指導
- 網絡脆弱性掃描產品原理及應用
- Learning iOS 8 for Enterprise
- 數據庫基礎:Access
- 當產品經理遇到人工智能
- 百度智能小程序:AI賦能新機遇