未來不遙遠(yuǎn)

          Just do it!

           

          分布式計(jì)算框架Hadoop

                  本文大部分內(nèi)容都是從官網(wǎng)Hadoop上轉(zhuǎn)來的。其中有篇介紹HDFS的pdf文檔,對Hadoop介紹的比較全面。
                先說一下Hadoop的來龍去脈。談到Hadoop就不得不提到LuceneNutch。首先,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ì)算平臺。
                 Hadoop并不僅僅是一個(gè)用于存儲的分布式文件系統(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)用,并且提供了對數(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),對文件系統(tǒng)的操作(如建立、刪除文件和文件夾)都是通過Namenode來控制。 
               下面是HDFS的結(jié)構(gòu):


                從上面的圖中可以看 出,Namenode,Datanode,Client之間的通信都是建立在TCP/IP的基礎(chǔ)之上的。當(dāng)Client要執(zhí)行一個(gè)寫入的操作的時(shí)候,命令 不是馬上就發(fā)送到Namenode,Client首先在本機(jī)上臨時(shí)文件夾中緩存這些數(shù)據(jù),當(dāng)臨時(shí)文件夾中的數(shù)據(jù)塊達(dá)到了設(shè)定的Block的值(默認(rèn)是 64M)時(shí),Client便會(huì)通知Namenode,Namenode便響應(yīng)Client的RPC請求,將文件名插入文件系統(tǒng)層次中并且在 Datanode中找到一塊存放該數(shù)據(jù)的block,同時(shí)將該Datanode及對應(yīng)的數(shù)據(jù)塊信息告訴Client,Client便這些本地臨時(shí)文件夾中 的數(shù)據(jù)塊寫入指定的數(shù)據(jù)節(jié)點(diǎn)。
                HDFS采取了副本策略,其目的是為了提高系統(tǒng)的可靠性,可用性。HDFS的副本放置策略是三個(gè)副本, 一個(gè)放在本節(jié)點(diǎn)上,一個(gè)放在同一機(jī)架中的另一個(gè)節(jié)點(diǎn)上,還有一個(gè)副本放在另一個(gè)不同的機(jī)架中的一個(gè)節(jié)點(diǎn)上。當(dāng)前版本的hadoop0.12.0中還沒有實(shí) 現(xiàn),但是正在進(jìn)行中,相信不久就可以出來了。

             2、MapReduce的實(shí)現(xiàn)

                
          MapReduce是Google 的一項(xiàng)重要技術(shù),它是一個(gè)編程模型,用以進(jìn)行大數(shù)據(jù)量的計(jì)算。對于大數(shù)據(jù)量的計(jì)算,通常采用的處理手法就是并行計(jì)算。至少現(xiàn)階段而言,對許多開發(fā)人員來 說,并行計(jì)算還是一個(gè)比較遙遠(yuǎn)的東西。MapReduce就是一種簡化并行計(jì)算的編程模型,它讓那些沒有多少并行計(jì)算經(jīng)驗(yàn)的開發(fā)人員也可以開發(fā)并行應(yīng)用。
                MapReduce的名字源于這個(gè)模型中的兩項(xiàng)核心操作:Map和 Reduce。也許熟悉Functional Programming(
          函數(shù)式編程) 的人見到這兩個(gè)詞會(huì)倍感親切。簡單的說來,Map是把一組數(shù)據(jù)一對一的映射為另外的一組數(shù)據(jù),其映射的規(guī)則由一個(gè)函數(shù)來指定,比如對[1, 2, 3, 4]進(jìn)行乘2的映射就變成了[2, 4, 6, 8]。Reduce是對一組數(shù)據(jù)進(jìn)行歸約,這個(gè)歸約的規(guī)則由一個(gè)函數(shù)指定,比如對[1, 2, 3, 4]進(jìn)行求和的歸約得到結(jié)果是10,而對它進(jìn)行求積的歸約結(jié)果是24。

                關(guān)于MapReduce的內(nèi)容,建議看看孟巖的這篇
          MapReduce:The Free Lunch Is Not Over! 這篇算是介紹的比較詳細(xì)的。MapReduce的算法內(nèi)容見Google文檔:MapReduce.pdf

                  有關(guān)其它介紹Hadoop的文章建議看下:分布式計(jì)算開源框架Hadoop介紹 。(what,why,how提的不錯(cuò))
                  
                  安裝配置可以看:1、Hadoop中的集群配置和使用技巧
                                                  2、Hadoop應(yīng)用之Hadoop安裝篇
                                                  3、Hadoop安裝部署指南
                   如果要開發(fā)的話,初步參考:Hadoop基本流程與應(yīng)用開發(fā)
                   
                   其中用到數(shù)據(jù)庫的部分,在Hadoop的0.19.0開始支撐數(shù)據(jù)庫訪問,主要采用DBInputFormat來訪問數(shù)據(jù)庫。文章可見:Hadoop中的數(shù)據(jù)庫訪問
                

          posted on 2010-08-03 17:03 Cool Jazz 閱讀(381) 評論(0)  編輯  收藏 所屬分類: 分布式計(jì)算


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆分類(7)

          隨筆檔案(8)

          文章檔案(1)

          相冊

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 吉木萨尔县| 吉隆县| 昌平区| 红原县| 长乐市| 如皋市| 理塘县| 保定市| 辉县市| 米泉市| 宽甸| 锡林浩特市| 孟津县| 龙门县| 日喀则市| 哈巴河县| 根河市| 勃利县| 道真| 灌阳县| 绥滨县| 澄江县| 绵阳市| 常山县| 嘉荫县| 肃南| 武汉市| 武陟县| 盐池县| 龙泉市| 县级市| 桦南县| 泾源县| 稷山县| 大渡口区| 工布江达县| 勃利县| 黑山县| 梓潼县| 三亚市| 六盘水市|