Hadoop是一個用Java編寫的Apache開源框架,允許使用簡單的編程模型跨計算機集群分布式處理大型數(shù)據(jù)集。Hadoop框架工作的應用程序在跨計算機集群提供分布式存儲和計算的環(huán)境中工作。Hadoop旨在從單個服務器擴展到數(shù)千個機器,每個都提供本地計算和存儲。
Hadoop框架包括以下四個模塊:
Hadoop Common: 這些是其他Hadoop模塊所需的Java庫和實用程序。這些庫提供文件系統(tǒng)和操作系統(tǒng)級抽象,并包含啟動Hadoop所需的Java文件和腳本。
Hadoop YARN: 這是一個用于作業(yè)調(diào)度和集群資源管理的框架。
Hadoop Distributed File System (HDFS?): 分布式文件系統(tǒng),提供對應用程序數(shù)據(jù)的高吞吐量訪問。
Hadoop MapReduce:這是基于YARN的用于并行處理大數(shù)據(jù)集的系統(tǒng)。
我們可以使用下面的圖來描述這四個組件在Hadoop框架中可用。
自2012年以來,“Hadoop”這個術(shù)語通常不僅指上述基本模塊,而且還指向可以安裝在Hadoop之上或之上的附加軟件包的收集,例如Apache Pig,Apache Hive,Apache HBase,Apache Spark等。
Hadoop MapReduce是一個軟件框架,用于輕松編寫應用程序,以可靠,容錯的方式在大型集群(數(shù)千個節(jié)點)的商用硬件上并行處理大量數(shù)據(jù)。術(shù)語MapReduce實際上指的是Hadoop程序執(zhí)行的以下兩個不同任務:
The Map Task: 此任務將map任務的輸出作為輸入,并將這些數(shù)據(jù)元組合并為較小的元組集合。
The Reduce Task: reduce任務總是在map任務之后執(zhí)行。
通常輸入和輸出都存儲在文件系統(tǒng)中。該框架負責調(diào)度任務,監(jiān)視它們并重新執(zhí)行失敗的任務。
MapReduce框架由每個集群節(jié)點的單個主JobTracker和一個從屬TaskTracker組成。主機負責資源管理,跟蹤資源消耗/可用性以及調(diào)度從機上的作業(yè)組件任務,監(jiān)視它們并重新執(zhí)行失敗的任務。從屬TaskTracker按主控器指示執(zhí)行任務,并定期向主控器提供任務狀態(tài)信息。
JobTracker是Hadoop MapReduce服務的單點故障,這意味著如果JobTracker關(guān)閉,所有正在運行的作業(yè)都將停止。
Hadoop可以直接與任何可安裝的分布式文件系統(tǒng)(如本地FS,HFTP FS,S3 FS等)一起工作,但Hadoop使用的最常見的文件系統(tǒng)是Hadoop分布式文件系統(tǒng)(HDFS)。
Hadoop分布式文件系統(tǒng)(HDFS)基于Google文件系統(tǒng)(GFS),并提供一個分布式文件系統(tǒng),該系統(tǒng)設(shè)計為在大型集群(數(shù)千臺計算機)上運行小型計算機機器以可靠,容錯方式。
HDFS使用主/從架構(gòu),其中主節(jié)點由管理文件系統(tǒng)元數(shù)據(jù)的單個NameNode和存儲實際數(shù)據(jù)的一個或多個從節(jié)點DataNode組成。
HDFS命名空間中的文件被拆分為幾個塊,這些塊存儲在一組DataNode中。 NameNode決定塊到DataNode的映射。DataNodes負責與文件系統(tǒng)的讀寫操作。它們還根據(jù)NameNode給出的指令來處理塊創(chuàng)建,刪除和復制。
HDFS提供了一個類似任何其他文件系統(tǒng)的shell,并且有一個命令列表可用于與文件系統(tǒng)交互。這些shell命令將在單獨的章節(jié)以及適當?shù)氖纠薪榻B。
用戶/應用程序可以通過指定以下項目來向Hadoop(hadoop作業(yè)客戶端)提交作業(yè)以獲取所需的進程:
分布式文件系統(tǒng)中輸入和輸出文件的位置。
java類以jar文件的形式包含map和reduce函數(shù)的實現(xiàn)。
通過設(shè)置作業(yè)的不同參數(shù)來配置作業(yè)。
Hadoop作業(yè)客戶端然后將作業(yè)(jar /可執(zhí)行文件等)和配置提交給JobTracker,JobTracker然后承擔將軟件/配置分發(fā)給從屬的責任,Hadoop作業(yè)客戶端然后將作業(yè)(jar /可執(zhí)行文件等)和配置提交給JobTracker,JobTracker然后承擔將軟件/配置分發(fā)給從屬的責任,
不同節(jié)點上的TaskTracker根據(jù)MapReduce實現(xiàn)執(zhí)行任務,reduce函數(shù)的輸出存儲在文件系統(tǒng)上的輸出文件中。
Hadoop框架允許用戶快速編寫和測試分布式系統(tǒng)。它是高效的,它自動分配數(shù)據(jù)和工作在整個機器,反過來,利用CPU核心的底層并行性。
Hadoop不依賴硬件來提供容錯和高可用性(FTHA),相反Hadoop庫本身設(shè)計用于檢測和處理應用程序?qū)拥墓收稀?/span>
服務器可以動態(tài)添加或從集群中刪除,Hadoop繼續(xù)運行而不中斷。
Hadoop的另一個大的優(yōu)點是,除了開源之外,它在所有平臺上兼容,因為它是基于Java的。
更多建議: