初識(shí)Hadoop - Hadoop介紹

責(zé)任編輯:vivian

2012-02-08 09:01:18

摘自:博客

Hadoop是阿帕奇軟件基金下的頂級(jí)項(xiàng)目,這個(gè)項(xiàng)目下面擁有多個(gè)誕生于阿帕奇孵化器的子項(xiàng)目。

Hadoop是阿帕奇軟件基金下的頂級(jí)項(xiàng)目,這個(gè)項(xiàng)目下面擁有多個(gè)誕生于阿帕奇孵化器的子項(xiàng)目。Hadoop項(xiàng)目提供和支持開源軟件的發(fā)展,它提供一個(gè)框架,用于開發(fā)高度可擴(kuò)展的分布式計(jì)算應(yīng)用軟件。Hadoop框架負(fù)責(zé)處理任務(wù)并行分配的細(xì)節(jié),使得應(yīng)用程序開發(fā)者可以專注于應(yīng)用程序邏輯上。

注意,Hadoop徽標(biāo)是一個(gè)胖胖的黃色的大象。而且Hadoop碰巧是首席架構(gòu)師的寶寶的黃色大象的名字。

Hadoop項(xiàng)目主頁(yè)(http://hadoop.apache.org/)談到:

Hadoop項(xiàng)目是一個(gè)可靠的、可擴(kuò)展的、基于分布式計(jì)算的開源軟件,它包括:

Hadoop核心是我們的旗艦項(xiàng)目,它提供了一個(gè)分布式文件系統(tǒng)子項(xiàng)目(HDFS)和支持MapReduce分布式計(jì)算的軟件架構(gòu)。

HBase建立在Hadoop核心上并提供一個(gè)可擴(kuò)展的分布式數(shù)據(jù)庫(kù)。

Pig是一個(gè)高高級(jí)數(shù)據(jù)流語(yǔ)言和實(shí)施并行計(jì)算的框架。它也是構(gòu)建在Hadoop核心之上的。

ZooKeeper是一個(gè)高效的,可靠的協(xié)作支持系統(tǒng)。分布式應(yīng)用程序使用ZooKeeper來(lái)存儲(chǔ)和傳輸關(guān)鍵共享狀態(tài)的更新。

Hive是構(gòu)建在Hadoop上的數(shù)據(jù)倉(cāng)庫(kù)。它提供了數(shù)據(jù)提取,數(shù)據(jù)隨機(jī)查詢和分析的功能。

Hadoop核心項(xiàng)目提供了在低端硬件上構(gòu)建云計(jì)算環(huán)境的基礎(chǔ)服務(wù),它也提供了運(yùn)行在這個(gè)云中的軟件所必須的API接口。Hadoop內(nèi)核的兩個(gè)基本部分是MapReduce框架,也就是云計(jì)算環(huán)境,和Hadoop分布式文件系統(tǒng)(HDFS)。

注意:在Hadoop核心框架中,MapReduce常被稱為mapred,HDFS經(jīng)常被稱為dfs。

Hadoop核心MapReduce框架需要一個(gè)共享文件系統(tǒng)。這個(gè)共享文件系統(tǒng)并不需要是一個(gè)系統(tǒng)級(jí)的文件系統(tǒng),任何一個(gè)分布式文件系統(tǒng)可以供框架使用就可以滿足MapReduce的需求。

盡管Hadoop核心提供了HDFS分布式文件系統(tǒng),但是,沒有這個(gè)分布式文件系統(tǒng)它仍然可以工作。在Hadoop JIRA(Bug跟蹤系統(tǒng)), 第1686項(xiàng)就是用來(lái)跟蹤如何將HDFS從Hadoop分離使用。除了HDFS,Hadoop核心也支持云存儲(chǔ)(原名為Kosmos)文件系統(tǒng)(http://kosmosfs.sourceforge.net/)和亞馬遜簡(jiǎn)單存儲(chǔ)服務(wù)(S3)文件系統(tǒng)(http://aws.amazon.com/s3/)。Hadoop核心框架通過(guò)專用的接口訪問(wèn)HDFS,云存儲(chǔ)和S3。用戶可以自由地使用任何分布式文件系統(tǒng),只要它是一個(gè)系統(tǒng)可映射的文件系統(tǒng),例如,網(wǎng)絡(luò)文件系統(tǒng)(NFS),全局文件系統(tǒng)(GFS)或者Lustre。

當(dāng)把HDFS作為共享文件系統(tǒng),Hadoop能夠分析得知哪些節(jié)點(diǎn)擁有輸入的數(shù)據(jù)拷貝,然后試圖調(diào)度運(yùn)行在那臺(tái)機(jī)器的作業(yè)去讀取那塊數(shù)據(jù)。本書講述的就是以HDFS文件系統(tǒng)為基礎(chǔ)的Hadoop應(yīng)用和開發(fā)。

Hadoop的核心MapReduce

Hadoop MapReduce環(huán)境為用戶提供了一個(gè)復(fù)雜的框架在一個(gè)集群上來(lái)管理和執(zhí)行Map和Reduce作業(yè)。用戶需要向框架輸入如下信息:

分布式文件系統(tǒng)中作業(yè)輸入的位置

分布式文件系統(tǒng)中作業(yè)輸出的位置

輸入格式

輸出格式

包含Map方法的類

包含Reduce方法的類,它是可選的。

包含Map和Reduce方法和其他支持類的Jar文件的位置

如果一個(gè)作業(yè)不需要一個(gè)Reduce方法,那么,用戶不需指定一個(gè)Reducer類,作業(yè)的Reduce階段也是不會(huì)被執(zhí)行的。框架會(huì)分割輸入數(shù)據(jù),在集群里調(diào)度和執(zhí)行Map作業(yè)。如果需要,它將Map作業(yè)的輸出進(jìn)行排序,然后,將排序的結(jié)果輸出給Reduce任務(wù)。最后將Reduce作業(yè)輸出數(shù)據(jù)輸出到輸出目錄,最后將工作狀況匯報(bào)給用戶。

MapReduce任務(wù)是用來(lái)處理鍵/值對(duì)的。該框架將轉(zhuǎn)換每個(gè)輸入的記錄成一個(gè)鍵/值對(duì),每對(duì)數(shù)據(jù)會(huì)被輸入給Map作業(yè)。Map任務(wù)的輸出是一套鍵/值對(duì),原則上,輸入是一個(gè)鍵/值對(duì),但是,輸出可以是多個(gè)鍵/值對(duì)。然后,它對(duì)Map輸出鍵/值對(duì)分組和排序。然后,對(duì)排序的每個(gè)鍵值對(duì)調(diào)用一次Reduce方法,它的輸出是一個(gè)鍵值和一套關(guān)聯(lián)的數(shù)據(jù)值。Reduce方法可以輸出任意數(shù)量的鍵/值對(duì),這將被寫入工作輸出目錄下的輸出文件。如果Reduce輸出鍵值保持和Reduce輸入鍵值一致,最終的輸出仍然保持排序。

該框架提供了兩個(gè)處理過(guò)程來(lái)管理MapReduce作業(yè):

TaskTracker在集群中的計(jì)算節(jié)點(diǎn)上管理和執(zhí)行各個(gè)Map和Reduce作業(yè)。

JobTracker接受作業(yè)提交,提供作業(yè)的監(jiān)測(cè)和控制,管理任務(wù),以及分配作業(yè)到TaskTracker節(jié)點(diǎn)上。

一般來(lái)說(shuō),每個(gè)集群有一個(gè)JobTracker進(jìn)程,集群中的每個(gè)節(jié)點(diǎn)有一個(gè)或多個(gè)TaskTracker進(jìn)程。JobTracker是一個(gè)關(guān)鍵模塊,它出現(xiàn)問(wèn)題會(huì)引起系統(tǒng)的癱瘓,如果一個(gè)TaskTracker出現(xiàn)問(wèn)題,JobTracker會(huì)調(diào)度其他TaskTracker進(jìn)程重試。

請(qǐng)注意,Hadoop核心MapReduce環(huán)境的一個(gè)優(yōu)秀的功能是:當(dāng)一個(gè)作業(yè)在執(zhí)行時(shí),你可以添加TaskTracker到集群中,還可以派遣一個(gè)作業(yè)到新的節(jié)點(diǎn)上。

Hadoop的分布式文件系統(tǒng)

HDFS是專門為MapReduce作業(yè)所設(shè)計(jì)的文件系統(tǒng)。MapReduce作業(yè)從HDFS文件系統(tǒng)中讀入大數(shù)量級(jí)的數(shù)據(jù)進(jìn)行處理,處理后把輸出寫回HDFS文件系統(tǒng)。HDFS并不是用來(lái)處理隨機(jī)存取數(shù)據(jù)的。為了達(dá)到數(shù)據(jù)的穩(wěn)定性,它把數(shù)據(jù)存儲(chǔ)到多個(gè)存儲(chǔ)節(jié)點(diǎn)上。在Hadoop社區(qū),我們把它稱為副本。只要有一個(gè)數(shù)據(jù)副本存在,數(shù)據(jù)使用者就可以安全使用這些數(shù)據(jù)。

HDFS通過(guò)兩個(gè)進(jìn)程來(lái)完成的,

NameNode進(jìn)行文件系統(tǒng)元數(shù)據(jù)的管理,它提供管理和控制服務(wù)。

DataNode提供數(shù)據(jù)塊存儲(chǔ)和查詢服務(wù)。

在HDFS文件系統(tǒng)里有一個(gè)NameNode進(jìn)程,它是關(guān)鍵模塊,如果它出現(xiàn)問(wèn)題會(huì)引起整個(gè)系統(tǒng)的癱瘓。Hadoop核心提供NameNode的恢復(fù)和自動(dòng)備份功能,但是沒有運(yùn)行時(shí)恢復(fù)功能。一個(gè)集群有多個(gè)DataNode進(jìn)程,通常情況下,集群中的每個(gè)存儲(chǔ)節(jié)點(diǎn)有一個(gè)DataNode進(jìn)程。

注意:在集群中的一個(gè)節(jié)點(diǎn)中提供TaskTracker服務(wù)和DataNode服務(wù)是常見的。在一個(gè)節(jié)點(diǎn)里提供JobTracker和NameNode服務(wù)也是常見。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)