天天看點

使用Linux和Hadoop進行分布式計算(版主精簡)

先決條件

        Hadoop 是一個能夠對大量資料進行分布式處理的軟體架構。但是 Hadoop 是以一種可靠、高效、可伸縮的方式進行處理的。Hadoop 是可靠的,因為它假設計算元素和存儲會失敗,是以它維護多個工作資料副本,確定能夠針對失敗的節點重新分布處理。Hadoop 是高效的,因為它以并行的方式工作,通過并行處理加快處理速度。Hadoop 還是可伸縮的,能夠處理 PB 級資料。此外,Hadoop 依賴于社群伺服器,是以它的成本比較低,任何人都可以使用。

        您可能已經想到,Hadoop 運作在 Linux 生産平台上是非常理想的,因為它帶有用 Java™ 語言編寫的架構。Hadoop 上的應用程式也可以使用其他語言編寫,比如 C++。

Hadoop架構

        Hadoop 有許多元素構成。最底部是 Hadoop Distributed File System(HDFS),它存儲 Hadoop 叢集中所有存儲節點上的檔案。HDFS(對于本文)的上一層是 MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成。

Hadoop 叢集的簡化視圖

Hadoop 應用程式

        Hadoop 的最常見用法之一是 Web 搜尋。雖然它不是惟一的軟體架構應用程式,但作為一個并行資料處理引擎,它的表現非常突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程,它受到 Google 開發的啟發。這個流程稱為建立索引,它将 Web 爬行器檢索到的文本 Web 頁面作為輸入,并且将這些頁面上的單詞的頻率報告作為結果。然後可以在整個 Web 搜尋過程中使用這個結果從已定義的搜尋參數中識别内容。

MapReduce 流程的概念流

       現在回到 Hadoop 上,它是如何實作這個功能的?一個代表客戶機在單個主系統上啟動的 MapReduce 應用程式稱為 JobTracker。類似于 NameNode,它是 Hadoop 叢集中惟一負責控制 MapReduce 應用程式的系統。在應用程式送出之後,将提供包含在 HDFS 中的輸入和輸出目錄。JobTracker 使用檔案塊資訊(實體量和位置)确定如何建立其他 TaskTracker 從屬任務。MapReduce 應用程式被複制到每個出現輸入檔案塊的節點。将為特定節點上的每個檔案塊建立一個惟一的從屬任務。每個 TaskTracker 将狀态和完成資訊報告給 JobTracker。

顯示處理和存儲的實體分布的 Hadoop 叢集

      Hadoop 的這個特點非常重要,因為它并沒有将存儲移動到某個位置以供處理,而是将處理移動到存儲。這通過根據叢集中的節點數調節處理,是以支援高效的資料處理。

繼續閱讀