Hadoop
一個分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會所開發(fā)。
用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運算和存儲。
Hadoop實現(xiàn)了一個分布式文件系統(tǒng)(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,并且設(shè)計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
Hadoop的框架最核心的設(shè)計就是:HDFS和MapReduce.HDFS為海量的數(shù)據(jù)提供了存儲,則MapReduce為海量的數(shù)據(jù)提供了計算。
中文名海杜普
外文名Hadoop
項目起源
Hadoop由 Apache Software Foundation 公司于 2005 年秋天作為Lucene的子
hadoop logo
hadoop logo
項目Nutch的一部分正式引入。它受到最先由 Google Lab 開發(fā)的 Map/Reduce 和 Google File System(GFS) 的啟發(fā)。
2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) 分別被納入稱為 Hadoop 的項目中。
Hadoop 是最受歡迎的在 Internet 上對搜索關(guān)鍵字進(jìn)行內(nèi)容分類的工具,但它也可以解決許多要求極大伸縮性的問題。例如,如果您要 grep 一個 10TB 的巨型文件,會出現(xiàn)什么情況?在傳統(tǒng)的系統(tǒng)上,這將需要很長的時間。但是 Hadoop 在設(shè)計時就考慮到這些問題,采用并行執(zhí)行機制,因此能大大提高效率。
發(fā)展歷程
Hadoop原本來自于谷歌一款名為MapReduce的編程模型包。谷歌的MapReduce框架可以把一個應(yīng)用程序分解為許多并行計算指令,跨大量的計算節(jié)點運行非常巨大的數(shù)據(jù)集。使用該框架的一個典型例子就是在網(wǎng)絡(luò)數(shù)據(jù)上運行的搜索算法。
Hadoop 最初只與網(wǎng)頁索引有關(guān),迅速發(fā)展成為分析大數(shù)據(jù)的領(lǐng)先平臺。Cloudera是一家企業(yè)軟件公司,該公司在2008年開始提供基于Hadoop的軟件和服務(wù)。
GoGrid是一家云計算基礎(chǔ)設(shè)施公司,在2012年,該公司與Cloudera合作加速了企業(yè)采納基于Hadoop應(yīng)用的步伐。Dataguise公司是一家數(shù)據(jù)安全公司,同樣在2012年該公司推出了一款針對Hadoop的數(shù)據(jù)保護(hù)和風(fēng)險評估。
名字起源
Hadoop這個名字不是一個縮寫,而是一個虛構(gòu)的名字。該項目的創(chuàng)建者,Doug Cutting解釋Hadoop的得名 :“這個名字是我孩子給一個棕黃色的大象玩具命名的。我的命名標(biāo)準(zhǔn)就是簡短,容易發(fā)音和拼寫,沒有太多的意義,并且不會被用于別處。小孩子恰恰是這方面的高手。”
Hadoop的發(fā)音是 [h?du:p]。
2 諸多優(yōu)點
Hadoop是一個能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架。但是 Hadoop 是以一種可靠、高效、可伸縮的方式進(jìn)行處理的。
Hadoop 是可靠的,因為它假設(shè)計算元素和存儲會失敗,因此它維護(hù)多個工作數(shù)據(jù)副本,確保能夠針對失敗的節(jié)點重新分布處理。
Hadoop 是高效的,因為它以并行的方式工作,通過并行處理加快處理速度。
Hadoop 還是可伸縮的,能夠處理 PB 級數(shù)據(jù)。
此外,Hadoop 依賴于社區(qū)服務(wù),因此它的成本比較低,任何人都可以使用。
Hadoop是一個能夠讓用戶輕松架構(gòu)和使用的分布式計算平臺。用戶可以輕松地在Hadoop上開發(fā)和運行處理海量數(shù)據(jù)的應(yīng)用程序。它主要有以下幾個優(yōu)點:
高可靠性。Hadoop按位存儲和處理數(shù)據(jù)的能力值得人們信賴。
高擴展性。Hadoop是在可用的計算機集簇間分配數(shù)據(jù)并完成計算任務(wù)的,這些集簇可以方便地擴展到數(shù)以千計的節(jié)點中。
高效性。Hadoop能夠在節(jié)點之間動態(tài)地移動數(shù)據(jù),并保證各個節(jié)點的動態(tài)平衡,因此處理速度非??臁?/p>
高容錯性。Hadoop能夠自動保存數(shù)據(jù)的多個副本,并且能夠自動將失敗的任務(wù)重新分配。
低成本。與一體機、商用數(shù)據(jù)倉庫以及QlikView、Yonghong Z-Suite等數(shù)據(jù)集市相比,hadoop是開源的,項目的軟件成本因此會大大降低。
Hadoop帶有用Java語言編寫的框架,因此運行在 Linux 生產(chǎn)平臺上是非常理想的。Hadoop 上的應(yīng)用程序也可以使用其他語言編寫,比如 C++。
hadoop大數(shù)據(jù)處理的意義
Hadoop得以在大數(shù)據(jù)處理應(yīng)用中廣泛應(yīng)用得益于其自身在數(shù)據(jù)提取、變形和加載(ETL)方面上的天然優(yōu)勢。Hadoop的分布式架構(gòu),將大數(shù)據(jù)處理引擎盡可能的靠近存儲,對例如像ETL這樣的批處理操作相對合適,因為類似這樣操作的批處理結(jié)果可以直接走向存儲。Hadoop的MapReduce功能實現(xiàn)了將單個任務(wù)打碎,并將碎片任務(wù)(Map)發(fā)送到多個節(jié)點上,之后再以單個數(shù)據(jù)集的形式加載(Reduce)到數(shù)據(jù)倉庫里。[1]
3 核心架構(gòu)
Hadoop 由許多元素構(gòu)成。其最底部是 Hadoop Distributed File System(HDFS),它存儲 Hadoop 集群中所有存儲節(jié)點上的文件。HDFS(對于本文)的上一層是MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成。通過對Hadoop分布式計算平臺最核心的分布式文件系統(tǒng)HDFS、MapReduce處理過程,以及數(shù)據(jù)倉庫工具Hive和分布式數(shù)據(jù)庫Hbase的介紹,基本涵蓋了Hadoop分布式平臺的所有技術(shù)核心。[4]
HDFS
對外部客戶機而言,HDFS就像一個傳統(tǒng)的分級文件系統(tǒng)??梢詣?chuàng)建、刪除、移動或重命名文件,等等。但是 HDFS 的架構(gòu)是基于一組特定的節(jié)點構(gòu)建的(參見圖 1),這是由它自身的特點決定的。這些節(jié)點包括 NameNode(僅一個),它在 HDFS 內(nèi)部提供元數(shù)據(jù)服務(wù);DataNode,它為 HDFS 提供存儲塊。由于僅存在一個 NameNode,因此這是 HDFS 的一個缺點(單點失?。?。
存儲在 HDFS 中的文件被分成塊,然后將這些塊復(fù)制到多個計算機中(DataNode)。這與傳統(tǒng)的 RAID 架構(gòu)大不相同。塊的大?。ㄍǔ?64MB)和復(fù)制的塊數(shù)量在創(chuàng)建文件時由客戶機決定。NameNode 可以控制所有文件操作。HDFS 內(nèi)部的所有通信都基于標(biāo)準(zhǔn)的 TCP/IP 協(xié)議。
NameNode
NameNode 是一個通常在 HDFS 實例中的單獨機器上運行的軟件。它負(fù)責(zé)管理文件系統(tǒng)名稱空間和控制外部客戶機的訪問。NameNode 決定是否將文件映射到 DataNode 上的復(fù)制塊上。對于最常見的 3 個復(fù)制塊,第一個復(fù)制塊存儲在同一機架的不同節(jié)點上,最后一個復(fù)制塊存儲在不同機架的某個節(jié)點上。注意,這里需要您了解集群架構(gòu)。
實際的 I/O事務(wù)并沒有經(jīng)過 NameNode,只有表示 DataNode 和塊的文件映射的元數(shù)據(jù)經(jīng)過 NameNode。當(dāng)外部客戶機發(fā)送請求要求創(chuàng)建文件時,NameNode 會以塊標(biāo)識和該塊的第一個副本的 DataNode IP 地址作為響應(yīng)。這個 NameNode 還會通知其他將要接收該塊的副本的 DataNode。
NameNode 在一個稱為 FsImage 的文件中存儲所有關(guān)于文件系統(tǒng)名稱空間的信息。這個文件和一個包含所有事務(wù)的記錄文件(這里是 EditLog)將存儲在 NameNode 的本地文件系統(tǒng)上。FsImage 和 EditLog 文件也需要復(fù)制副本,以防文件損壞或 NameNode 系統(tǒng)丟失。
NameNode本身不可避免地具有SPOF(Single Point Of Failure)單點失效的風(fēng)險,主備模式并不能解決這個問題,通過Hadoop Non-stop namenode才能實現(xiàn)100% uptime可用時間。
DataNode
DataNode 也是一個通常在 HDFS實例中的單獨機器上運行的軟件。Hadoop 集群包含一個 NameNode 和大量 DataNode。DataNode 通常以機架的形式組織,機架通過一個交換機將所有系統(tǒng)連接起來。Hadoop 的一個假設(shè)是:機架內(nèi)部節(jié)點之間的傳輸速度快于機架間節(jié)點的傳輸速度。
DataNode 響應(yīng)來自 HDFS 客戶機的讀寫請求。它們還響應(yīng)來自 NameNode 的創(chuàng)建、刪除和復(fù)制塊的命令。NameNode 依賴來自每個 DataNode 的定期心跳(heartbeat)消息。每條消息都包含一個塊報告,NameNode 可以根據(jù)這個報告驗證塊映射和其他文件系統(tǒng)元數(shù)據(jù)。如果 DataNode 不能發(fā)送心跳消息,NameNode 將采取修復(fù)措施,重新復(fù)制在該節(jié)點上丟失的塊。
文件操作
可見,HDFS 并不是一個萬能的文件系統(tǒng)。它的主要目的是支持以流的形式訪問寫入的大型文件。
如果客戶機想將文件寫到 HDFS 上,首先需要將該文件緩存到本地的臨時存儲。如果緩存的數(shù)據(jù)大于所需的 HDFS 塊大小,創(chuàng)建文件的請求將發(fā)送給 NameNode。NameNode 將以 DataNode 標(biāo)識和目標(biāo)塊響應(yīng)客戶機。
同時也通知將要保存文件塊副本的 DataNode。當(dāng)客戶機開始將臨時文件發(fā)送給第一個 DataNode 時,將立即通過管道方式將塊內(nèi)容轉(zhuǎn)發(fā)給副本 DataNode??蛻魴C也負(fù)責(zé)創(chuàng)建保存在相同 HDFS名稱空間中的校驗和(checksum)文件。
在最后的文件塊發(fā)送之后,NameNode 將文件創(chuàng)建提交到它的持久化元數(shù)據(jù)存儲(在 EditLog 和 FsImage 文件)。
Linux 集群
Hadoop 框架可在單一的 Linux 平臺上使用(開發(fā)和調(diào)試時),官方提供MiniCluster作為單元測試使用,不過使用存放在機架上的商業(yè)服務(wù)器才能發(fā)揮它的力量。這些機架組成一個 Hadoop 集群。它通過集群拓?fù)渲R決定如何在整個集群中分配作業(yè)和文件。Hadoop 假定節(jié)點可能失敗,因此采用本機方法處理單個計算機甚至所有機架的失敗。
4 集群系統(tǒng)
Google的數(shù)據(jù)中心使用廉價的Linux PC機組成集群,在上面運行各種應(yīng)用。即使是分布式開發(fā)的新手也可以迅速使用Google的基礎(chǔ)設(shè)施。核心組件是3個:
⒈GFS(Google File System)。一個分布式文件系統(tǒng),隱藏下層負(fù)載均衡,冗余復(fù)制等細(xì)節(jié),對上層程序提供一個統(tǒng)一的文件系統(tǒng)API接口。Google根據(jù)自己的需求對它進(jìn)行了特別優(yōu)化,包括:超大文件的訪問,讀操作比例遠(yuǎn)超過寫操作,PC機極易發(fā)生故障造成節(jié)點失效等。GFS把文件分成64MB的塊,分布在集群的機器上,使用Linux的文件系統(tǒng)存放。同時每塊文件至少有3份以上的冗余。中心是一個Master節(jié)點,根據(jù)文件索引,找尋文件塊。詳見Google的工程師發(fā)布的GFS論文。
?、睲apReduce。Google發(fā)現(xiàn)大多數(shù)分布式運算可以抽象為MapReduce操作。Map是把輸入Input分解成中間的Key/Value對,Reduce把Key/Value合成最終輸出Output。這兩個函數(shù)由程序員提供給系統(tǒng),下層設(shè)施把Map和Reduce操作分布在集群上運行,并把結(jié)果存儲在GFS上。
?、矪igTable。一個大型的分布式數(shù)據(jù)庫,這個數(shù)據(jù)庫不是關(guān)系式的數(shù)據(jù)庫。像它的名字一樣,就是一個巨大的表格,用來存儲結(jié)構(gòu)化的數(shù)據(jù)。
以上三個設(shè)施Google均有論文發(fā)表。
《The Google File System 》 2003年[5]
《MapReduce: Simplified Data Processing on Large Clusters》 2004年[6]
《Bigtable: A Distributed Storage System for Structured Data》 2006年[7]
5 應(yīng)用程序
Hadoop 的最常見用法之一是 Web 搜索。雖然它不是惟一的軟件框架應(yīng)用程序,但作為一個并行數(shù)據(jù)處理引擎,它的表現(xiàn)非常突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程,它受到Google開發(fā)的啟發(fā)。這個流程稱為創(chuàng)建索引,它將 Web爬行器檢索到的文本 Web 頁面作為輸入,并且將這些頁面上的單詞的頻率報告作為結(jié)果。然后可以在整個 Web 搜索過程中使用這個結(jié)果從已定義的搜索參數(shù)中識別內(nèi)容。
MapReduce
最簡單的 MapReduce應(yīng)用程序至少包含 3 個部分:一個 Map 函數(shù)、一個 Reduce 函數(shù)和一個 main 函數(shù)。main 函數(shù)將作業(yè)控制和文件輸入/輸出結(jié)合起來。在這點上,Hadoop 提供了大量的接口和抽象類,從而為 Hadoop應(yīng)用程序開發(fā)人員提供許多工具,可用于調(diào)試和性能度量等。
MapReduce 本身就是用于并行處理大數(shù)據(jù)集的軟件框架。MapReduce 的根源是函數(shù)性編程中的 map 和 reduce 函數(shù)。它由兩個可能包含有許多實例(許多 Map 和 Reduce)的操作組成。Map 函數(shù)接受一組數(shù)據(jù)并將其轉(zhuǎn)換為一個鍵/值對列表,輸入域中的每個元素對應(yīng)一個鍵/值對。Reduce 函數(shù)接受 Map 函數(shù)生成的列表,然后根據(jù)它們的鍵(為每個鍵生成一個鍵/值對)縮小鍵/值對列表。
這里提供一個示例,幫助您理解它。假設(shè)輸入域是 one small step for man,one giant leap for mankind。在這個域上運行 Map 函數(shù)將得出以下的鍵/值對列表:
?。╫ne,1) (small,1) (step,1) (for,1) (man,1)
MapReduce 流程的概念流
(one,1) (giant,1) (leap,1) (for,1) (mankind,1)
如果對這個鍵/值對列表應(yīng)用 Reduce 函數(shù),將得到以下一組鍵/值對:
?。╫ne,2) (small,1) (step,1) (for,2) (man,1)(giant,1) (leap,1) (mankind,1)
結(jié)果是對輸入域中的單詞進(jìn)行計數(shù),這無疑對處理索引十分有用。但是,假設(shè)有兩個輸入域,第一個是 one small step for man,第二個是 one giant leap for mankind。您可以在每個域上執(zhí)行 Map 函數(shù)和 Reduce 函數(shù),然后將這兩個鍵/值對列表應(yīng)用到另一個 Reduce 函數(shù),這時得到與前面一樣的結(jié)果。換句話說,可以在輸入域并行使用相同的操作,得到的結(jié)果是一樣的,但速度更快。這便是 MapReduce 的威力;它的并行功能可在任意數(shù)量的系統(tǒng)上使用。圖 2 以區(qū)段和迭代的形式演示這種思想。
回到 Hadoop 上,它是如何實現(xiàn)這個功能的?一個代表客戶機在單個主系統(tǒng)上啟動的 MapReduce應(yīng)用程序稱為 JobTracker。類似于 NameNode,它是 Hadoop 集群中惟一負(fù)責(zé)控制 MapReduce應(yīng)用程序的系統(tǒng)。在應(yīng)用程序提交之后,將提供包含在 HDFS 中的輸入和輸出目錄。JobTracker 使用文件塊信息(物理量和位置)確定如何創(chuàng)建其他 TaskTracker 從屬任務(wù)。MapReduce應(yīng)用程序被復(fù)制到每個出現(xiàn)輸入文件塊的節(jié)點。將為特定節(jié)點上的每個文件塊創(chuàng)建一個惟一的從屬任務(wù)。每個 TaskTracker 將狀態(tài)和完成信息報告給 JobTracker。圖 3 顯示一個示例集群中的工作分布。
Hadoop 的這個特點非常重要,因為它并沒有將存儲移動到某個位置以供處理,而是將處理移動到存儲。這通過根據(jù)集群中的節(jié)點數(shù)調(diào)節(jié)處理,因此支持高效的數(shù)據(jù)處理。
6 MapReduce與Hadoop之比較
Hadoop是Apache軟件基金會發(fā)起的一個項目,在大數(shù)據(jù)分析以及非結(jié)構(gòu)化數(shù)據(jù)蔓延的背景下,Hadoop受到了前所未有的關(guān)注。
Hadoop是一種分布式數(shù)據(jù)和計算的框架。它很擅長存儲大量的半結(jié)構(gòu)化的數(shù)據(jù)集。數(shù)據(jù)可以隨機存放,所以一個磁盤的失敗并不會帶來數(shù)據(jù)丟失。Hadoop也非常擅長分布式計算——快速地跨多臺機器處理大型數(shù)據(jù)集合。
MapReduce是處理大量半結(jié)構(gòu)化數(shù)據(jù)集合的編程模型。編程模型是一種處理并結(jié)構(gòu)化特定問題的方式。例如,在一個關(guān)系數(shù)據(jù)庫中,使用一種集合語言執(zhí)行查詢,如SQL。告訴語言想要的結(jié)果,并將它提交給系統(tǒng)來計算出如何產(chǎn)生計算。還可以用更傳統(tǒng)的語言(C++,Java),一步步地來解決問題。這是兩種不同的編程模型,MapReduce就是另外一種。
MapReduce和Hadoop是相互獨立的,實際上又能相互配合工作得很好。[9]
7 開源實現(xiàn)
Hadoop是項目的總稱。主要是由HDFS和MapReduce組成。
HDFS是Google File System(GFS)的開源實現(xiàn)。
MapReduce是Google MapReduce的開源實現(xiàn)。
這個分布式框架很有創(chuàng)造性,而且有極大的擴展性,使得Google在系統(tǒng)吞吐量上有很大的競爭力。因此Apache基金會用Java實現(xiàn)了一個開源版本,支持Fedora、Ubuntu等Linux平臺。雅虎和硅谷風(fēng)險投資公司Benchmark Capital 聯(lián)合成立一家名為Hortonworks的新公司,接管被廣泛應(yīng)用的數(shù)據(jù)分析軟件Hadoop的開發(fā)工作。
Hadoop實現(xiàn)了HDFS文件系統(tǒng)和MapRecue。用戶只要繼承MapReduceBase,提供分別實現(xiàn)Map和Reduce的兩個類,并注冊Job即可自動分布式運行。
至今為止是2.4.1,穩(wěn)定版本是1.2.1 和 yarn 的 2.4.0。
HDFS把節(jié)點分成兩類:NameNode和DataNode。NameNode是唯一的,程序與之通信,然后從DataNode上存取文件。這些操作是透明的,與普通的文件系統(tǒng)API沒有區(qū)別。
MapReduce則是JobTracker節(jié)點為主,分配工作以及負(fù)責(zé)和用戶程序通信。
HDFS和MapReduce實現(xiàn)是完全分離的,并不是沒有HDFS就不能MapReduce運算。
Hadoop也跟其他云計算項目有共同點和目標(biāo):實現(xiàn)海量數(shù)據(jù)的計算。而進(jìn)行海量計算需要一個穩(wěn)定的,安全的數(shù)據(jù)容器,才有了Hadoop分布式文件系統(tǒng)(HDFS,Hadoop Distributed File System)。
HDFS通信部分使用org.apache.hadoop.ipc,可以很快使用RPC.Server.start()構(gòu)造一個節(jié)點,具體業(yè)務(wù)功能還需自己實現(xiàn)。針對HDFS的業(yè)務(wù)則為數(shù)據(jù)流的讀寫,NameNode/DataNode的通信等。
MapReduce主要在org.apache.hadoop.mapred,實現(xiàn)提供的接口類,并完成節(jié)點通信(可以不是hadoop通信接口),就能進(jìn)行MapReduce運算。
8 子項目
Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他項目公共內(nèi)容,從0.21開始HDFS和MapReduce被分離為獨立的子項目,其余內(nèi)容為Hadoop Common
HDFS: Hadoop分布式文件系統(tǒng)(Distributed File System) - HDFS (Hadoop Distributed File System)
MapReduce:并行計算框架,0.20前使用 org.apache.hadoop.mapred 舊接口,0.20版本開始引入org.apache.hadoop.mapreduce的新API
HBase: 類似Google BigTable的分布式NoSQL列數(shù)據(jù)庫。(HBase和Avro已經(jīng)于2010年5月成為頂級 Apache 項目)
Hive:數(shù)據(jù)倉庫工具,由Facebook貢獻(xiàn)。
Zookeeper:分布式鎖設(shè)施,提供類似Google Chubby的功能,由Facebook貢獻(xiàn)。
Avro:新的數(shù)據(jù)序列化格式與傳輸工具,將逐步取代Hadoop原有的IPC機制。
Pig: 大數(shù)據(jù)分析平臺,為用戶提供多種接口。
Ambari:Hadoop管理工具,可以快捷的監(jiān)控、部署、管理集群。
Sqoop:于在HADOOP與傳統(tǒng)的數(shù)據(jù)庫間進(jìn)行數(shù)據(jù)的傳遞。
9 研究
Hadoop是原Yahoo的Doug Cutting根據(jù)Google發(fā)布的學(xué)術(shù)論文研究而來。Doug Cutting給這個Project起了個名字,就叫Hadoop。
Doug Cutting在Cloudera公司任職。Cloudera的Hadoop是商用版。不同于Apache的開源版。
如果要研究Hadoop的話,下載Apache的開源版本是一種不錯的選擇。
只研究Apache版本的,不足以對Hadoop的理念理解。再對Cloudera版本的研究,會更上一層樓。
美國的AsterData,也是Hadoop的一個商用版,AsterData的MPP理念,Applications Within理念等等,也都是值得研究。
Google的成功已經(jīng)說明了RDB的下一代就是Nosql(Not Only SQL),比如說GFS,Hadoop等等。
Hadoop作為開源軟件來說,其魅力更是不可估量。
上文中說到Google的學(xué)術(shù)論文,其中包涵有:
Google File System(大規(guī)模分散文件系統(tǒng))
MapReduce (大規(guī)模分散FrameWork)
BigTable(大規(guī)模分散數(shù)據(jù)庫)
Chubby(分散鎖服務(wù))
10 大事記
2011年12月27日--1.0.0版本釋出。標(biāo)志著Hadoop已經(jīng)初具生產(chǎn)規(guī)模。
2009年4月-- 贏得每分鐘排序,59秒內(nèi)排序500 GB(在1400個節(jié)點上)和173分鐘內(nèi)排序100 TB數(shù)據(jù)(在3400個節(jié)點上)。
2009年3月-- 17個集群總共24 000臺機器。
2008年10月-- 研究集群每天裝載10 TB的數(shù)據(jù)。
2008年4月-- 贏得世界最快1 TB數(shù)據(jù)排序在900個節(jié)點上用時209秒。
2007年4月-- 研究集群達(dá)到兩個1000個節(jié)點的集群。
2007年1月-- 研究集群到達(dá)900個節(jié)點。
2006年12月-- 標(biāo)準(zhǔn)排序在20個節(jié)點上運行1.8個小時,100個節(jié)點3.3小時,500個節(jié)點5.2小時,900個節(jié)點7.8個小時。
2006年11月-- 研究集群增加到600個節(jié)點。
2006年5月-- 標(biāo)準(zhǔn)排序在500個節(jié)點上運行42個小時(硬件配置比4月的更好)。
2006年5月-- 雅虎建立了一個300個節(jié)點的Hadoop研究集群。
2006年4月-- 標(biāo)準(zhǔn)排序(10 GB每個節(jié)點)在188個節(jié)點上運行47.9個小時。
2006年2月-- 雅虎的網(wǎng)格計算團(tuán)隊采用Hadoop。
2006年2月-- Apache Hadoop項目正式啟動以支持MapReduce和HDFS的獨立發(fā)展。
2006年1月-- Doug Cutting加入雅虎。
2005年12月-- Nutch移植到新的框架,Hadoop在20個節(jié)點上穩(wěn)定運行。
2004年-- 最初的版本(稱為HDFS和MapReduce)由Doug Cutting和Mike Cafarella開始實施。
11 認(rèn)證
Cloudera
Cloudera公司主要提供Apache Hadoop開發(fā)工程師認(rèn)證(Cloudera CertifiedDeveloper for Apache Hadoop ,CCDH)和Apache Hadoop管理工程師認(rèn)證(Cloudera CertifiedAdministrator for Apache Hadoop ,CCAH),更多相關(guān)信息,請參閱Cloudera公司官方網(wǎng)站。
Hortonworks
Hortonworks Hadoop培訓(xùn)課程是由Apache Hadoop項目的領(lǐng)導(dǎo)者和核心開發(fā)人員所設(shè)計,代表了這一行業(yè)的最高水平。
Hortonworks是國際領(lǐng)先的開發(fā)、推廣和支持Apache Hadoop的商業(yè)供應(yīng)商,它的Hadoop認(rèn)證也是業(yè)界公認(rèn)的Hadoop權(quán)威認(rèn)證,分為開發(fā)者認(rèn)證(HCAHD[10] , Hortonworks Certified Apache HadoopDeveloper)和管理員認(rèn)證(HCAHA, Hortonwork Certified Apache HadoopAdministrator)。
12 信息安全
通過Hadoop安全部署經(jīng)驗總結(jié),開發(fā)出以下十大建議,以確保大型和復(fù)雜多樣環(huán)境下的數(shù)據(jù)信息安全。
1、先下手為強!在規(guī)劃部署階段就確定數(shù)據(jù)的隱私保護(hù)策略,最好是在將數(shù)據(jù)放入到Hadoop之前就確定好保護(hù)策略。
2、確定哪些數(shù)據(jù)屬于企業(yè)的敏感數(shù)據(jù)。根據(jù)公司的隱私保護(hù)政策,以及相關(guān)的行業(yè)法規(guī)和政府規(guī)章來綜合確定。
3、及時發(fā)現(xiàn)敏感數(shù)據(jù)是否暴露在外,或者是否導(dǎo)入到Hadoop中。
4、搜集信息并決定是否暴露出安全風(fēng)險。
5、確定商業(yè)分析是否需要訪問真實數(shù)據(jù),或者確定是否可以使用這些敏感數(shù)據(jù)。然后,選擇合適的加密技術(shù)。如果有任何疑問,對其進(jìn)行加密隱藏處理,同時提供最安全的加密技術(shù)和靈活的應(yīng)對策略,以適應(yīng)未來需求的發(fā)展。
6、確保數(shù)據(jù)保護(hù)方案同時采用了隱藏和加密技術(shù),尤其是如果我們需要將敏感數(shù)據(jù)在Hadoop中保持獨立的話。
7、確保數(shù)據(jù)保護(hù)方案適用于所有的數(shù)據(jù)文件,以保存在數(shù)據(jù)匯總中實現(xiàn)數(shù)據(jù)分析的準(zhǔn)確性。
8、確定是否需要為特定的數(shù)據(jù)集量身定制保護(hù)方案,并考慮將Hadoop的目錄分成較小的更為安全的組。
9、確保選擇的加密解決方案可與公司的訪問控制技術(shù)互操作,允許不同用戶可以有選擇性地訪問Hadoop集群中的數(shù)據(jù)。
10、確保需要加密的時候有合適的技術(shù)(比如Java、Pig等)可被部署并支持無縫解密和快速訪問數(shù)據(jù)。
13 Hadoop之父
生活中,可能所有人都間接用過他的作品,他是Lucene、Nutch 、Hadoop等項目的發(fā)起人。是
他,把高深莫測的搜索技術(shù)形成產(chǎn)品,貢獻(xiàn)給普通大眾;還是他,打造了在云計算和大數(shù)據(jù)領(lǐng)域里如日中天的Hadoop[12] 。他是某種意義上的盜火者,他就是Doug Cutting。
內(nèi)容來自百科網(wǎng)