1. 程式人生 > >思特奇面試題:hadoop的優點有哪些?

思特奇面試題:hadoop的優點有哪些?

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

什麼是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的資料保護和風險評估。

名字起源

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的優點有:

1、hadoop是可伸縮的,可以處理PB級的大資料

2、hadoop是高容錯的,hadoop能夠自動儲存資料到多個副本,從而保證任務失敗後將該任務進行重新分配

3、hadoop是高效的,能夠將資料在不同節點之間進行分配和執行,保證各個節點上資料的動態平衡,因此處理速度非常快。

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

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

高效性。Hadoop能夠在節點之間動態地移動資料,並保證各個節點的動態平衡,因此處理速度非常快。

高容錯性。Hadoop能夠自動儲存資料的多個副本,並且能夠自動將失敗的任務重新分配。

低成本。與一體機、商用資料倉庫以及QlikView、Yonghong Z-Suite等資料集市相比,hadoop是開源的,專案的軟體成本因此會大大降低。