Hadoop學(xué)習(xí)筆記之Hadoop的來龍去脈
談到Hadoop就不得不提到Lucene和Nutch。首先,Lucene并不是一個(gè)應(yīng)用程序,而是提供了一個(gè)純Java的高性能全文索引引擎工具包,它可以方便的嵌入到各種實(shí)際應(yīng)用中實(shí)現(xiàn)全文搜索/索引功能。Nutch是一個(gè)應(yīng)用程序,是一個(gè)以Lucene為基礎(chǔ)實(shí)現(xiàn)的搜索引擎應(yīng)用,Lucene 為Nutch提供了文本搜索和索引的API,Nutch不光有搜索的功能,還有數(shù)據(jù)抓取的功能。在nutch0.8.0版本之前,Hadoop還屬于 Nutch的一部分,而從nutch0.8.0開始,將其中實(shí)現(xiàn)的NDFS和MapReduce剝離出來成立一個(gè)新的開源項(xiàng)目,這就是Hadoop,而 nutch0.8.0版本較之以前的Nutch在架構(gòu)上有了根本性的變化,那就是完全構(gòu)建在Hadoop的基礎(chǔ)之上了。在Hadoop中實(shí)現(xiàn)了 Google的GFS和MapReduce算法,使Hadoop成為了一個(gè)分布式的計(jì)算平臺(tái)。
其實(shí),Hadoop并不僅僅是一個(gè)用于存儲(chǔ)的分布式文件系統(tǒng),而是設(shè)計(jì)用來在由通用計(jì)算設(shè)備組成的大型集群上執(zhí)行分布式應(yīng)用的框架。
Hadoop包含兩個(gè)部分:
1、HDFS
即Hadoop Distributed File System (Hadoop分布式文件系統(tǒng))
HDFS具有高容錯(cuò)性,并且可以被部署在低價(jià)的硬件設(shè)備之上。HDFS很適合那些有大數(shù)據(jù)集的應(yīng)用,并且提供了對(duì)數(shù)據(jù)讀寫的高吞吐率。 HDFS是一個(gè)master/slave的結(jié)構(gòu),就通常的部署來說,在master上只運(yùn)行一個(gè)Namenode,而在每一個(gè)slave上運(yùn)行一個(gè) Datanode。
HDFS支持傳統(tǒng)的層次文件組織結(jié)構(gòu),同現(xiàn)有的一些文件系統(tǒng)在操作上很類似,比如你可以創(chuàng)建和刪除一個(gè)文件,把一個(gè)文件從一個(gè)目錄移到另一個(gè)目錄,重命名等等操作。Namenode管理著整個(gè)分布式文件系統(tǒng),對(duì)文件系統(tǒng)的操作(如建立、刪除文件和文件夾)都是通過Namenode來控制。
2、MapReduce的實(shí)現(xiàn)
MapReduce是Google 的一項(xiàng)重要技術(shù),它是一個(gè)編程模型,用以進(jìn)行大數(shù)據(jù)量的計(jì)算。對(duì)于大數(shù)據(jù)量的計(jì)算,通常采用的處理手法就是并行計(jì)算。至少現(xiàn)階段而言,對(duì)許多開發(fā)人員來說,并行計(jì)算還是一個(gè)比較遙遠(yuǎn)的東西。MapReduce就是一種簡(jiǎn)化并行計(jì)算的編程模型,它讓那些沒有多少并行計(jì)算經(jīng)驗(yàn)的開發(fā)人員也可以開發(fā)并行應(yīng)用。
MapReduce的名字源于這個(gè)模型中的兩項(xiàng)核心操作:Map和 Reduce。也許熟悉Functional Programming(函數(shù)式編程)的人見到這兩個(gè)詞會(huì)倍感親切。簡(jiǎn)單的說來,Map是把一組數(shù)據(jù)一對(duì)一的映射為另外的一組數(shù)據(jù),其映射的規(guī)則由一個(gè)函數(shù)來指定,比如對(duì)[1, 2, 3, 4]進(jìn)行乘2的映射就變成了[2, 4, 6, 8]。Reduce是對(duì)一組數(shù)據(jù)進(jìn)行歸約,這個(gè)歸約的規(guī)則由一個(gè)函數(shù)指定,比如對(duì)[1, 2, 3, 4]進(jìn)行求和的歸約得到結(jié)果是10,而對(duì)它進(jìn)行求積的歸約結(jié)果是24。
關(guān)于MapReduce的內(nèi)容,建議看看這篇文章MapReduce:The Free Lunch Is Not Over!
持續(xù)學(xué)習(xí)中....Hurry
【編輯推薦】