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