Hadoop教程:Hadoop介紹
Hadoop是一個用java編寫的Apache開源框架,它允許使用簡單的程式設計模型跨計算機叢集分散式處理大型資料集。Hadoop框架工作的應用程式工作在一個跨計算機叢集提供分散式儲存和計算的環境中。Hadoop被設計成從單個伺服器擴充套件到數千臺機器,每臺機器都提供本地計算和儲存。
Hadoop架構
Hadoop框架包括以下四個模組:
- Hadoop Common: 這是其他Hadoop模組依賴的Java庫和工具。這些庫提供檔案系統和作業系統級別的抽象,幷包含啟動Hadoop所需的Java檔案和指令碼。
- **Hadoop YARN: **這是一個用於作業排程和叢集資源管理的框架。
- Hadoop分散式檔案系統(HDFS™): 一種分散式檔案系統,提供對應用程式資料的高吞吐量訪問。
- MapReduce: 這是一個基於YARN的大型資料集並行處理系統。
我們可以使用下面的圖來描述Hadoop框架中可用的這四個元件。

hadoop_architecture.jpg
自2012年以來,“Hadoop”一詞通常不僅指上述基本模組,還指可以安裝在Hadoop之上或與Hadoop並行的附加軟體包集合,如 Apache Pig、Apache Hive、Apache HBase、Apache Spark 等。
MapReduce
Hadoop MapReduce 是一個易於編寫應用程式的軟體框架,這些應用程式以可靠、容錯的方式並行處理大叢集(數千個節點)上的海量資料。
MapReduce這個詞實際上是指Hadoop程式執行的兩個不同的任務:
- Map任務: 這是第一個任務,它接受輸入資料並將其轉換為一組資料集合,其中單個元素被分解為元組(鍵/值對)。
- Reduce任務: 該任務將map任務的輸出作為輸入,並將這些資料元組組合成較小的元組集合。reduce任務總是在map任務之後執行。
通常輸入和輸出都儲存在檔案系統中。該框架負責排程任務、監視任務並重新執行失敗的任務。
MapReduce框架由一個master JobTracker 和每個叢集節點的一個slave TaskTracker 組成。master 負責資源管理,跟蹤資源消耗/可用性,排程從伺服器上的作業元件任務,監視它們並重新執行失敗的任務。slave 按照主任務的指示執行任務,並定期向主任務提供任務狀態資訊。
JobTracker是Hadoop MapReduce服務的一個單點故障,這意味著如果JobTracker宕機,所有正在執行的作業都會停止。
Hadoop Distributed File System
Hadoop可以直接與任何可掛載的分散式檔案系統(如本地FS、HFTP FS、S3 FS等)一起工作,但是Hadoop最常用的檔案系統是Hadoop分散式檔案系統(HDFS)。
Hadoop分散式檔案系統(HDFS)是基於谷歌檔案系統(GFS)的,它提供了一個分散式檔案系統,可以在小型計算機的大型叢集(數千臺計算機)上以可靠、容錯的方式執行。
HDFS使用主/從(master/slave)架構,其中主架構由管理檔案系統元資料的單個名稱節點 NameNode 和儲存實際資料的一個或多個從資料節點 DataNodes 組成。
HDFS名稱空間中的檔案被分成幾個塊,這些塊儲存在一組資料節點DataNodes中。NameNode確定塊到DataNodes的對映。DataNodes 負責檔案系統的讀寫操作。它們還根據NameNode給出的指令負責塊的建立、刪除和複製。
HDFS提供了與任何其他檔案系統一樣的shell,可以使用命令列表與檔案系統互動。這些shell命令將在單獨的一章中介紹,並提供適當的示例。
Hadoop是如何工作的
Stage 1
使用者/應用程式可以通過以下專案將作業提交給Hadoop (Hadoop作業客戶端)進行所需的處理:
- 在分散式檔案系統中輸入和輸出檔案的位置。
- java類以jar檔案的形式包含map和reduce函式的實現。
- 通過設定特定於作業的不同引數進行作業配置。
Stage 2
然後Hadoop客戶端將作業(jar/可執行檔案等)和配置提交給JobTracker, JobTracker負責將軟體/配置分發給slaves伺服器,排程和監視任務,向客戶端提供狀態和診斷資訊。
Stage 3
不同節點上的TaskTrackers 按照MapReduce實現執行任務,reduce函式的輸出儲存在檔案系統上的輸出檔案中。
Hadoop的優點
- Hadoop框架允許使用者快速編寫和測試分散式系統。它是高效的,它自動分配資料並跨機器工作,反過來利用CPU核心的底層並行性。
- Hadoop不依賴硬體來提供容錯和高可用性(FTHA),Hadoop庫本身被設計來檢測和處理應用層的故障。
- 可以動態地從叢集中新增或刪除伺服器,Hadoop可以不間斷地繼續執行。
- Hadoop的另一個巨大優勢是,它不僅是開源的,而且可以在所有平臺上相容,因為它是基於Java的。
原文連結: ofollow,noindex">https://www.tutorialspoint.com/hadoop/hadoop_introduction.htm