什么是hadoop有哪些優(yōu)點
什么是hadoop有哪些優(yōu)點
Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎架構。那么你對Hadoop了解多少呢?下面就讓學習啦小編來給你科普一下什么是hadoop。
hadoop的起源
項目起源
Hadoop由 Apache Software Foundation 公司于 2005 年秋天作為Lucene的子項目Nutch的一部分正式引入。它受到最先由 Google Lab 開發(fā)的 Map/Reduce 和 Google File System(GFS) 的啟發(fā)。
2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) 分別被納入稱為 Hadoop 的項目中。
Hadoop 是最受歡迎的在 Internet 上對搜索關鍵字進行內容分類的工具,但它也可以解決許多要求極大伸縮性的問題。例如,如果您要 grep 一個 10TB 的巨型文件,會出現(xiàn)什么情況?在傳統(tǒng)的系統(tǒng)上,這將需要很長的時間。但是 Hadoop 在設計時就考慮到這些問題,采用并行執(zhí)行機制,因此能大大提高效率。
發(fā)展歷程
Hadoop原本來自于谷歌一款名為MapReduce的編程模型包。谷歌的MapReduce框架可以把一個應用程序分解為許多并行計算指令,跨大量的計算節(jié)點運行非常巨大的數據集。使用該框架的一個典型例子就是在網絡數據上運行的搜索算法。Hadoop最初只與網頁索引有關,迅速發(fā)展成為分析大數據的領先平臺。
目前有很多公司開始提供基于Hadoop的商業(yè)軟件、支持、服務以及培訓。Cloudera是一家美國的企業(yè)軟件公司,該公司在2008年開始提供基于Hadoop的軟件和服務。GoGrid是一家云計算基礎設施公司,在2012年,該公司與Cloudera合作加速了企業(yè)采納基于Hadoop應用的步伐。Dataguise公司是一家數據安全公司,同樣在2012年該公司推出了一款針對Hadoop的數據保護和風險評估。
名字起源
Hadoop這個名字不是一個縮寫,而是一個虛構的名字。該項目的創(chuàng)建者,Doug Cutting解釋Hadoop的得名 :“這個名字是我孩子給一個棕黃色的大象玩具命名的。我的命名標準就是簡短,容易發(fā)音和拼寫,沒有太多的意義,并且不會被用于別處。小孩子恰恰是這方面的高手。”
hadoop的優(yōu)點
Hadoop是一個能夠對大量數據進行分布式處理的軟件框架。 Hadoop 以一種可靠、高效、可伸縮的方式進行數據處理。
Hadoop 是可靠的,因為它假設計算元素和存儲會失敗,因此它維護多個工作數據副本,確保能夠針對失敗的節(jié)點重新分布處理。
Hadoop 是高效的,因為它以并行的方式工作,通過并行處理加快處理速度。
Hadoop 還是可伸縮的,能夠處理 PB 級數據。
此外,Hadoop 依賴于社區(qū)服務,因此它的成本比較低,任何人都可以使用。
Hadoop是一個能夠讓用戶輕松架構和使用的分布式計算平臺。用戶可以輕松地在Hadoop上開發(fā)和運行處理海量數據的應用程序。它主要有以下幾個優(yōu)點:
高可靠性。Hadoop按位存儲和處理數據的能力值得人們信賴。
高擴展性。Hadoop是在可用的計算機集簇間分配數據并完成計算任務的,這些集簇可以方便地擴展到數以千計的節(jié)點中。
高效性。Hadoop能夠在節(jié)點之間動態(tài)地移動數據,并保證各個節(jié)點的動態(tài)平衡,因此處理速度非??臁?/p>
高容錯性。Hadoop能夠自動保存數據的多個副本,并且能夠自動將失敗的任務重新分配。
低成本。與一體機、商用數據倉庫以及QlikView、Yonghong Z-Suite等數據集市相比,hadoop是開源的,項目的軟件成本因此會大大降低。
Hadoop帶有用Java語言編寫的框架,因此運行在 Linux 生產平臺上是非常理想的。Hadoop 上的應用程序也可以使用其他語言編寫,比如 C++。
hadoop大數據處理的意義
Hadoop得以在大數據處理應用中廣泛應用得益于其自身在數據提取、變形和加載(ETL)方面上的天然優(yōu)勢。Hadoop的分布式架構,將大數據處理引擎盡可能的靠近存儲,對例如像ETL這樣的批處理操作相對合適,因為類似這樣操作的批處理結果可以直接走向存儲。Hadoop的MapReduce功能實現(xiàn)了將單個任務打碎,并將碎片任務(Map)發(fā)送到多個節(jié)點上,之后再以單個數據集的形式加載(Reduce)到數據倉庫里。
MapReduce和Hadoop的區(qū)別
Hadoop是Apache軟件基金會發(fā)起的一個項目,在大數據分析以及非結構化數據蔓延的背景下,Hadoop受到了前所未有的關注。
Hadoop是一種分布式數據和計算的框架。它很擅長存儲大量的半結構化的數據集。數據可以隨機存放,所以一個磁盤的失敗并不會帶來數據丟失。Hadoop也非常擅長分布式計算——快速地跨多臺機器處理大型數據集合。
MapReduce是處理大量半結構化數據集合的編程模型。編程模型是一種處理并結構化特定問題的方式。例如,在一個關系數據庫中,使用一種集合語言執(zhí)行查詢,如SQL。告訴語言想要的結果,并將它提交給系統(tǒng)來計算出如何產生計算。還可以用更傳統(tǒng)的語言(C++,Java),一步步地來解決問題。這是兩種不同的編程模型,MapReduce就是另外一種。
MapReduce和Hadoop是相互獨立的,實際上又能相互配合工作得很好。
hadoop的應用程序
Hadoop 的最常見用法之一是 Web 搜索。雖然它不是唯一的軟件框架應用程序,但作為一個并行數據處理引擎,它的表現(xiàn)非常突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程,它受到Google開發(fā)的啟發(fā)。這個流程稱為創(chuàng)建索引,它將 Web爬行器檢索到的文本 Web 頁面作為輸入,并且將這些頁面上的單詞的頻率報告作為結果。然后可以在整個 Web 搜索過程中使用這個結果從已定義的搜索參數中識別內容。
MapReduce
最簡單的 MapReduce應用程序至少包含 3 個部分:一個 Map 函數、一個 Reduce 函數和一個 main 函數。main 函數將作業(yè)控制和文件輸入/輸出結合起來。在這點上,Hadoop 提供了大量的接口和抽象類,從而為 Hadoop應用程序開發(fā)人員提供許多工具,可用于調試和性能度量等。
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。您可以在每個域上執(zhí)行 Map 函數和 Reduce 函數,然后將這兩個鍵/值對列表應用到另一個 Reduce 函數,這時得到與前面一樣的結果。換句話說,可以在輸入域并行使用相同的操作,得到的結果是一樣的,但速度更快。這便是 MapReduce 的威力;它的并行功能可在任意數量的系統(tǒng)上使用。圖 2 以區(qū)段和迭代的形式演示這種思想。
回到 Hadoop 上,
它是如何實現(xiàn)這個功能的?一個代表客戶機在單個主系統(tǒng)上啟動的 MapReduce應用程序稱為 JobTracker。類似于 NameNode,它是 Hadoop 集群中惟一負責控制 MapReduce應用程序的系統(tǒng)。在應用程序提交之后,將提供包含在 HDFS 中的輸入和輸出目錄。JobTracker 使用文件塊信息(物理量和位置)確定如何創(chuàng)建其他 TaskTracker 從屬任務。MapReduce應用程序被復制到每個出現(xiàn)輸入文件塊的節(jié)點。將為特定節(jié)點上的每個文件塊創(chuàng)建一個惟一的從屬任務。每個 TaskTracker 將狀態(tài)和完成信息報告給 JobTracker。圖 3 顯示一個示例集群中的工作分布。
Hadoop 的這個特點非常重要,因為它并沒有將存儲移動到某個位置以供處理,而是將處理移動到存儲。這通過根據集群中的節(jié)點數調節(jié)處理,因此支持高效的數據處理。
看過“hadoop有哪些優(yōu)點”的人還看了:
2.如何快速閱讀代碼
3.面試簡歷表格范文
4.大數據學習心得
5.大數據分析文章