Hadoop百度百科

http://baike.baidu.com/link?url=-lfWMjGNGBJxKC1QKKhefXvB7Wou6Ztn8mgeZf8u-1iH5fcf25lbRfqpW1SGwOmQL0JIk3P1PmfFb_ygARZn5a
 
Hadoop是一個由Apache基金會所開發的 分佈式系統基礎架構。
用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。
[1]   Hadoop實現了一個 分佈式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高 容錯性的特色,而且設計用來部署在低廉的(low-cost)硬件上;並且它提供高吞吐量(high throughput)來訪問 應用程序的數據,適合那些有着超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,能夠以流的形式訪問(streaming access)文件系統中的數據。
Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS爲海量的數據提供了存儲,則MapReduce爲海量的數據提供了計算。[2]  
中文名
海杜普
外文名
Hadoop
類    別
電腦程序
全    稱
Hadoop Distributed File System

起源

編輯

項目起源

Hadoop由 Apache Software Foundation 公司於 2005 年秋天做爲 Lucene的子項目 Nutch的一部分正式引入。它受到最早由 Google Lab 開發的 Map/Reduce 和 Google File System( GFS) 的啓發。
2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) 分別被歸入稱爲 Hadoop 的項目中。
Hadoop 是最受歡迎的在 Internet 上對搜索 關鍵字進行內容分類的工具,但它也能夠解決許多要求極大伸縮性的問題。例如,若是您要 grep 一個 10TB 的巨型文件,會出現什麼狀況?在傳統的系統上,這將須要很長的時間。可是 Hadoop 在設計時就考慮到這些問題,採用 並行執行機制,所以能大大提升效率。

發展歷程

Hadoop本來來自於谷歌一款名爲MapReduce的編程模型包。谷歌的MapReduce框架能夠把一個應用程序分解爲許多並行計算指令,跨大量的計算節點運行很是巨大的數據集。使用該框架的一個典型例子就是在網絡數據上運行的搜索算法。Hadoop[3]  最初只與網頁索引有關,迅速發展成爲分析大數據的領先平臺。
目前有不少公司開始提供基於Hadoop的商業軟件、支持、服務以及培訓。Cloudera是一家美國的企業軟件公司,該公司在2008年開始提供基於Hadoop的軟件和服務。GoGrid是一家雲計算基礎設施公司,在2012年,該公司與Cloudera合做加速了企業採納基於Hadoop應用的步伐。Dataguise公司是一家數據安全公司,一樣在2012年該公司推出了一款針對Hadoop的數據保護和風險評估。

名字起源

Hadoop這個名字不是一個縮寫,而是一個虛構的名字。該項目的建立者,Doug Cutting解釋Hadoop的得名 :「這個名字是我孩子給一個棕黃色的大象玩具命名的。個人命名標準就是簡短,容易發音和拼寫,沒有太多的意義,而且不會被用於別處。小孩子偏偏是這方面的高手。」
Hadoop的發音是 [hædu:p]。

優勢

編輯
Hadoop是一個可以對大量數據進行 分佈式處理軟件框架。 Hadoop 以一種可靠、高效、可伸縮的方式進行數據處理。
Hadoop 是可靠的,由於它假設計算元素和存儲會失敗,所以它維護多個工做數據副本,確保可以針對失敗的節點從新 分佈處理
Hadoop 是高效的,由於它以並行的方式工做,經過 並行處理加快處理速度。
Hadoop 仍是可伸縮的,可以處理  PB 級數據。
此外,Hadoop 依賴於社區服務,所以它的成本比較低,任何人均可以使用。
Hadoop是一個可以讓用戶輕鬆架構和使用的 分佈式計算平臺。用戶能夠輕鬆地在Hadoop上開發和運行處理海量數據的 應用程序。它主要有如下幾個優勢:
  1. 高可靠性。Hadoop按位存儲和處理數據的能力值得人們信賴。
  2. 高擴展性。Hadoop是在可用的計算機集簇間分配數據並完成計算任務的,這些集簇能夠方便地擴展到數以千計的節點中。
  3. 高效性。Hadoop可以在節點之間動態地移動數據,並保證各個節點的 動態平衡,所以處理速度很是快。
  4. 高容錯性。Hadoop可以自動保存數據的多個副本,而且可以自動將失敗的任務從新分配。
  5. 低成本。與一體機、商用數據倉庫以及QlikView、Yonghong Z-Suite等數據集市相比,hadoop是開源的,項目的軟件成本所以會大大下降。
Hadoop帶有用 Java語言編寫的框架,所以運行在 Linux 生產平臺上是很是理想的。Hadoop 上的 應用程序也可使用其餘語言編寫,好比  C++
hadoop大數據處理的意義
Hadoop得以在大數據處理應用中普遍應用得益於其自身在數據提取、變形和加載(ETL)方面上的自然優點。Hadoop的分佈式架構,將大數據處理引擎儘量的靠近存儲,對例如像ETL這樣的批處理操做相對合適,由於相似這樣操做的批處理結果能夠直接走向存儲。Hadoop的MapReduce功能實現了將單個任務打碎,並將碎片任務(Map)發送到多個節點上,以後再以單個數據集的形式加載(Reduce)到數據倉庫裏。[1]  

核心架構

編輯
Hadoop 由許多元素構成。其最底部是 Hadoop Distributed File System(HDFS),它存儲 Hadoop 集羣中全部存儲節點上的文件。HDFS(對於本文)的上一層是 MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成。經過對Hadoop分佈式計算平臺最核心的分佈式文件系統HDFS、MapReduce處理過程,以及數據倉庫工具Hive和分佈式數據庫Hbase的介紹,基本涵蓋了Hadoop分佈式平臺的全部技術核心。[4]  

HDFS

對外部客戶機而言, HDFS就像一個傳統的分級文件系統。能夠建立、刪除、移動或 重命名文件,等等。可是 HDFS 的架構是基於一組特定的節點構建的(參見圖 1),這是由它自身的特色決定的。這些節點包括 NameNode(僅一個),它在 HDFS 內部提供元數據服務;DataNode,它爲 HDFS 提供存儲塊。因爲僅存在一個 NameNode,所以這是 HDFS 的一個缺點(單點失敗)。
存儲在 HDFS 中的文件被分紅塊,而後將這些塊複製到多個計算機中(DataNode)。這與傳統的 RAID 架構大不相同。塊的大小(一般爲 64MB)和複製的塊數量在建立文件時由客戶機決定。NameNode 能夠控制全部文件操做。HDFS 內部的全部通訊都基於標準的  TCP/IP 協議。

NameNode

NameNode 是一個一般在  HDFS 實例中的單獨機器上運行的 軟件。它負責管理文件系統 名稱空間和控制外部客戶機的訪問。NameNode 決定是否將文件映射到 DataNode 上的複製塊上。對於最多見的 3 個複製塊,第一個複製塊存儲在同一機架的不一樣節點上,最後一個複製塊存儲在不一樣機架的某個節點上。注意,這裏須要您瞭解集羣架構。
實際的 I/O 事務並無通過 NameNode,只有表示 DataNode 和塊的文件映射的元數據通過 NameNode。當外部客戶機發送請求要求建立文件時,NameNode 會以塊標識和該塊的第一個副本的 DataNode IP 地址做爲響應。這個 NameNode 還會通知其餘將要接收該塊的副本的 DataNode。
NameNode 在一個稱爲 FsImage 的文件中存儲全部關於文件系統 名稱空間的信息。這個文件和一個包含全部事務的 記錄文件(這裏是 EditLog)將存儲在 NameNode 的本地文件系統上。FsImage 和 EditLog 文件也須要複製副本,以防文件損壞或 NameNode 系統丟失。
NameNode自己不可避免地具備SPOF(Single Point Of Failure)單點失效的風險,主備模式並不能解決這個問題,經過Hadoop Non-stop namenode才能實現100% uptime可用時間。

DataNode

DataNode 也是一個一般在  HDFS實例中的單獨機器上運行的軟件。Hadoop 集羣包含一個 NameNode 和大量 DataNode。DataNode 一般以機架的形式組織,機架經過一個 交換機將全部系統鏈接起來。Hadoop 的一個假設是:機架內部 節點之間的傳輸速度快於機架間節點的傳輸速度。
DataNode 響應來自 HDFS 客戶機的讀寫請求。它們還響應來自 NameNode 的建立、刪除和複製塊的命令。NameNode 依賴來自每一個 DataNode 的按期心跳(heartbeat)消息。每條消息都包含一個塊報告,NameNode 能夠根據這個報告驗證塊映射和其餘文件系統元數據。若是 DataNode 不能發送心跳消息,NameNode 將採起修復措施,從新複製在該節點上丟失的塊。

文件操做

可見,HDFS 並非一個萬能的文件系統。它的主要目的是支持以流的形式訪問寫入的大型文件。
若是客戶機想將文件寫到 HDFS 上,首先須要將該文件緩存到本地的臨時存儲。若是緩存的數據大於所需的 HDFS 塊大小,建立文件的請求將發送給 NameNode。NameNode 將以 DataNode 標識和目標塊響應客戶機。
同時也通知將要保存文件塊副本的 DataNode。當客戶機開始將 臨時文件發送給第一個 DataNode 時,將當即經過管道方式將塊內容轉發給副本 DataNode。客戶機也負責建立保存在相同 HDFS 名稱空間中的校驗和(checksum)文件。
在最後的文件塊發送以後,NameNode 將文件建立提交到它的持久化元 數據存儲(在 EditLog 和 FsImage 文件)。

Linux 集羣

Hadoop 框架可在單一的 Linux 平臺上使用(開發和調試時),官方提供MiniCluster做爲單元測試使用,不過使用存放在機架上的商業服務器才能發揮它的力量。這些機架組成一個 Hadoop  集羣。它經過集羣拓撲知識決定如何在整個集羣中分配做業和文件。Hadoop 假定節點可能失敗,所以採用本機方法處理單個計算機甚至全部機架的失敗。
Hadoop和高效能計算、網格計算的區別
在Hadoop 出現以前,高性能計算和網格計算一直是處理大數據問題主要的使用方法和工具,它們主要採用消息傳遞接口(Message Passing Interface,MPI)提供的API 來處理大數據。高性能計算的思想是將計算做業分散到集羣機器上,集羣計算節點訪問存儲區域網絡SAN 構成的共享文件系統獲取數據,這種設計比較適合計算密集型做業。當須要訪問像PB 級別的數據的時候,因爲存儲設備網絡帶寬的限制,不少集羣計算節點只能空閒等待數據。而Hadoop卻不存在這種問題,因爲Hadoop 使用專門爲分佈式計算設計的文件系統HDFS,計算的時候只須要將計算代碼推送到存儲節點上,便可在存儲節點上完成數據本地化計算,Hadoop 中的集羣存儲節點也是計算節點。在分佈式編程方面,MPI 是屬於比較底層的開發庫,它賦予了程序員極大的控制能力,可是卻要程序員本身控制程序的執行流程,容錯功能,甚至底層的套接字通訊、數據分析算法等底層細節都須要本身編程實現。這種要求無疑對開發分佈式程序的程序員提出了較高的要求。相反,Hadoop 的MapReduce 倒是一個高度抽象的並行編程模型,它將分佈式並行編程抽象爲兩個原語操做,即map 操做和reduce 操做,開發人員只須要簡單地實現相應的接口便可,徹底不用考慮底層數據流、容錯、程序的並行執行等細節。這種設計無疑大大下降了開發分佈式並行程序的難度。
網格計算一般是指經過現有的互聯網,利用大量來自不一樣地域、資源異構的計算機空閒的CPU 和磁盤來進行分佈式存儲和計算。這些參與計算的計算機具備分處不一樣地域、資源異構(基於不一樣平臺,使用不一樣的硬件體系結構等)等特徵,從而使網格計算和Hadoop 這種基於集羣的計算相區別開。Hadoop 集羣通常構建在經過高速網絡鏈接的單一數據中心內,集羣計算機都具備體系結構、平臺一致的特色,而網格計算須要在互聯網接入環境下使用,網絡帶寬等都沒有保證。
發展示狀
Hadoop 設計之初的目標就定位於高可靠性、高可拓展性、高容錯性和高效性,正是這些設計上與生俱來的優勢,才使得Hadoop 一出現就受到衆多大公司的青睞,同時也引發了研究界的廣泛關注。到目前爲止,Hadoop 技術在互聯網領域已經獲得了普遍的運用,例如,Yahoo 使用4 000 個節點的Hadoop集羣來支持廣告系統和Web 搜索的研究;Facebook 使用1 000 個節點的集羣運行Hadoop,存儲日誌數據,支持其上的數據分析和機器學習;百度用Hadoop處理每週200TB 的數據,從而進行搜索日誌分析和網頁數據挖掘工做;中國移動研究院基於Hadoop 開發了「大雲」(Big Cloud)系統,不但用於相關數據分析,還對外提供服務;淘寶的Hadoop 系統用於存儲並處理電子商務交易的相關數據。國內的高校和科研院所基於Hadoop 在數據存儲、資源管理、做業調度、性能優化、系統高可用性和安全性方面進行研究,相關研究成果多以開源形式貢獻給Hadoop 社區。
除了上述大型企業將Hadoop 技術運用在自身的服務中外,一些提供Hadoop 解決方案的商業型公司也紛紛跟進,利用自身技術對Hadoop 進行優化、改進、二次開發等,而後以公司自有產品形式對外提供Hadoop 的商業服務。比較知名的有創辦於2008 年的Cloudera 公司,它是一家專業從事基於ApacheHadoop 的數據管理軟件銷售和服務的公司,它但願充當大數據領域中相似RedHat 在Linux 世界中的角色。該公司基於Apache Hadoop 發行了相應的商業版本Cloudera Enterprise,它還提供Hadoop 相關的支持、諮詢、培訓等服務。在2009 年,Cloudera 聘請了Doug Cutting(Hadoop 的創始人)擔任公司的首席架構師,從而更加增強了Cloudera 公司在Hadoop 生態系統中的影響和地位。最近,Oracle 也表示已經將Cloudera 的Hadoop 發行版和Cloudera Manager 整合到Oracle Big Data Appliance 中。一樣,Intel 也基於Hadoop 發行了本身的版本IDH。從這些能夠看出,愈來愈多的企業將Hadoop 技術做爲進入大數據領域的必備技術。
須要說明的是,Hadoop 技術雖然已經被普遍應用,可是該技術不管在功能上仍是在穩定性等方面還有待進一步完善,因此還在不斷開發和不斷升級維護的過程當中,新的功能也在不斷地被添加和引入,讀者能夠關注Apache Hadoop的官方網站了解最新的信息。得益於如此多廠商和開源社區的大力支持,相信在不久的未來,Hadoop 也會像當年的Linux 同樣被普遍應用於愈來愈多的領域,從而風靡全球。
MapReduce與Hadoop之比較
Hadoop是Apache軟件基金會發起的一個項目,在大數據分析以及非結構化數據蔓延的背景下,Hadoop受到了史無前例的關注。
Hadoop是一種分佈式數據和計算的框架。它很擅長存儲大量的半結構化的數據集。數據能夠隨機存放,因此一個磁盤的失敗並不會帶來數據丟失。Hadoop也很是擅長分佈式計算——快速地跨多臺機器處理大型數據集合。
MapReduce是處理大量半結構化數據集合的編程模型。編程模型是一種處理並結構化特定問題的方式。例如,在一個關係數據庫中,使用一種集合語言執行查詢,如SQL。告訴語言想要的結果,並將它提交給系統來計算出如何產生計算。還能夠用更傳統的語言(C++,Java),一步步地來解決問題。這是兩種不一樣的編程模型,MapReduce就是另一種。
MapReduce和Hadoop是相互獨立的,實際上又能相互配合工做得很好。

集羣系統

編輯
Google的 數據中心使用廉價的Linux PC機組成集羣,在上面運行各類應用。即便是 分佈式開發的新手也能夠迅速使用Google的基礎設施。核心組件是3個:
⒈GFS(Google File System)。一個 分佈式文件系統,隱藏下層 負載均衡冗餘複製等細節,對上層程序提供一個統一的文件系統 API接口。Google根據本身的需求對它進行了特別優化,包括:超大文件的訪問,讀操做比例遠超過寫操做,PC機極易發生故障形成節點失效等。GFS把文件分紅64MB的塊,分佈在 集羣的機器上,使用Linux的文件系統存放。同時每塊文件至少有3份以上的 冗餘。中心是一個Master節點,根據文件索引,找尋文件塊。詳見Google的工程師發佈的GFS論文。
⒉MapReduce。Google發現大多數分佈式運算能夠抽象爲MapReduce操做。Map是把輸入Input分解成中間的Key/Value對,Reduce把Key/Value合成最終輸出Output。這兩個函數由 程序員提供給系統,下層設施把Map和Reduce操做分佈在 集羣上運行,並把結果存儲在GFS上。
⒊BigTable。一個大型的 分佈式數據庫,這個數據庫不是關係式的數據庫。像它的名字同樣,就是一個巨大的 表格,用來存儲結構化的數據。
以上三個設施 Google均有論文發表。
  1. 《The Google File System 》 2003年[5]  
  2. 《MapReduce: Simplified Data Processing on Large Clusters》 2004年[6]  
  3. 《Bigtable: A Distributed Storage System for Structured Data》 2006年[7]  

應用程序

編輯
Hadoop 的最多見用法之一是 Web 搜索。雖然它不是惟一的 軟件框架 應用程序,但做爲一個並行 數據處理引擎,它的表現很是突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程,它受到 Google開發的啓發。這個流程稱爲建立索引,它將 Web 爬行器檢索到的文本 Web 頁面做爲輸入,而且將這些頁面上的單詞的頻率報告做爲結果。而後能夠在整個 Web 搜索過程當中使用這個結果從已定義的搜索參數中識別內容。
最簡單的 MapReduce 應用程序至少包含 3 個部分:一個 Map  函數、一個 Reduce 函數和一個 main 函數。main 函數將 做業控制和文件輸入/輸出結合起來。在這點上,Hadoop 提供了大量的接口和 抽象類,從而爲 Hadoop 應用程序開發人員提供許多工具,可用於調試和性能度量等。
MapReduce 自己就是用於 並行處理大數據集的 軟件框架。MapReduce 的根源是函數性編程中的 map 和 reduce 函數。它由兩個可能包含有許多實例(許多 Map 和 Reduce)的操做組成。Map 函數接受一組數據並將其轉換爲一個鍵/值對列表,輸入域中的每一個元素對應一個鍵/值對。Reduce 函數接受 Map 函數生成的列表,而後根據它們的鍵(爲每一個鍵生成一個鍵/值對)縮小鍵/值對列表。
這裏提供一個示例,幫助您理解它。假設輸入域是 one small step for man,one giant leap for mankind。在這個域上運行 Map 函數將得出如下的鍵/值對列表:
(one,1) (small,1) (step,1) (for,1) (man,1)
MapReduce 流程的概念流 MapReduce 流程的概念流
(one,1) (giant,1) (leap,1) (for,1) (mankind,1)
若是對這個鍵/值對列表應用 Reduce 函數,將獲得如下一組鍵/值對:
(one,2) (small,1) (step,1) (for,2) (man,1)(giant,1) (leap,1) (mankind,1)
結果是對輸入域中的單詞進行計數,這無疑對處理索引十分有用。可是,假設有兩個輸入域,第一個是 one small step for man,第二個是 one giant leap for mankind。您能夠在每一個域上執行 Map 函數和 Reduce 函數,而後將這兩個鍵/值對列表應用到另外一個 Reduce 函數,這時獲得與前面同樣的結果。換句話說,能夠在輸入域並行使用相同的操做,獲得的結果是同樣的,但速度更快。這即是 MapReduce 的威力;它的並行功能可在任意數量的系統上使用。圖 2 以區段和迭代的形式演示這種思想。
回到 Hadoop 上,
顯示處理和存儲的物理分佈的 Hadoop 集羣 顯示處理和存儲的物理分佈的 Hadoop 集羣
它是如何實現這個功能的?一個表明客戶機在單個主系統上啓動的 MapReduce 應用程序稱爲 JobTracker。相似於 NameNode,它是 Hadoop 集羣中唯一負責控制 MapReduce 應用程序的系統。在 應用程序提交以後,將提供包含在 HDFS 中的輸入和輸出目錄。JobTracker 使用文件塊信息(物理量和位置)肯定如何建立其餘 TaskTracker 從屬任務。MapReduce 應用程序被複制到每一個出現輸入文件塊的節點。將爲特定節點上的每一個文件塊建立一個唯一的從屬任務。每一個 TaskTracker 將狀態和完成信息報告給 JobTracker。圖 3 顯示一個示例集羣中的工做分佈。
Hadoop 的這個特色很是重要,由於它並無將存儲移動到某個位置以供處理,而是將處理移動到存儲。這經過根據集羣中的節點數調節處理,所以支持高效的 數據處理

區別

編輯
Hadoop是Apache軟件基金會發起的一個項目,在大數據分析以及非結構化數據蔓延的背景下,Hadoop受到了史無前例的關注。[8]  
Hadoop是一種分佈式數據和計算的框架。它很擅長存儲大量的半結構化的數據集。數據能夠隨機存放,因此一個磁盤的失敗並不會帶來數據丟失。Hadoop也很是擅長分佈式計算——快速地跨多臺機器處理大型數據集合。
MapReduce是處理大量半結構化數據集合的編程模型。編程模型是一種處理並結構化特定問題的方式。例如,在一個關係數據庫中,使用一種集合語言執行查詢,如SQL。告訴語言想要的結果,並將它提交給系統來計算出如何產生計算。還能夠用更傳統的語言( C++,Java),一步步地來解決問題。這是兩種不一樣的編程模型,MapReduce就是另一種。
MapReduce和Hadoop是相互獨立的,實際上又能相互配合工做得很好。[9]  

開源實現

編輯
Hadoop是項目的總稱。主要是由HDFS和MapReduce組成。
HDFS是Google File System(GFS)的開源實現。
MapReduce是Google MapReduce的開源實現。
這個分佈式框架頗有創造性,並且有極大的擴展性,使得Google在系統吞吐量上有很大的競爭力。所以Apache基金會用Java實現了一個開源版本,支持Fedora、Ubuntu等Linux平臺。雅虎和硅谷風險投資公司Benchmark Capital 聯合成立一家名爲Hortonworks的新公司,接管被普遍應用的數據分析 軟件Hadoop的開發工做。
Hadoop實現了HDFS文件系統和MapRecue。用戶只要繼承MapReduceBase,提供分別實現Map和Reduce的兩個類,並註冊Job便可自動分佈式運行。
至今爲止是2.4.1,穩定版本是1.2.1 和 yarn 的 2.4.0。
HDFS把 節點分紅兩類:NameNode和DataNode。NameNode是惟一的,程序與之通訊,而後從DataNode上存取文件。這些操做是透明的,與普通的文件系統API沒有區別。
MapReduce則是JobTracker節點爲主,分配工做以及負責和 用戶程序通訊。
HDFS和MapReduce實現是徹底分離的,並非沒有HDFS就不能MapReduce運算。
Hadoop也跟其餘 雲計算項目有共同點和目標:實現海量數據的計算。而進行海量計算須要一個穩定的,安全的數據容器,纔有了Hadoop 分佈式文件系統(HDFS,Hadoop Distributed File System)。
HDFS通訊部分使用org.apache.hadoop.ipc,能夠很快使用RPC.Server.start()構造一個節點,具體業務功能還需本身實現。針對HDFS的業務則爲數據流的讀寫,NameNode/DataNode的通訊等。
MapReduce主要在org.apache.hadoop.mapred,實現提供的接口類,並完成節點通訊(能夠不是hadoop通訊接口),就能進行MapReduce運算。

子項目

編輯
Hadoop Common: 在0.20及之前的版本中,包含HDFS、MapReduce和其餘項目公共內容,從0.21開始HDFS和MapReduce被分離爲獨立的子項目,其他內容爲Hadoop Common
HDFS: Hadoop 分佈式文件系統(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列數據庫。( HBaseAvro已經於2010年5月成爲頂級 Apache 項目)
Hive:數據倉庫工具,由Facebook貢獻。
Zookeeper:分佈式鎖設施,提供相似Google Chubby的功能,由Facebook貢獻。
Avro:新的數據序列化格式與傳輸工具,將逐步取代Hadoop原有的IPC機制。
Pig: 大數據分析平臺,爲用戶提供多種接口。
Ambari:Hadoop管理工具,能夠快捷的監控、部署、管理集羣。
Sqoop:於在HADOOP與傳統的數據庫間進行數據的傳遞。

研究

編輯
Hadoop是原Yahoo的Doug Cutting根據Google發佈的學術論文研究而來。Doug Cutting給這個Project起了個名字,就叫Hadoop。
Doug Cutting在Cloudera公司任職。Cloudera的Hadoop是商用版。不一樣於Apache的開源版。
若是要研究Hadoop的話,下載Apache的開源版本是一種不錯的選擇。
只研究Apache版本的,不足以對Hadoop的理念理解。再對Cloudera版本的研究,會更上一層樓。
美國的AsterData,也是Hadoop的一個商用版,AsterData的MPP理念,Applications Within理念等等,也都是值得研究。
Google的成功已經說明了RDB的下一代就是Nosql(Not Only SQL),好比說GFS,Hadoop等等。
Hadoop做爲開源軟件來講,其魅力更是不可估量。
上文中說到Google的學術論文,其中包涵有:
  1. Google File System(大規模分散文件系統)
  2. MapReduce (大規模分散FrameWork)
  3. BigTable(大規模分散數據庫)
  4. Chubby(分散鎖服務)

大事記

編輯
2011年12月27日--1.0.0版本釋出。標誌着Hadoop已經初具生產規模。
2009年4月-- 贏得每分鐘排序,59秒內排序500 GB(在1400個節點上)和173分鐘內排序100 TB數據(在3400個節點上)。
2009年3月-- 17個集羣總共24 000臺機器。
2008年10月-- 研究集羣天天裝載10 TB的數據。
2008年4月-- 贏得世界最快1 TB 數據排序在900個節點上用時209秒。
2007年4月-- 研究集羣達到兩個1000個節點的集羣。
2007年1月-- 研究集羣到達900個節點。
2006年12月-- 標準排序在20個節點上運行1.8個小時,100個節點3.3小時,500個節點5.2小時,900個節點7.8個小時。
2006年11月-- 研究集羣增長到600個節點。
2006年5月-- 標準排序在500個節點上運行42個小時(硬件配置比4月的更好)。
2006年5月-- 雅虎創建了一個300個節點的Hadoop研究集羣。
2006年4月-- 標準排序(10 GB每一個節點)在188個節點上運行47.9個小時。
2006年2月-- 雅虎的 網格計算團隊採用Hadoop。
2006年2月-- Apache Hadoop項目正式啓動以支持MapReduce和HDFS的獨立發展。
2006年1月-- Doug Cutting加入雅虎。
2005年12月-- Nutch移植到新的框架,Hadoop在20個節點上穩定運行。
2004年-- 最初的版本(稱爲HDFS和MapReduce)由Doug Cutting和Mike Cafarella開始實施。

認證

編輯

Cloudera

Cloudera公司主要提供Apache Hadoop開發工程師認證(Cloudera CertifiedDeveloper for Apache Hadoop ,CCDH)和Apache Hadoop管理工程師認證(Cloudera CertifiedAdministrator for Apache Hadoop ,CCAH),更多相關信息,請參閱Cloudera公司官方網站。

Hortonworks

Hortonworks Hadoop培訓課程是由Apache Hadoop項目的領導者和核心開發人員所設計,表明了這一行業的最高水平。
Hortonworks是國際領先的開發、推廣和支持Apache Hadoop的商業供應商,它的Hadoop認證也是業界公認的Hadoop權威認證,分爲開發者認證(HCAHD[10]   , Hortonworks Certified Apache HadoopDeveloper)和管理員認證(HCAHA, Hortonwork Certified Apache HadoopAdministrator)。

信息安全

編輯
經過Hadoop安所有署經驗總結,開發出如下十大建議,以確保大型和複雜多樣環境下的數據信息安全。
一、先下手爲強!在規劃部署階段就肯定數據的隱私保護策略,最好是在將數據放入到Hadoop以前就肯定好保護策略。
  二、肯定哪些數據屬於企業的敏感數據。根據公司的隱私保護政策,以及相關的行業法規和政府規章來綜合肯定。
  三、及時發現敏感數據是否暴露在外,或者是否導入到Hadoop中。
  四、蒐集信息並決定是否暴露出安全風險。
  五、肯定商業分析是否須要訪問真實數據,或者肯定是否可使用這些敏感數據。而後,選擇合適的加密技術。若是有任何疑問,對其進行加密隱藏處理,同時提供最安全的加密技術和靈活的應對策略,以適應將來需求的發展。
  六、確保數據保護方案同時採用了隱藏和 加密技術,尤爲是若是咱們須要將敏感數據在Hadoop中保持獨立的話。
  七、確保數據保護方案適用於全部的數據文件,以保存在數據彙總中實現數據分析的準確性。
  八、肯定是否須要爲特定的數據集量身定製保護方案,並考慮將Hadoop的目錄分紅較小的更爲安全的組。
  九、確保選擇的加密解決方案可與公司的訪問控制技術互操做,容許不一樣用戶能夠有選擇性地訪問Hadoop集羣中的數據。
  十、確保須要加密的時候有合適的技術(好比 Java、Pig等)可被部署並支持無縫解密和快速訪問數據。[11]  

Hadoop之父

編輯
生活中,可能全部人都間接用過他的做品,
他是Lucene、Nutch 、Hadoop等項目的發起人。是他,把高深莫測的搜索技術造成產品,貢獻給普通大衆;仍是他,打造了在雲計算和大數據領域裏如日中天的Hadoop[12]   。他是某種意義上的盜火者,他就是Doug Cutting。

圖冊

編輯
HDFS流程圖
HDFS流程圖  (2張)
詞條圖冊
相關文章
相關標籤/搜索