hadoop的優勢有哪些?

Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。那麼你對Hadoop瞭解多少呢?下面就讓小編來給你科普一下什麼是hadoop。算法

hadoop的起源編程

項目起源安全

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最初只與網頁索引有關,迅速發展成爲分析大數據的領先平臺。函數

目前有不少公司開始提供基於Hadoop的商業軟件、支持、服務以及培訓。Cloudera是一家美國的企業軟件公司,該公司在2008年開始提供基於Hadoop的軟件和服務。GoGrid是一家雲計算基礎設施公司,在2012年,該公司與Cloudera合做加速了企業採納基於Hadoop應用的步伐。Dataguise公司是一家數據安全公司,一樣在2012年該公司推出了一款針對Hadoop的數據保護和風險評估。工具

名字起源oop

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

hadoop的優勢

Hadoop是一個可以對大量數據進行分佈式處理的軟件框架。 Hadoop 以一種可靠、高效、可伸縮的方式進行數據處理。

Hadoop 是可靠的,由於它假設計算元素和存儲會失敗,所以它維護多個工做數據副本,確保可以針對失敗的節點從新分佈處理。

Hadoop 是高效的,由於它以並行的方式工做,經過並行處理加快處理速度。

Hadoop 仍是可伸縮的,可以處理 PB 級數據。

此外,Hadoop 依賴於社區服務,所以它的成本比較低,任何人均可以使用。

Hadoop是一個可以讓用戶輕鬆架構和使用的分佈式計算平臺。用戶能夠輕鬆地在Hadoop上開發和運行處理海量數據的應用程序。它主要有如下幾個優勢:

高可靠性。Hadoop按位存儲和處理數據的能力值得人們信賴。

高擴展性。Hadoop是在可用的計算機集簇間分配數據並完成計算任務的,這些集簇能夠方便地擴展到數以千計的節點中。

高效性。Hadoop可以在節點之間動態地移動數據,並保證各個節點的動態平衡,所以處理速度很是快。

高容錯性。Hadoop可以自動保存數據的多個副本,而且可以自動將失敗的任務從新分配。

低成本。與一體機、商用數據倉庫以及QlikView、Yonghong Z-Suite等數據集市相比,hadoop是開源的,項目的軟件成本所以會大大下降。

Hadoop帶有用Java語言編寫的框架,所以運行在 Linux 生產平臺上是很是理想的。Hadoop 上的應用程序也可使用其餘語言編寫,好比 C++。

hadoop大數據處理的意義

Hadoop得以在大數據處理應用中普遍應用得益於其自身在數據提取、變形和加載(ETL)方面上的自然優點。Hadoop的分佈式架構,將大數據處理引擎儘量的靠近存儲,對例如像ETL這樣的批處理操做相對合適,由於相似這樣操做的批處理結果能夠直接走向存儲。Hadoop的MapReduce功能實現了將單個任務打碎,並將碎片任務(Map)發送到多個節點上,以後再以單個數據集的形式加載(Reduce)到數據倉庫裏。

hadoop的應用程序

Hadoop 的最多見用法之一是 Web 搜索。雖然它不是惟一的軟件框架應用程序,但做爲一個並行數據處理引擎,它的表現很是突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程,它受到Google開發的啓發。這個流程稱爲建立索引,它將 Web爬行器檢索到的文本 Web 頁面做爲輸入,而且將這些頁面上的單詞的頻率報告做爲結果。而後能夠在整個 Web 搜索過程當中使用這個結果從已定義的搜索參數中識別內容。

MapReduce

最簡單的 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 上,

它是如何實現這個功能的?一個表明客戶機在單個主系統上啓動的 MapReduce應用程序稱爲 JobTracker。相似於 NameNode,它是 Hadoop 集羣中唯一負責控制 MapReduce應用程序的系統。在應用程序提交以後,將提供包含在 HDFS 中的輸入和輸出目錄。JobTracker 使用文件塊信息(物理量和位置)肯定如何建立其餘 TaskTracker 從屬任務。MapReduce應用程序被複制到每一個出現輸入文件塊的節點。將爲特定節點上的每一個文件塊建立一個唯一的從屬任務。每一個 TaskTracker 將狀態和完成信息報告給 JobTracker。圖 3 顯示一個示例集羣中的工做分佈。

Hadoop 的這個特色很是重要,由於它並無將存儲移動到某個位置以供處理,而是將處理移動到存儲。這經過根據集羣中的節點數調節處理,所以支持高效的數據處理。

總之:Hadoop的優勢有:

一、hadoop是可伸縮的,能夠處理PB級的大數據

二、hadoop是高容錯的,hadoop可以自動保存數據到多個副本,從而保證任務失敗後將該任務進行從新分配

三、hadoop是高效的,可以將數據在不一樣節點之間進行分配和運行,保證各個節點上數據的動態平衡,所以處理速度很是快。

高可靠性。Hadoop按位存儲和處理數據的能力值得人們信賴。

高擴展性。Hadoop是在可用的計算機集簇間分配數據並完成計算任務的,這些集簇能夠方便地擴展到數以千計的節點中。

高效性。Hadoop可以在節點之間動態地移動數據,並保證各個節點的動態平衡,所以處理速度很是快。

高容錯性。Hadoop可以自動保存數據的多個副本,而且可以自動將失敗的任務從新分配。

低成本。與一體機、商用數據倉庫以及QlikView、Yonghong Z-Suite等數據集市相比,hadoop是開源的,項目的軟件成本所以會大大下降。  

相關文章
相關標籤/搜索