版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 2011屆</b></p><p><b> 華北科技學(xué)院</b></p><p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p> 設(shè)計(jì)(論文)題目: 基于Hadoop的云計(jì)算研究與實(shí)現(xiàn) </p><p> 專 題題 目:
2、 </p><p> 姓名: XXX 學(xué)號(hào): 200707024115 </p><p> 專業(yè)班級(jí): 網(wǎng)絡(luò)B071 系(部、院): 計(jì)算機(jī)系 </p><p> 指導(dǎo)老師: XXX </p>
3、<p> 2015年6月20日</p><p><b> 摘 要</b></p><p> 云計(jì)算是2007年底正式提出的一個(gè)新的概念,它可以說是一個(gè)革命性的創(chuàng)新,意味著計(jì)算能力也可以作為一種商品進(jìn)行流通,就像煤氣、水電一樣,取用方便,費(fèi)用低廉,不同之處只是在于它是使用互聯(lián)網(wǎng)進(jìn)行傳輸?shù)?。至今為止,Google、Microsoft、IBM、亞馬遜等IT
4、商業(yè)巨頭都推出了自己的云計(jì)算平臺(tái),并把云計(jì)算作為其未來發(fā)展的最主要戰(zhàn)略之一。因此,云計(jì)算的研究不但緊跟業(yè)界技術(shù)發(fā)展的趨勢,同時(shí)還具有較高的應(yīng)用價(jià)值。</p><p> Hadoop是一個(gè)在集群上運(yùn)行大型數(shù)據(jù)庫處理應(yīng)用程序的開放式源代碼框架。它是通過Google的MapReduce編程范例來創(chuàng)建并執(zhí)行的應(yīng)用程序,在很多大型網(wǎng)站上都已經(jīng)得到了應(yīng)用,可以說是目前最為廣泛應(yīng)用的開源云計(jì)算軟件平臺(tái),但其發(fā)展時(shí)間較短,研究
5、還不夠深入,還有較多值得改進(jìn)的地方。</p><p><b> Abstract</b></p><p> As a new concept proposed in the end of 2007,cloud computing is a great revolution in the IT field.It means that computing call b
6、e used as a commodity, like coal gas or electricity.The only difference between them is that cloud computing transports by the computer networks.Up to now, Google、Microsoft、IBM、Amazon and some other famous cooperations h
7、ave proposed their cloud computing application, and take cloud computing as one of the most important strategy in the future.</p><p> Hadoop is an open source code frame for very large data process applicat
8、ion, which runs on a cluster of commercial PCs.It create parallel program through Google`s MapReduce method and has already been used by many famous IT companies.Hadoop can be taken as the most popular open source could
9、computing software,but there are many points to be improved since it is a young program.</p><p><b> 目 錄</b></p><p><b> 摘 要ii</b></p><p> Abstractiii&l
10、t;/p><p> 第1章 緒 論3</p><p> 1.1本文工作的來源3</p><p> 1.2目的和意義3</p><p> 1.3國內(nèi)外進(jìn)展4</p><p> 1.3.1國外進(jìn)展4</p><p> 1.3.2國內(nèi)進(jìn)展6</p><p>
11、; 1.4本文工作的主要內(nèi)容7</p><p> 第2章 云計(jì)算相關(guān)背景9</p><p> 2.1云計(jì)算概述9</p><p> 2.1.1云計(jì)算基本概念9</p><p> 2.1.2云計(jì)算的特點(diǎn)和優(yōu)勢11</p><p> 2.1.3云計(jì)算的典型應(yīng)用12</p><p&
12、gt; 2.2云計(jì)算關(guān)鍵技術(shù)14</p><p> 2.2.1簡單的編程模式14</p><p> 2.2.2數(shù)據(jù)存儲(chǔ)和管理15</p><p> 2.2.3虛擬化技術(shù)15</p><p> 第3章 Hadoop平臺(tái)研究17</p><p><b> 3.1概述17</b>
13、</p><p> 3.1.1Hadoop概述17</p><p> 3.1.2HDFS介紹18</p><p> 3.1.3MapReduce介紹19</p><p> 3.2Hadoop構(gòu)架以及原理21</p><p> 3.3GFS 文件系統(tǒng)23</p><p>
14、; 3.3.1系統(tǒng)架構(gòu)23</p><p> 3.4Hadoop API 的使用26</p><p> 3.4.1 API 中的包26</p><p> 3.4.2MapReduce框架結(jié)構(gòu)26</p><p> 第4章 基于Hadoop分布式運(yùn)行程序36</p><p> 4.1搭建Hadoo
15、p環(huán)境36</p><p> 4.1.1裝機(jī)階段36</p><p> 4.1.2配置階段38</p><p> 4.2 一個(gè)wordcount實(shí)例40</p><p> 4.2.1系統(tǒng)概述40</p><p> 4.2.2實(shí)現(xiàn)Map類41</p><p> 4.2.3實(shí)
16、現(xiàn) Reduce 類42</p><p> 4.2.4運(yùn)行 Job42</p><p> 4.2.5設(shè)計(jì)與編碼43</p><p> 4.2.6測試運(yùn)行44</p><p><b> 結(jié) 論47</b></p><p> 參 考 文 獻(xiàn)48</p><p
17、><b> 致 謝49</b></p><p><b> 附錄A代碼50</b></p><p> 外文科技資料翻譯54</p><p><b> 英文原文54</b></p><p><b> 中文譯文63</b></
18、p><p><b> 第1章 緒 論</b></p><p> 1.1本文工作的來源</p><p> 云計(jì)算是2007年底正式提出的一個(gè)新的概念,至今為止,幾乎所有的IT行業(yè)巨頭都將云計(jì)算作為未來發(fā)展的主要戰(zhàn)略之一 [5][6],相關(guān)商業(yè)媒體也將云計(jì)算視為計(jì)算機(jī)未來發(fā)展的主要趨勢 [7],其商業(yè)前景和應(yīng)用需求已勿庸置疑。</p>
19、;<p> 云計(jì)算是一種全新的商業(yè)模式,其核心部分依然是云后端的數(shù)據(jù)中心,它使用的硬件設(shè)備主要是成千上萬的工業(yè)標(biāo)準(zhǔn)服務(wù)器,它們由英特爾或AMD生產(chǎn)的處理器以及其他硬件廠商的產(chǎn)品組成。企業(yè)和個(gè)人用戶通過高速互聯(lián)網(wǎng)得到計(jì)算能力,從而避免了大量的硬件投資。</p><p> 云計(jì)算的基本原理是,通過將計(jì)算分布在大量的分布式計(jì)算機(jī)上,使企業(yè)數(shù)據(jù)中心的運(yùn)行更加類似于使用互聯(lián)網(wǎng)。從而使企業(yè)能夠?qū)㈦S時(shí)資源切換
20、到需要的應(yīng)用上,根據(jù)需求訪問計(jì)算機(jī)和存儲(chǔ)系統(tǒng)。</p><p> 云計(jì)算已經(jīng)深刻地影響著整個(gè)IT產(chǎn)業(yè)。云計(jì)算是在分布式計(jì)算、網(wǎng)格計(jì)算、并行計(jì)算等發(fā)展的基礎(chǔ)上提出的一種新型計(jì)算模型,是一種新興的共享基礎(chǔ)架構(gòu)的方法。它將帶來工作方式和商業(yè)模式的根本性改變。我們的生活已經(jīng)與互聯(lián)網(wǎng)密不可分,云計(jì)算的發(fā)展足一種不可逆轉(zhuǎn)的趨勢。因此,我們需要更進(jìn)一步地認(rèn)識(shí)云計(jì)算技術(shù),探索它的發(fā)展與問題。</p><p&
21、gt;<b> 1.2目的和意義</b></p><p> Hadoop是Apache開源組織的一個(gè)分布式計(jì)算開源框架,它可以運(yùn)行在大中型集群的廉價(jià)硬件設(shè)備上,為應(yīng)用程序提供了一組穩(wěn)定可靠的接口。同時(shí),它是Google集群系統(tǒng)的一個(gè)開源項(xiàng)目總稱,Google集群系統(tǒng)是使用低成本的成熟技術(shù)構(gòu)建的一個(gè)穩(wěn)定、高性能、高可用性、可擴(kuò)展的系統(tǒng),它的底層是Google文件系統(tǒng)(Google File
22、 System,GFS)。HDFS是GFS的開源實(shí)現(xiàn),它是Hadoop的底層實(shí)現(xiàn)部分,存儲(chǔ)Hadoop集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件。Hadoop平臺(tái)雖然是一項(xiàng)新興的技術(shù),但它的發(fā)展非常迅速,究其原因首先在于它將并行計(jì)算“平民化",它對程序員屏蔽了并行應(yīng)用開發(fā)的細(xì)節(jié),程序員只需將精力放在業(yè)務(wù)邏輯上。其次Hadoop平臺(tái)可以運(yùn)行在普通的PC機(jī)群上,極大地降低開發(fā)成本,這也讓個(gè)人研究、實(shí)施分布式系統(tǒng)更加容易。</p>&
23、lt;p> 總的來說,本文有以下幾方面的意義:</p><p> 1).現(xiàn)代企業(yè)的數(shù)據(jù)量十分龐大,如何對海量數(shù)據(jù)進(jìn)行有效管理成為了企業(yè)的關(guān)鍵問題。如果利用云存儲(chǔ)技術(shù)解決這個(gè)問題,無疑會(huì)提高企業(yè)的經(jīng)濟(jì)效益。</p><p> 2).HDFS可以實(shí)施運(yùn)行在普通的PC集群上,極大降低了實(shí)施運(yùn)行分布式系統(tǒng)的成本。</p><p> 3).對HDFS的研究方法可
24、以推廣到別的集群存儲(chǔ)技術(shù)研究上,為下一步研究打好基礎(chǔ)。</p><p> 4).Hadoop平臺(tái)還沒有被廣泛地應(yīng)用于各行各業(yè),一旦我們在基于HDFS的云存儲(chǔ)應(yīng)用研究取得一定的成效,就會(huì)對Hadoop技術(shù)起到推廣作用。</p><p><b> 1.3國內(nèi)外進(jìn)展</b></p><p><b> 1.3.1國外進(jìn)展</b&g
25、t;</p><p> 云計(jì)算在國外的從2007年就興起了,下面對其發(fā)展?fàn)顩r作一個(gè)簡要的介紹:IBM于2007年8月高調(diào)推出“藍(lán)云(Blue Cloud)計(jì)劃。IBM的Willy Chiu透露,云計(jì)算將是IBM接下來的一個(gè)重點(diǎn)業(yè)務(wù)。這也是IBM擴(kuò)張自身領(lǐng)地的絕佳機(jī)會(huì),IBM具有發(fā)展云計(jì)算業(yè)務(wù)的一切有利因素:應(yīng)用服務(wù)器、存儲(chǔ)、管理軟件、中間件等等,IBM抓住了這樣一個(gè)良好的機(jī)會(huì),提出了“藍(lán)云”計(jì)劃。2008年8月
26、,IBM斥資3.6億美元在美國北卡羅來納州開始建立云計(jì)算數(shù)據(jù)中心,并將該數(shù)據(jù)中心稱為史上最復(fù)雜的數(shù)據(jù)中心,投入了大量人力物力。IBM還在東京建立了一所新的研究機(jī)構(gòu),建立幫助用戶使用云計(jì)算基礎(chǔ)設(shè)施。該數(shù)據(jù)中心占地6萬平方英尺,預(yù)計(jì)將于2009年下半年投入運(yùn)營。IBM表示:“使用該數(shù)據(jù)中心的用戶能夠獲得空前的互聯(lián)網(wǎng)計(jì)算能力,并獲得業(yè)內(nèi)領(lǐng)先的環(huán)保優(yōu)勢和成本。”IBM在東京的專家將為大企業(yè)、大學(xué)和政府提供云計(jì)算咨詢,幫助他們利用云計(jì)算設(shè)施,設(shè)計(jì)
27、云計(jì)算應(yīng)用,以及向他們的用戶提供基于云計(jì)算的服務(wù)。在2009年的計(jì)劃中,IBM計(jì)劃于推出數(shù)種云計(jì)算服務(wù)產(chǎn)品。</p><p> Google于2007年10月在全球宣布了云計(jì)劃,同時(shí)與IBM合作,把全球很多大學(xué)納入“云計(jì)算”計(jì)劃當(dāng)中。當(dāng)月,Google與IBM開始在美國大學(xué)校園,包括卡耐基梅隆大學(xué)、麻省理工學(xué)院、斯坦福大學(xué)、加州大學(xué)伯克利分校及馬里蘭大學(xué)等,推廣云計(jì)算的計(jì)劃。希望從而降低分布式計(jì)算技術(shù)在學(xué)術(shù)研究
28、方面的成本,并為這些大學(xué)提供相關(guān)的軟硬件設(shè)備及技術(shù)支援(包括數(shù)百臺(tái)個(gè)人計(jì)算機(jī)及BladeCenter與System x服務(wù)器,以及Linux、Xen、Hadoop等開源平臺(tái))。而這些學(xué)校的學(xué)生則可以通過網(wǎng)絡(luò)開發(fā)各項(xiàng)以大規(guī)模計(jì)算為基礎(chǔ)的研究計(jì)劃。2008年1月30日,Google宣布在臺(tái)灣啟動(dòng)“云計(jì)算學(xué)術(shù)計(jì)劃”。與臺(tái)灣臺(tái)大、交大等學(xué)校合作,將這種先進(jìn)的大規(guī)模、快速計(jì)算技術(shù)推廣到校園。2009年4月,Google App Engine(GA
29、E)的最新升級(jí)已經(jīng)開始支持Java,并且添</p><p> 加了一系列專門瞄準(zhǔn)企業(yè)業(yè)務(wù)的新功能:此后,Google還發(fā)布了一款Eclipse插件,可以對Google App Engine的Java開發(fā)提供強(qiáng)力支持,由此可見Google已經(jīng)為企業(yè)級(jí)云計(jì)算做好了準(zhǔn)備。</p><p> 亞馬遜于2007年開放了名為“彈性計(jì)算機(jī)云"(Elastic Compute Cloud,E
30、C2)的服務(wù),以便讓小的軟件公司可以按需購買亞馬遜數(shù)據(jù)中心的處理能力,而不需要從硬件開始搭建自己的系統(tǒng)。如今,Linux,Window,JBoss,Eclipse等常用操作系統(tǒng)和軟件都已經(jīng)在EC2平臺(tái)上得到了支持,其他應(yīng)用軟件也在不斷地加入。截至2008年底,亞馬遜云計(jì)算相關(guān)業(yè)務(wù)收入已達(dá)l億美元。</p><p> 2007年11月,雅虎建立了一個(gè)小規(guī)模的云,開放給卡內(nèi)基梅隆大學(xué)的研究人員。2008年7月,雅虎
31、與惠普、英特爾、伊利諾斯州大學(xué)香檳分校、新加坡信息通信發(fā)展管理局以及德國卡爾斯魯理工學(xué)院共同創(chuàng)立了開源試驗(yàn)場Open Cirrus,主要進(jìn)行云計(jì)算方面的研究和教育。2009年4月雅虎宣布了與加州大學(xué)伯克利分校、康奈爾大學(xué)以及馬薩諸塞大學(xué)阿姆赫斯特分校合作,與卡內(nèi)基梅隆大學(xué)一起使用雅虎的云計(jì)算群來進(jìn)行大規(guī)模系統(tǒng)軟件研究,開發(fā)新的應(yīng)用程序以分析互聯(lián)網(wǎng)上的各種數(shù)據(jù)集如投票記錄和在線新聞源等等。</p><p> 微軟
32、公司正在開發(fā)脫離普通桌面的互聯(lián)網(wǎng)操作系統(tǒng)“Midori”,該系統(tǒng)不同于已經(jīng)有20多年歷史的Windows。Midori目的是為了大規(guī)模應(yīng)用云計(jì)算技術(shù)。微軟的競爭優(yōu)勢很明顯,全世界有數(shù)以億計(jì)的Windows用戶,微軟所要做的就是將這些用戶通過互聯(lián)網(wǎng)更緊密地連接起來,并通過Windows Live向他們提供云計(jì)算服務(wù)。微軟正在努力創(chuàng)造一種從一般的硬盤存儲(chǔ)方式轉(zhuǎn)移到任何時(shí)間地點(diǎn)都可以接入的存儲(chǔ)的模式用戶體驗(yàn),從而在互聯(lián)網(wǎng)戰(zhàn)略上拉近同Googl
33、e的距離。微軟的云平臺(tái)Azure開發(fā)己初步完成,如今已可以隨時(shí)訪問其站點(diǎn)。</p><p><b> 1.3.2國內(nèi)進(jìn)展</b></p><p> 在我國[2],云計(jì)算發(fā)展也非常迅猛。2008年6月24日,IBM在北京IBM中國創(chuàng)新中心成立了第二家中國的云計(jì)算中心——IBM大中華區(qū)云計(jì)算中心;2008年11月28日,廣東電子工業(yè)研究院與東莞松山湖科技產(chǎn)業(yè)園管委會(huì)簽
34、約,廣東電子工業(yè)研究院將在東莞松山湖投資2億元建立云計(jì)算平臺(tái);2008年12月30日,阿里巴巴集團(tuán)旗下子公司阿里軟件與江蘇省南京市政府正式簽訂了2009年戰(zhàn)略合作框架協(xié)議,計(jì)劃于2009年初在南京建立國內(nèi)首個(gè)“電子商務(wù)云計(jì)算中心”,首期投資額將達(dá)上億元人民幣;2009年11月11日,全國首家云計(jì)算產(chǎn)業(yè)協(xié)會(huì)在深圳成立,協(xié)會(huì)的成立標(biāo)志深圳市政府對于云計(jì)算產(chǎn)業(yè)在未來發(fā)展的高度重視,同時(shí)標(biāo)志著深圳市企業(yè)對于云計(jì)算研究及應(yīng)用領(lǐng)域的關(guān)注與信心,深圳
35、市高科技產(chǎn)業(yè)發(fā)展邁向成熟,而云計(jì)算產(chǎn)業(yè)則給深圳信息產(chǎn)業(yè)帶來新的商機(jī),當(dāng)前深圳是全國首個(gè)大力發(fā)展云計(jì)算的城市,現(xiàn)在有100多家企業(yè)從事云計(jì)算相關(guān)產(chǎn)業(yè)研究和技術(shù)開發(fā)等,未來產(chǎn)業(yè)將蘊(yùn)藏巨大的商機(jī)。 2009年12月中國云計(jì)算技術(shù)與產(chǎn)業(yè)聯(lián)盟在京成立,四十多家企業(yè)一起共同倡議成立中國云計(jì)算技術(shù)與產(chǎn)業(yè)聯(lián)盟。2010年8月上海公布云計(jì)算發(fā)展</p><p> 我國主導(dǎo)的云計(jì)算發(fā)展企業(yè),同美國類似,包括互聯(lián)網(wǎng)公司
36、,IT 公司, 電信運(yùn)營商等, 但由于起步較晚,這些公司的業(yè)務(wù)方向都不明確,產(chǎn)業(yè)鏈中的位置也不明確。具體計(jì)劃向外提供業(yè)務(wù)的公司包括互聯(lián)網(wǎng)公司(世紀(jì)互聯(lián)、騰訊、新浪、盛大、藍(lán)汛、阿里巴巴),基礎(chǔ)電信運(yùn)營商(中國移動(dòng)、中國電信、中國聯(lián)通)等。世紀(jì)互聯(lián)網(wǎng)專門為云計(jì)算成立了Cloudex 子公司, 云計(jì)算服務(wù)節(jié)點(diǎn)已經(jīng)遍布國內(nèi)多個(gè)數(shù)據(jù)中心,可為用戶提供包括聯(lián)通、移動(dòng)、電信等多種帶寬接入。產(chǎn)品包括面向中小型WebHosting 客戶的云主機(jī)租用服務(wù)
37、, 同時(shí)還為中大規(guī)模的服務(wù)器托管客戶提供云托管。世紀(jì)互聯(lián)的云計(jì)算業(yè)務(wù)已經(jīng)為包括網(wǎng)絡(luò)游戲、應(yīng)用軟件開發(fā)、物流平臺(tái)應(yīng)用、行業(yè)網(wǎng)站應(yīng)用等多類客戶提供了云計(jì)算基礎(chǔ)設(shè)施服務(wù)。世紀(jì)互聯(lián)的云計(jì)算業(yè)務(wù)目前規(guī)模仍然非常有限,正處于上升階段。世紀(jì)互聯(lián)是國內(nèi)最大的專業(yè)IDC 提供商,具備大量的服務(wù)器資源,因此世紀(jì)互聯(lián)的云計(jì)算業(yè)務(wù)是提高原有服務(wù)器和其他設(shè)備利用率, 提供云計(jì)算業(yè)務(wù)有基礎(chǔ)條件,也有長期積累的客戶基礎(chǔ),基本不存在泡沫。阿里巴巴是國內(nèi)云計(jì)算業(yè)務(wù)走在前
38、面的另一企業(yè), 阿里巴巴專門成立了從事云計(jì)算業(yè)務(wù)的新公司“阿里云”,</p><p> 投資額即達(dá)上億元人民幣。阿里巴巴的云計(jì)算業(yè)務(wù)以大規(guī)模的低成本計(jì)算機(jī)集群為依托,構(gòu)建互聯(lián)網(wǎng)上的分布式存儲(chǔ)和計(jì)算的服務(wù),降低用戶大規(guī)模數(shù)據(jù)處理和大運(yùn)算量計(jì)算的成本。阿里巴巴的云計(jì)算業(yè)務(wù)以原有的大規(guī)模服務(wù)器為基礎(chǔ),目標(biāo)客戶是大量原有的中小企業(yè)用戶,是順應(yīng)IT 技術(shù)發(fā)展的產(chǎn)物。</p><p> 1.4本文
39、工作的主要內(nèi)容</p><p> 在廣泛的文獻(xiàn)調(diào)研基礎(chǔ)上,本論文主要對基于Hadoop的云計(jì)算理論和基于Hadoop的分布式云計(jì)算環(huán)境進(jìn)行研究,具體包括:Hadoop構(gòu)架及實(shí)現(xiàn)原理MapReduce,Google File System相關(guān)資料、搭建Hadoop運(yùn)行環(huán)境和實(shí)現(xiàn)簡單的一個(gè)基于Hadoop分布式運(yùn)行程序。</p><p> 在云計(jì)算系統(tǒng)的后端架設(shè)了大量的服務(wù)器,這些服務(wù)器分
40、布在各個(gè)地方,負(fù)責(zé)不同的地域和服務(wù),結(jié)構(gòu)比較復(fù)雜。如何將如此大量的服務(wù)器有效地組織起來是保證云計(jì)算系統(tǒng)高效穩(wěn)定運(yùn)行關(guān)鍵問題之一。</p><p> Hadoop是一個(gè)在集群上運(yùn)行大型數(shù)據(jù)庫處理應(yīng)用程序的開放式源代碼框架。它支持通過Google的MapReduce編程范例來創(chuàng)建并執(zhí)行的應(yīng)用程序,在很多大型網(wǎng)站上都已經(jīng)得到了應(yīng)用,可以說是目前最為廣泛應(yīng)用的開源云計(jì)算軟件平臺(tái)。Hadoop平臺(tái)最大的優(yōu)點(diǎn)就是實(shí)現(xiàn)了并行
41、對平臺(tái)程序設(shè)計(jì)人員的透明處理,應(yīng)用開發(fā)者可以像開發(fā)普通程序一樣來開發(fā)云計(jì)算的應(yīng)用系統(tǒng),底層會(huì)自動(dòng)完成并行化。</p><p> 本文主要以云計(jì)算與Hadoop為主題進(jìn)行擴(kuò)展研究,涉及下面三個(gè)方面的內(nèi)容:</p><p> 1).廣泛查閱資料的基礎(chǔ)上,對云計(jì)算的背景以及國內(nèi)外的發(fā)展現(xiàn)狀進(jìn)行了一個(gè)很全面的了解。云計(jì)算的基本的概念以及發(fā)展前期其他計(jì)算模式的歷程,在這十年間的歷程中云計(jì)算逐漸走
42、向應(yīng)用,它的特點(diǎn)和優(yōu)勢,對我們現(xiàn)今生活方式的改變起了很大的作用。云計(jì)算的普遍應(yīng)用能更加使資源的利用更合理更節(jié)約更安全。其中云計(jì)算的發(fā)展至今有許多的相應(yīng)的技術(shù),它的分布式編程模式的思想,還有數(shù)據(jù)存儲(chǔ)和管理,其中虛擬化技術(shù)更是為云計(jì)算的發(fā)展帶來了鋪墊。</p><p> 2).本文的下一部分對云計(jì)算的一個(gè)實(shí)現(xiàn)平臺(tái)Hadoop加以研究,這是一個(gè)開放源代碼的平臺(tái),其思想來源于Google的云計(jì)算平臺(tái),它的出現(xiàn)使我們分布
43、式編程實(shí)現(xiàn)成為了可能,也使云計(jì)算更加的普及到商業(yè)中來。這部分對Hadoop的文件系統(tǒng)HDFS做了一些介紹,還有MapReduce相關(guān)的知識(shí)。Hadoop是怎么構(gòu)架以及實(shí)現(xiàn)的原理通過與GFS 文件系統(tǒng)的比較更深入了解分布式系統(tǒng)的構(gòu)架,最后詳細(xì)的介紹了Hadoop API 的使用,API 中的包,MapReduce框架結(jié)構(gòu),以便于更詳細(xì)的了解Hadoop做任務(wù)的原理,編出更好的程序。</p><p> 3).本
44、文的最后一部分是把理論知識(shí)轉(zhuǎn)化為實(shí)踐,搭建一下Hadoop的運(yùn)行環(huán)境,體驗(yàn)一下Hadoop給我們帶來的方便。首先安裝虛擬機(jī),在虛擬機(jī)上安裝ubuntu 11.04系統(tǒng),然后安裝java、ssh等Hadoop所需的環(huán)境,然后配置一下系統(tǒng)的環(huán)境變量,和Hadoop的配置文件,以便能運(yùn)行Hadoop,最后用MapReduce的思想編一個(gè)分布式運(yùn)行程序WordCount實(shí)例,我們只需要寫出其Map類和Reduce的類就行,其他的分布運(yùn)行的細(xì)節(jié)全
45、部由Hadoop來實(shí)現(xiàn)。只需簡單的幾行代碼,就可以讓許多機(jī)器為你工作。只需要加個(gè)結(jié)點(diǎn),就可以讓程序跑在各個(gè)計(jì)算機(jī)上,大大增加了程序運(yùn)行的效率。</p><p> 第2章 云計(jì)算相關(guān)背景</p><p><b> 2.1云計(jì)算概述</b></p><p> 云計(jì)算 [1]是分布處理(Distributed Computing)、并行處理(P
46、arallel Computing)和網(wǎng)格計(jì)算(Grid Computing)的綜合發(fā)展,或者說是這些計(jì)算機(jī)科學(xué)概念的商業(yè)實(shí)現(xiàn);也是效用計(jì)算(Utility Computing)、虛擬化(Virtualization)、Haas(硬件即服務(wù))、SaaS(軟件即服務(wù))、PaaS(平臺(tái)即服務(wù))等概念結(jié)合創(chuàng)新的結(jié)果 [2]。</p><p> 2.1.1云計(jì)算基本概念</p><p> 云計(jì)
47、算是一種革命性的突破,它表示計(jì)算能力也可作為一種商品進(jìn)行流通,當(dāng)然這種商品是通過互聯(lián)網(wǎng)進(jìn)行傳輸?shù)摹T朴?jì)算的最主要目標(biāo)就是:在來來,只需要一臺(tái)筆記本或者一個(gè)手機(jī),就可以通過網(wǎng)絡(luò)服務(wù)來得到我們需要的一切服務(wù),甚至包括實(shí)現(xiàn)超級(jí)計(jì)算這樣的任務(wù)。從這個(gè)角度而言,最終用戶將成為云計(jì)算的真正擁有者。簡單的說,云計(jì)算就是利用互聯(lián)網(wǎng)上的大型數(shù)據(jù)中心的軟件和處理數(shù)據(jù)的能力,把復(fù)雜的運(yùn)算從用戶終端移到云上去做。</p><p> 云
48、計(jì)算既指通過互聯(lián)網(wǎng)以服務(wù)方式提供的應(yīng)用程序,也指在數(shù)據(jù)中心用來提供這些服務(wù)的硬件和系統(tǒng)軟件,它的概念是在SaaS(Software as a service,軟件即服務(wù))的基礎(chǔ)上發(fā)展起來的。</p><p> 現(xiàn)在很多人都開始了解SaaS對終端用戶和服務(wù)提供商的好處:服務(wù)提供商可以享受到軟件安裝維護(hù)簡單、能集中控制產(chǎn)品更新帶來的優(yōu)點(diǎn);最終用戶在“任何時(shí)間、任何地點(diǎn)”都可以訪問這些服務(wù),可以共享數(shù)據(jù),更易協(xié)作,將
49、他們的數(shù)據(jù)安全地存放在基礎(chǔ)設(shè)施中。云計(jì)算并不改變SaaS這些模式,但它給了應(yīng)用程序提供者更多的選擇,使得他們不用配置數(shù)據(jù)中心就能提供SaaS產(chǎn)品。就像半導(dǎo)體代工的出現(xiàn)使沒有生產(chǎn)線的芯片公司也有機(jī)會(huì)設(shè)計(jì)銷售芯片一樣,云計(jì)算允許不用構(gòu)建或提供數(shù)據(jù)中心就能部署SaaS,并根據(jù)需求縮放SaaS的規(guī)模。而SaaS的用戶可以把一些問題交給提供商來解決,SaaS的提供商也可以把自己的一些問題交給云計(jì)算提供商解決。</p><p&g
50、t; 從硬件的角度來看,云計(jì)算有三個(gè)方面是新的 [4]:</p><p> 1).可以按需獲取的看似無限的計(jì)算資源,從而使云計(jì)算用戶不需要在提供服務(wù)很久之前就要做計(jì)算資源的規(guī)劃。</p><p> 2).消除了云用戶的先期的投入,從而使公司可以從小規(guī)模做起,隨著需求增加來擴(kuò)展他們的硬件資源,降低了風(fēng)險(xiǎn)。</p><p> 3).能夠以很短的時(shí)間為單位付費(fèi)按需
51、使用計(jì)算資源(例如,處理器按小時(shí)付費(fèi)以及存儲(chǔ)器按天付費(fèi)),不需要的時(shí)候就將這些資源釋放。這樣,通過將閑置的機(jī)器和存儲(chǔ)器釋放來節(jié)省開支,提高整體利用率。對于云計(jì)算的具體類型,InfoWorld網(wǎng)站同數(shù)十家公司、分析家和IT用戶討論出了云計(jì)算的幾大形式 [2]:</p><p> 1).軟件即服務(wù)(Software as a Service,SaaS)</p><p> 軟件即服務(wù)的云計(jì)算
52、通過瀏覽器把程序傳給成千上萬的用戶。在用戶的角度看來,可以省去在架設(shè)服務(wù)器和軟件授權(quán)上的開支;從供應(yīng)商角度來看,縮減了程序的維護(hù),能夠減少成本。Salesforce.CON)是這類服務(wù)最為出名的公司。一般來講,SaaS在人力資源管理程序和ERP中比較常用。</p><p> 2).實(shí)用計(jì)算(Utility Computing,UC)</p><p> 實(shí)用計(jì)算的思想提出很早,但是直到最
53、近才在Amazon、Sun、IBM和其它提供存儲(chǔ)服務(wù)和虛擬服務(wù)器的公司中被明確使用起來。這種云計(jì)算是通過IT行業(yè)創(chuàng)造虛擬的數(shù)據(jù)中心使得其能夠把內(nèi)存、I/O設(shè)備、存儲(chǔ)和計(jì)算能力集中起來,構(gòu)建程一個(gè)虛擬的資源池來為整個(gè)網(wǎng)絡(luò)提供服務(wù)。</p><p> 3).平臺(tái)即服務(wù)(Platform as a Service,PaaS)</p><p> 平臺(tái)即服務(wù)是指集成了SaaS(Software
54、as a Service),HaaS(Hardware as a Service),DaaS(Data as a Service)的復(fù)合系統(tǒng),這種形式的云計(jì)算把開發(fā)環(huán)境作為一種服務(wù)來提供。你可以使用中間商的設(shè)備來開發(fā)自己的程序,然后通過互聯(lián)網(wǎng)和其服務(wù)器傳到用戶手中。</p><p> 4).管理服務(wù)提供商(Manage Service Provider,MSP)</p><p> 管理
55、服務(wù)提供商可以稱作最古老的云計(jì)算運(yùn)用之一。這種應(yīng)用更多的是面向IT行業(yè)而不是終端用戶,常用于郵件病毒掃描、程序監(jiān)控等等。一些大型的公司集團(tuán)更加可能使用這種服務(wù)。</p><p> 5).商業(yè)服務(wù)平臺(tái)(Commercial Service Platform,CSP)</p><p> 商業(yè)服務(wù)平臺(tái)一般是SaaS和MSP的混合應(yīng)用,該類云計(jì)算為用戶和提供商之間的互動(dòng)提供了一個(gè)平臺(tái),可以一定
56、程度上做到量身定做,比如用戶個(gè)人開支管理系統(tǒng),能夠根據(jù)用戶的設(shè)置來管理其開支并協(xié)調(diào)其訂購的各種服務(wù)。</p><p> 6).互聯(lián)網(wǎng)整合(Internet Integration)</p><p> 互聯(lián)網(wǎng)整合指的是將互聯(lián)網(wǎng)上提供類似服務(wù)的公司整合起來,以便用戶能夠更方便的比較和選擇自己的服務(wù)供應(yīng)商。現(xiàn)在Google做的很多工具都是類似的工作。</p><p>
57、 對于云計(jì)算的應(yīng)用形式分類有很多種,以上使用的是比較簡單的一種分類。從以上分類我們可以看到,從某種程度上說,云計(jì)算確實(shí)是將已有的技術(shù)和概念的一個(gè)整合,或者說規(guī)范化。</p><p> 2.1.2云計(jì)算的特點(diǎn)和優(yōu)勢</p><p> 從用戶角度來看云計(jì)算的優(yōu)點(diǎn):</p><p> 1).云計(jì)算提供了安全可靠的數(shù)據(jù)存儲(chǔ)中心,終端用戶不用再擔(dān)心數(shù)據(jù)丟失和病毒入侵等
58、麻煩。通過云后端專業(yè)的管理、可靠的儲(chǔ)存技術(shù)和嚴(yán)格的權(quán)限策略,使用戶可以放心地使用云計(jì)算的服務(wù)。</p><p> 2).云計(jì)算對用戶端的設(shè)備要求低,使用方便,可以支持手機(jī)等無線通信設(shè)備。通過云可以在瀏覽器中直接編輯存儲(chǔ)在云后端的文檔,實(shí)現(xiàn)隨時(shí)隨地的接入。</p><p> 3).云計(jì)算可以輕松實(shí)現(xiàn)不同設(shè)備間的數(shù)據(jù)與應(yīng)用共享。在云計(jì)算的網(wǎng)絡(luò)應(yīng)用模式中,數(shù)據(jù)只有一份,保存在云的后端,所有電
59、子設(shè)備只需要連接互聯(lián)網(wǎng),就可以同時(shí)訪問和使用同一份數(shù)據(jù)。</p><p> 4).云計(jì)算為用戶使用網(wǎng)絡(luò)提供了更多的可能。它為存儲(chǔ)和管理數(shù)據(jù)提供了更多的空間,也為完成各類應(yīng)用提供了強(qiáng)大的計(jì)算能力。個(gè)人電腦或其他電子設(shè)備不可能提供無限量的存儲(chǔ)空間和計(jì)算能力,但在云的后端,由數(shù)千臺(tái)、數(shù)萬臺(tái)甚至更多服務(wù)器組成的龐大的集群卻可以輕易地做到這一點(diǎn)。個(gè)人和單個(gè)設(shè)備的能力是有限的,但云計(jì)算的潛力卻幾乎是無限的。當(dāng)用戶把最常用的
60、數(shù)據(jù)和最重要的功能都放在云上時(shí),電腦、應(yīng)用軟件乃至網(wǎng)絡(luò)的體系結(jié)構(gòu)將會(huì)有翻天覆地的變化,人們的生活也會(huì)因此而改變。</p><p> 云計(jì)算作為分布式計(jì)算的優(yōu)勢:</p><p> 1).分布式系統(tǒng)的最大優(yōu)勢就是因?yàn)槠渚哂斜燃惺较到y(tǒng)更好的性能價(jià)格比,用戶花少量的錢就能獲得高效能計(jì)算。</p><p> 2).多數(shù)應(yīng)用本身就是分布式的。如工業(yè)企業(yè)應(yīng)用,管理部門和
61、現(xiàn)場不在同一個(gè)地方的應(yīng)用。</p><p> 3).高可靠性。冗余不僅是生物進(jìn)化的必要條件,而且也是信息技術(shù)?,F(xiàn)代分布式系統(tǒng)具有高度容錯(cuò)機(jī)制,控制核反應(yīng)堆主要采用分布式來實(shí)現(xiàn)高可靠性。</p><p> 4).可擴(kuò)展性。添置一臺(tái)性能更高的大型機(jī),或者添置一臺(tái)性能相同的大型機(jī)的費(fèi)用都比添加幾臺(tái)Pc的費(fèi)用高得多。</p><p> 云計(jì)算在存儲(chǔ)領(lǐng)域的發(fā)展趨勢和優(yōu)勢
62、</p><p> 1).用戶不必為文件存儲(chǔ)硬件投入任何前期的費(fèi)用。</p><p> 2).主機(jī)服務(wù)提供商會(huì)維護(hù)用戶文件服務(wù)器的安全和更新問題。</p><p> 3).方便的控制訪問權(quán)限和文件資源管理。</p><p> 2.1.3云計(jì)算的典型應(yīng)用</p><p> 云計(jì)算是多種技術(shù)混合演進(jìn)的結(jié)果.其成熟
63、度較高,又有大公司推動(dòng)。發(fā)展極為迅速。Amazon、Google、Microsoft和Yahoo等大公司是云計(jì)算的先行者。云計(jì)算領(lǐng)域的眾多參與公司還包括Salesforce、Face book、YouTube、MySpace,以及國內(nèi)的趨勢、阿里巴巴等。圖2.1 [8] 是Google trends對云計(jì)算和網(wǎng)格計(jì)算計(jì)算的比較,由該圖可見云計(jì)算在應(yīng)用中擁有了越來越多的關(guān)注度。</p><p> 圖2.1 Goo
64、gle trends中的云計(jì)算統(tǒng)計(jì)</p><p> 云計(jì)算已有一些相對成熟的應(yīng)用,特別是幾家IT大公司的產(chǎn)品,下面對其產(chǎn)品作一個(gè)簡單的分析介紹:</p><p> 1).亞馬遜(Amazon) [5]</p><p> 亞馬遜是以在線書店和電子零售業(yè)起家的,兩年多以前,亞馬遜作為首批進(jìn)軍云計(jì)算新興市場的廠商之一,為嘗試進(jìn)入該領(lǐng)域的企業(yè)開創(chuàng)了良好的開端,如今已
65、成為最大的云計(jì)算服務(wù)提供商之一,去年相關(guān)方面的收入已經(jīng)突破l億美元。亞馬遜的“云”名為亞馬遜網(wǎng)絡(luò)服務(wù)(Amazon Web Services,AWS),目前主要由4塊核心服務(wù)組成:簡單存儲(chǔ)服務(wù)(Simple Storage Service,S3);彈性計(jì)算云(Elastic Compute Cloud,EC2):簡單排列服務(wù)(Simple Queuing Service)以及簡單數(shù)據(jù)庫服務(wù)(Simple DB)。換句話說,亞馬遜現(xiàn)在提供
66、的是可以通過網(wǎng)絡(luò)訪問的存儲(chǔ)、計(jì)算機(jī)處理、信息排隊(duì)和數(shù)據(jù)庫管理系統(tǒng)接入式服務(wù)。但由于數(shù)據(jù)備份以及相關(guān)的狀態(tài)管理方面的語義分析是高度依賴于特定的應(yīng)用模式,因此,亞馬遜在應(yīng)用上缺乏自動(dòng)的可擴(kuò)展性和容錯(cuò)性。</p><p> 2).谷歌(Google) [6]</p><p> 谷歌圍繞因特網(wǎng)搜索創(chuàng)造了一個(gè)神話,成為了最有影響力的互聯(lián)網(wǎng)公司。如今,他們又以應(yīng)用托管、企業(yè)搜索以及其他更多形式向企
67、業(yè)開放了他們的“云"計(jì)劃。2008年4月,谷歌推出了,谷歌應(yīng)用軟件引擎(Google App Engine,GAE),這種服務(wù)讓開發(fā)人員可以編譯基于Python的應(yīng)用程序,并可免費(fèi)使用,谷歌的基礎(chǔ)設(shè)施來進(jìn)行托管(最高存儲(chǔ)空間達(dá)500MB)。對于超過此上限的存儲(chǔ)空間,谷歌按“每CPU內(nèi)核每小時(shí)”10至12美分及1GB空間15至18美分的標(biāo)準(zhǔn)進(jìn)行收費(fèi)。最近,谷歌還公布了提供可由企業(yè)白定義的托管企業(yè)搜索服務(wù)計(jì)劃。2009年4月,谷歌
68、應(yīng)用軟件引擎的最新升級(jí)已經(jīng)開始支持Java,并且添加了一系列專門瞄準(zhǔn)企業(yè)業(yè)務(wù)的新功能:此后,谷歌還發(fā)布了一款Eclipse插件,可以對Google App Engine的Java開發(fā)提供強(qiáng)力支持,谷歌應(yīng)用軟件引擎是專門針對傳統(tǒng)的Web應(yīng)用程序,其結(jié)構(gòu)是將無狀態(tài)的計(jì)算層和分狀態(tài)的存儲(chǔ)層清清楚楚地分開。此外,它的應(yīng)用程序基于請求—應(yīng)答模式,每個(gè)服務(wù)請求能用多少CPU時(shí)間,需要嚴(yán)格的配給制度。谷歌應(yīng)用軟件引擎令人印象深刻的自動(dòng)縮放和高可用性機(jī)
69、制,專有的供引</p><p> 3).微軟(Microsoft)</p><p> 微軟的Azure是介于系統(tǒng)靈活性與方便程序員使用的一個(gè)折中方案。Azure使用.NET函數(shù)庫,并匯編成Common Language Runtime,一個(gè)與語言無關(guān)的環(huán)境。該系統(tǒng)支持一般用途的計(jì)算,而不是一個(gè)單獨(dú)的類別。用戶可以選擇語言,可是不能控制底層操作系統(tǒng)或運(yùn)行時(shí)環(huán)境。函數(shù)庫提供一定程度的自動(dòng)網(wǎng)
70、絡(luò)配置和容錯(cuò)/擴(kuò)展,但要做到這些,開發(fā)者必須明確指定某些應(yīng)用性能。因此,Azure是介于谷歌應(yīng)用軟件引擎應(yīng)用框架和亞馬遜EC2硬件虛擬機(jī)應(yīng)用模式的折中方案。</p><p> 2.2云計(jì)算關(guān)鍵技術(shù)</p><p> 云計(jì)算的關(guān)鍵技術(shù) [9]:編程模式、數(shù)據(jù)存儲(chǔ)技術(shù)和管理技術(shù)、虛擬化技術(shù)。云計(jì)算是一種新型的超級(jí)計(jì)算方式,以數(shù)據(jù)為中心,是一種數(shù)據(jù)密集型的超級(jí)計(jì)算。在數(shù)據(jù)存儲(chǔ)和管理、編程模式
71、和虛擬化等方面具有自身獨(dú)特的技術(shù)。下面對這三大關(guān)鍵技術(shù)作一個(gè)簡單的介紹:</p><p> 2.2.1簡單的編程模式</p><p> 編程模式主要針對的是使用云計(jì)算的服務(wù)進(jìn)行開發(fā)的用戶,為了使這些用戶能方便的利用云后端的資源,使用合適的編程模式編寫應(yīng)用程序來達(dá)到需要的目的或提供服務(wù),云計(jì)算中的編程模式應(yīng)該盡量方便簡單。最好使得后臺(tái)復(fù)雜的并行執(zhí)行和任務(wù)調(diào)度向編程人員透明,從而是編程人員
72、可以將精力集中與業(yè)務(wù)邏輯。Google提出的Map Reduce的編程模式是如今最流行的云計(jì)算編程模式?,F(xiàn)在幾乎所有IT廠商提出的“云”計(jì)劃中采用的編程模式,都是基于Map Reduce思想的。Map Reduce這種編程模式并不僅適用于云計(jì)算,在多核計(jì)算和并行處理上同樣具有良好的性能。但該編程模式僅適用于編寫數(shù)據(jù)處理為主、能夠高度并行化的程序,簡單的說,它是對同類型數(shù)據(jù)的分布式處理,對于計(jì)算數(shù)據(jù)具有相互聯(lián)系,不可分割的應(yīng)用并不適合。如
73、何改進(jìn)該編程模式,使程序員得能夠輕松的編寫各種需要的程序,實(shí)現(xiàn)真正意義上的并行編程,是Map Reduce編程模式未來的發(fā)展方向。Hadoop軟件平臺(tái)對MapReduce技術(shù)已有具體的應(yīng)用,本論文第三章將對其原理和技術(shù)有詳細(xì)介紹。</p><p> 2.2.2數(shù)據(jù)存儲(chǔ)和管理</p><p> 為保證數(shù)據(jù)的高可用和高可靠性,云計(jì)算的數(shù)據(jù)一般采用分布式的方式來存儲(chǔ)和管理。類似于一般的數(shù)據(jù)存
74、儲(chǔ)安全保證辦法,云計(jì)算也采用冗余存儲(chǔ)的方式來保證存儲(chǔ)數(shù)據(jù)的可靠性。由于云計(jì)算系統(tǒng)需要同時(shí)滿足大量用戶的需求,并行地為大量用戶提供服務(wù),因此云計(jì)算的數(shù)據(jù)存儲(chǔ)技術(shù)必須具有高吞吐率,分布式存儲(chǔ)正好滿足了這一需求特點(diǎn)。現(xiàn)在,云計(jì)算的數(shù)據(jù)存儲(chǔ)技術(shù)主要有谷歌的非開源的體系GFS(Google File System)和Hadoop團(tuán)隊(duì)的開發(fā)的對于GFS[10]的開源實(shí)現(xiàn)HDFS(Hadoop Distributed File System)。有很大
75、一部分IT廠商,包括yahoo,Intel,阿里巴巴的云存儲(chǔ)計(jì)劃采用的都是HDFS的數(shù)據(jù)存儲(chǔ)技術(shù)。本論文在也安裝部署了Hadoop的HDFS平臺(tái)并使用其進(jìn)行數(shù)據(jù)存儲(chǔ)。</p><p> 云計(jì)算系統(tǒng)對大數(shù)據(jù)集進(jìn)行處理,而且需要向用戶提供高效的服務(wù),因此數(shù)據(jù)管理技術(shù)也必須能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行高效的管理。由于云計(jì)算的特點(diǎn)是對大量的數(shù)據(jù)進(jìn)行反復(fù)的讀取和分析,數(shù)據(jù)的讀操作頻率遠(yuǎn)大于數(shù)據(jù)的更新頻率,因此云中的數(shù)據(jù)管理是一種讀
76、效率優(yōu)先的數(shù)據(jù)管理模式。因此一般來講,云計(jì)算系統(tǒng)的數(shù)據(jù)管理通常采用數(shù)據(jù)庫領(lǐng)域中列存儲(chǔ)的數(shù)據(jù)管理模式,即將表按列劃分后存儲(chǔ)。在現(xiàn)有的云計(jì)算的數(shù)據(jù)管理技術(shù)中,最著名的是谷歌的Big Table&31數(shù)據(jù)管理技術(shù),同時(shí)Hadoop開發(fā)團(tuán)隊(duì)開發(fā)了類似Big Table的開源數(shù)據(jù)管理模塊。由于采用列存儲(chǔ)的方式管理數(shù)據(jù)會(huì)造成寫的不方便,因此如何提高數(shù)據(jù)的更新速率以及進(jìn)一步提高隨機(jī)讀速率是未來的數(shù)據(jù)管理技術(shù)需要解決的問題。</p>&l
77、t;p> 2.2.3虛擬化技術(shù)</p><p> 虛擬化是云計(jì)算的一個(gè)非常關(guān)鍵的技術(shù) [11],也可以說是云計(jì)算區(qū)別于一般并行計(jì)算的一個(gè)根本性的特點(diǎn)。通過虛擬機(jī)的方式進(jìn)行云計(jì)算資源的管理具有特殊的好處。由于虛擬機(jī)是一類特殊的軟件,能夠完全模擬硬件的執(zhí)行,因此能夠在上面運(yùn)行操作系統(tǒng),進(jìn)而能夠保留一整套運(yùn)行環(huán)境語義。這樣,可以將整個(gè)執(zhí)行環(huán)境通過打包的方式傳輸?shù)狡渌锢砉?jié)點(diǎn)上,使得執(zhí)行環(huán)境與物理環(huán)境隔離,方便
78、整個(gè)應(yīng)用程序模塊的部署。一般來說,通過將虛擬化的技術(shù)應(yīng)用到云計(jì)算的平臺(tái),可以獲得如下一些良好的特性:</p><p> 1).云計(jì)算的管理平臺(tái)能夠動(dòng)態(tài)地將計(jì)算平臺(tái)定位到所需要的物理平臺(tái)上,而無需停止運(yùn)行在虛擬機(jī)平臺(tái)上的應(yīng)用程序,這比采用虛擬化技術(shù)之前的進(jìn)程遷移方法更加靈活。</p><p> 2).能夠更加有效率地使用主機(jī)資源,將多個(gè)負(fù)載不是很重的虛擬機(jī)計(jì)算節(jié)點(diǎn)合并到同一個(gè)物理節(jié)點(diǎn)上,
79、從而能夠關(guān)閉空閑的物理節(jié)點(diǎn),達(dá)到節(jié)約電能的目的。</p><p> 3).通過虛擬機(jī)在不同物理節(jié)點(diǎn)上的動(dòng)態(tài)遷移,能夠獲得與應(yīng)用無關(guān)的負(fù)載平衡性能。由于虛擬機(jī)包含了整個(gè)虛擬化的操作系統(tǒng)以及應(yīng)用程序環(huán)境,因此在進(jìn)行遷移的時(shí)候帶著整個(gè)運(yùn)行環(huán)境,達(dá)到了與應(yīng)用無關(guān)的目的。</p><p> 4).在部署上也更加靈活,即可以將虛擬機(jī)直接部署到物理計(jì)算平臺(tái)當(dāng)中,或者提供給用戶的資源就直接是一個(gè)虛擬機(jī)
80、,如亞馬遜的EC2。</p><p> 虛擬化技術(shù)現(xiàn)在最成熟的系統(tǒng)包括Xen和VMware,還有開源的系統(tǒng)Linux kvm。</p><p> 第3章 Hadoop平臺(tái)研究</p><p><b> 3.1概述</b></p><p> 在云計(jì)算技術(shù)中,編程平臺(tái)是一個(gè)非常重要的模塊。Hadoop平臺(tái)是當(dāng)今應(yīng)用最
81、為廣泛的開源云計(jì)算編程平臺(tái),本章詳細(xì)介紹了Hadoop平臺(tái)的組成。</p><p><b> Hadoop概述</b></p><p> Hadoop [15]是Apache開源組織的一個(gè)分布式計(jì)算開源框架,在很多大型網(wǎng)站上都已經(jīng)得到了應(yīng)用,如Amazon、Face book、Yahoo!、IBM等等。Hadoop框架中最核心的設(shè)計(jì)是MapReduce [12]和
82、HDFS(Hadoop Distributed File System)。MapReduce的思想是由Google的一篇論文所提及而被廣為流傳的,簡單的說MapReduce就是任務(wù)的分解與結(jié)果的匯總。HDFS是Hadoop分布式文件系統(tǒng)的縮寫,為分布式計(jì)算存儲(chǔ)提供了底層支持。</p><p> Hadoop的優(yōu)點(diǎn)在于:</p><p> 1).可擴(kuò)展:不論是存儲(chǔ)的可擴(kuò)展還是計(jì)算的可擴(kuò)展
83、都是Hadoop的設(shè)計(jì)根本,Hadoop的擴(kuò)展非常簡單,不需要修改任何已有的結(jié)構(gòu)。</p><p> 2).經(jīng)濟(jì):框架可以運(yùn)行在任何普通的PC上,對硬件沒有特殊的要求。</p><p> 3).可靠:分布式文件系統(tǒng)的備份恢復(fù)機(jī)制以及MapReduce的任務(wù)監(jiān)控保證了分布式處理的可靠性,Hadoop默認(rèn)就提供1個(gè)以上的備份。</p><p> 4).高效:分布式
84、文件系統(tǒng)的高效數(shù)據(jù)交互實(shí)現(xiàn)以及MapReduce結(jié)合Local Data處理的模式,為高效處理海量的信息作了基礎(chǔ)準(zhǔn)備。</p><p> Hadoop最適合的是用于海量數(shù)據(jù)的分析,Google最早提出MapReduce也就是為了海量數(shù)據(jù)分析。同時(shí)HDFS最早是為了搜索引擎實(shí)現(xiàn)而開發(fā)的,后來才被用于分布式計(jì)算框架中。海量數(shù)據(jù)被分割于多個(gè)節(jié)點(diǎn),然后由每一個(gè)節(jié)點(diǎn)并行計(jì)算,將得出結(jié)果歸并到輸出。同時(shí)第一階段的輸出又可以
85、作為下一階段計(jì)算的輸入,形成一個(gè)樹狀結(jié)構(gòu)的分布式計(jì)算圖,在不同階段都有不同產(chǎn)出,同時(shí)并行和串行結(jié)合的計(jì)算也可以很好的在分布式集群的資源下得以高效的處理。</p><p><b> HDFS介紹</b></p><p> Hadoop [16]分布式文件系統(tǒng)(HDFS)被設(shè)計(jì)成適合運(yùn)行在通用硬件(commodity hardware)上的分布式文件系統(tǒng)。它和現(xiàn)有的分
86、布式文件系統(tǒng)有很多共同點(diǎn).但同時(shí)它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。HDFS是一個(gè)高度容錯(cuò)性的系統(tǒng),適合部署在廉價(jià)的機(jī)器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用,它放寬了一部分POSIX約束,來實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。HDFS在最開始是作為Apache Nutch搜索引擎項(xiàng)目的基礎(chǔ)架構(gòu)而開發(fā)的,后來獨(dú)立出來.作為Apache Hadoop Core項(xiàng)目的一部分。</p><p
87、> HDFS采用master/slave架構(gòu)。一個(gè)HDFS集群是由一個(gè)Namenode和一定數(shù)目的Datanodes組成。Namenode是一個(gè)中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的名字空間以及客戶端對文件的訪問。集群中的Datanode一般是一個(gè)節(jié)點(diǎn)一個(gè),負(fù)責(zé)管理它所在節(jié)點(diǎn)卜的存儲(chǔ)。HDFS暴露了文件系統(tǒng)的名字空間,用戶能夠以文件的形式在上面存儲(chǔ)數(shù)據(jù)。從內(nèi)部看,一個(gè)文件其實(shí)被分成一個(gè)或多個(gè)數(shù)據(jù)塊,這些塊存儲(chǔ)在一組Datanode上。N
88、amenode執(zhí)行文件系統(tǒng)的名字空間操作,比如打開、關(guān)閉、重命名文件或目錄。它也負(fù)責(zé)確定數(shù)據(jù)塊到具體Datanode節(jié)點(diǎn)的映射。Datanode負(fù)責(zé)處理文件系統(tǒng)客戶端的讀寫請求。在Namenode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制。圖3.1是HDFS的一個(gè)結(jié)構(gòu)示意。</p><p> 圖3.1 HDFS體系結(jié)構(gòu)</p><p> HDFS的Namenode和Datanode被設(shè)計(jì)
89、成可以在普通的商用機(jī)器上運(yùn)行的節(jié)點(diǎn)。這些機(jī)器一般運(yùn)行GNU/Linux操作系統(tǒng)。HDFS采用Java語言開發(fā),因此任何支持Java的機(jī)器都可以部署Namenode或Datanode。由于采用了可移植性極強(qiáng)的Java語言,使得HDFS可以部署到多種類型的機(jī)器上。一個(gè)典型的部署場景是一臺(tái)機(jī)器上只運(yùn)行一個(gè)Namenode實(shí)例,而集群中的其它機(jī)器分別運(yùn)行一個(gè)Datanode實(shí)例。這種架構(gòu)并不排斥在一臺(tái)機(jī)器上運(yùn)行多個(gè)Datanode,只不過這樣的
90、情況比較少見。</p><p> 集群中單一Namenode的結(jié)構(gòu)大大簡化了系統(tǒng)的架構(gòu)。Namenode是所有HDFS元數(shù)據(jù)的仲裁者和管理者,這樣,用戶數(shù)據(jù)永遠(yuǎn)不會(huì)流過Namenode。為了增加系統(tǒng)的穩(wěn)定性,一般系統(tǒng)中都還存在Namenode的一個(gè)備份,Secondary Namenode。</p><p> 3.1.3MapReduce介紹</p><p>
91、 MapReduce [12]是一個(gè)編程模型和處理產(chǎn)生大數(shù)據(jù)集的相關(guān)實(shí)現(xiàn)。用戶指定一個(gè)map函數(shù)處理一個(gè)key/value對,從而產(chǎn)生中間的key/value對集。然后再指定一個(gè)reduce函數(shù)合并所有的具有相同中間key的中間value。下面將列舉許多可以用這個(gè)模型來表示的現(xiàn)實(shí)世界的工作。</p><p> 以這種方式寫的程序能自動(dòng)的在大規(guī)模的普通機(jī)器上實(shí)現(xiàn)并行化。這個(gè)運(yùn)行時(shí)系統(tǒng)關(guān)心這些細(xì)節(jié),分割輸入數(shù)據(jù),在
92、機(jī)群上的調(diào)度,機(jī)器的錯(cuò)誤處理,管理機(jī)器之間必要的通信。這樣就可以讓那些沒有并行分布式處理系統(tǒng)經(jīng)驗(yàn)的程序員利用大量分布式系統(tǒng)的資源。</p><p> 我們的MapReduce實(shí)現(xiàn)運(yùn)行在規(guī)模可以靈活調(diào)整的由普通機(jī)器組成的機(jī)群上,一個(gè)典型的MapReduce計(jì)算處理幾千臺(tái)機(jī)器上的以TB計(jì)算的數(shù)據(jù)。Hadoop中的Map/Reduce是一個(gè)使用簡易的軟件框架,基于它寫出來的應(yīng)用程序能夠運(yùn)行在由上千個(gè)商用機(jī)器組成的大型
93、集群上,并以一種可靠容錯(cuò)的方式并行處理上T級(jí)別的數(shù)據(jù)集。一個(gè)Map/Reduce作業(yè)(job)通常會(huì)把輸入的數(shù)據(jù)集切分為若干獨(dú)立的數(shù)據(jù)塊,由map任務(wù)(task)以完全并行的方式處理它們??蚣軙?huì)對map的輸出先進(jìn)行排序, 然后把結(jié)果輸入給reduce任務(wù)。通常作業(yè)的輸入和輸出都會(huì)被存儲(chǔ)在文件系統(tǒng)中。整個(gè)框架負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)控,以及重新執(zhí)行已經(jīng)失敗的任務(wù)。圖3.2說明了用 MapReduce 來處理大數(shù)據(jù)集的過程.</p>
94、<p> 圖3.2 MapReduce 計(jì)算流程</p><p> 通常,Map/Reduce框架和分布式文件系統(tǒng)是運(yùn)行在一組相同的節(jié)點(diǎn)上的,也就是說,計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)通常在一起。這種配置允許框架在那些已經(jīng)存好數(shù)據(jù)的節(jié)點(diǎn)上高效地調(diào)度任務(wù),這可以使整個(gè)集群的網(wǎng)絡(luò)帶寬被高效地利用。</p><p> Map/Reduce框架由一個(gè)單獨(dú)的master JobTracker和每
95、個(gè)集群節(jié)點(diǎn)一個(gè)slave TaskTracker共同組成。master負(fù)責(zé)調(diào)度構(gòu)成一個(gè)作業(yè)的所有任務(wù),這些任務(wù)分布在不同的slave上,master監(jiān)控它們的執(zhí)行,重新執(zhí)行已經(jīng)失敗的任務(wù)。而slave僅負(fù)責(zé)執(zhí)行由master指派的任務(wù)。應(yīng)用程序至少應(yīng)該指明輸入/輸出的位置(路徑),并通過實(shí)現(xiàn)合適的接口或抽象類提供map和reduce函數(shù)。再加上其他作業(yè)的參數(shù),就構(gòu)成了作業(yè)配置(job configuration)。然后,Hadoop的j
96、ob client提交作業(yè)(jar包/可執(zhí)行程序等)和配置信息給JobTracker,后者負(fù)責(zé)分發(fā)這些軟件和配置信息給slave、調(diào)度任務(wù)并監(jiān)控它們的執(zhí)行,同時(shí)提供狀態(tài)和診斷信息給job-client。輸入與輸出:Map/Reduce框架運(yùn)轉(zhuǎn)在<key,value>鍵值對上,也就是說,框架把作業(yè)的輸入看為是一組<key,value>鍵值對,同樣也產(chǎn)出一組<key,value>鍵值對作為作業(yè)的輸出,這兩
97、組鍵值對的類型可能不同。一個(gè)Map/Reduce作業(yè)的輸入和輸出如下表所示:</p><p> 表3.1 Map 和 Reduce 函數(shù)</p><p> Hadoop構(gòu)架以及原理</p><p> Hadoop 有許多元素構(gòu)成,最底部是 Hadoop Distributed File System,它存儲(chǔ) Hadoop 集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件。HDFS(
98、對于本文)的上一層是 MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成。Hadoop 集群的簡化視圖如下圖3.3</p><p> 圖3.3Hadoop 集群構(gòu)架圖</p><p><b> 1).HDFS</b></p><p> 對外部客戶機(jī)而言,HDFS 就像一個(gè)傳統(tǒng)的分級(jí)文件系統(tǒng)。可以
99、創(chuàng)建、刪除、移動(dòng)或重命名文件等等。但是 HDFS 的架構(gòu)是基于一組特定的節(jié)點(diǎn)構(gòu)建的,這是由它自身的特點(diǎn)決定的。這些節(jié)點(diǎn)包括 NameNode(僅一個(gè)),它在 HDFS 內(nèi)部提供元數(shù)據(jù)服務(wù);DataNode,它為 HDFS 提供存儲(chǔ)塊。由于僅存在一個(gè) NameNode,因此這是 HDFS 的一個(gè)缺點(diǎn)(單點(diǎn)失?。?,還有復(fù)制到多個(gè)計(jì)算機(jī)中的DataNode。這與傳統(tǒng)的 RAID 架構(gòu)大不相同,塊的大小(通常為 64MB)和復(fù)制的塊數(shù)量在創(chuàng)建文
100、件時(shí)由客戶機(jī)決定。NameNode 可以控制所有文件操作,HDFS 內(nèi)部的所有通信都基于標(biāo)準(zhǔn)的 TCP/IP 協(xié)議。</p><p> 2).NameNode</p><p> NameNode 是一個(gè)通常在 HDFS 實(shí)例中單獨(dú)機(jī)器上運(yùn)行的軟件。它負(fù)責(zé)管理文件系統(tǒng)名稱空間和控制外部客戶機(jī)的訪問。NameNode 決定是否將文件映射到DataNode 上的復(fù)制塊上。對于最常見的3個(gè)復(fù)制
101、塊,第一個(gè)復(fù)制塊存儲(chǔ)在同一機(jī)架的不同節(jié)點(diǎn)上,最后一個(gè)復(fù)制塊存儲(chǔ)在不同機(jī)架的某個(gè)節(jié)點(diǎn)上。實(shí)際的 I/O 事務(wù)并沒有經(jīng)過 NameNode,只有表示 DataNode 和塊的文件映射的元數(shù)據(jù)經(jīng)過 NameNode。當(dāng)外部客戶機(jī)發(fā)送請求要求創(chuàng)建文件時(shí),NameNode 會(huì)以塊標(biāo)識(shí)和該塊的第一個(gè)副本的 DataNode IP 地址作為響應(yīng)。這個(gè) NameNode 還會(huì)通知其他將要接收該塊的副本的 DataNode。NameNode 在一個(gè)稱為
102、FsImage 的文件中存儲(chǔ)所有關(guān)于文件系統(tǒng)名稱空間的信息。這個(gè)文件和一個(gè)包含所有事務(wù)的記錄文件(這里是 EditLog)將存儲(chǔ)在 NameNode 的本地文件系統(tǒng)上。FsImage 和 EditLog 文件也需要復(fù)制副本,以防文件損壞或 NameNode 系統(tǒng)丟失。</p><p> 3).DataNode</p><p> DataNode 也是一個(gè)通常在 HDFS 實(shí)例中的單獨(dú)機(jī)
103、器上運(yùn)行的軟件。Hadoop 集群包含一個(gè) NameNode 和大量 DataNode。DataNode 通常以機(jī)架的形式組織,機(jī)架通過一個(gè)交換機(jī)將所有系統(tǒng)連接起來。Hadoop 的一個(gè)假設(shè)是:機(jī)架內(nèi)部節(jié)點(diǎn)之間的傳輸速度快于機(jī)架間節(jié)點(diǎn)的傳輸速度。DataNode 響應(yīng)來自 HDFS 客戶機(jī)的讀寫請求。它們還響應(yīng)創(chuàng)建、刪除和復(fù)制來自 NameNode 的塊的命令。NameNode 依賴來自每個(gè)DataNode 的定期心跳(heartbea
104、t)消息。每條消息都包含一個(gè)塊報(bào)告,NameNode 可以根據(jù)這個(gè)報(bào)告驗(yàn)證塊映射和其他文件系統(tǒng)元數(shù)據(jù)。如果 DataNode 不能發(fā)送心跳消息,NameNode 將采取修復(fù)措施,重新復(fù)制在該節(jié)點(diǎn)上丟失的塊。</p><p><b> 4).文件操作</b></p><p> 可見,HDFS 并不是一個(gè)萬能的文件系統(tǒng)。它的主要目的是支持以流的形式訪問寫入的大型文件。
105、如果客戶機(jī)想將文件寫到 HDFS 上,首先需要將該文件緩存到本地的臨時(shí)存儲(chǔ)。如果緩存的數(shù)據(jù)大于所需的 HDFS 塊大小,創(chuàng)建文件的請求將發(fā)送給 NameNode。NameNode 將以 DataNode 標(biāo)識(shí)和目標(biāo)塊響應(yīng)客戶機(jī)。同時(shí)也通知將要保存文件塊副本的 DataNode。當(dāng)客戶機(jī)開始將臨時(shí)文件發(fā)送給第一個(gè) DataNode 時(shí),將立即通過管道方式將塊內(nèi)容轉(zhuǎn)發(fā)給副本 DataNode??蛻魴C(jī)也負(fù)責(zé)創(chuàng)建保存在相同 HDFS 名稱空間中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于Hadoop海量數(shù)據(jù)分析的反腐云計(jì)算設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于Hadoop云計(jì)算框架的在線購物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于Hadoop的云計(jì)算系統(tǒng)設(shè)計(jì).pdf
- 基于Hadoop的云計(jì)算教育資源共享平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于Hadoop的云計(jì)算模型研究與應(yīng)用.pdf
- 基于hadoop影視碎片云存儲(chǔ)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于Hadoop的電信云計(jì)算開放平臺(tái)研究設(shè)計(jì).pdf
- 基于Hadoop的車載云服務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于Hadoop的云教學(xué)資源平臺(tái)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 云計(jì)算畢業(yè)設(shè)計(jì)
- 基于Hadoop的云計(jì)算應(yīng)用研究.pdf
- 基于Hadoop的云計(jì)算安全機(jī)制研究.pdf
- 基于hadoop技術(shù)云存儲(chǔ)平臺(tái)的研究與實(shí)現(xiàn).pdf
- 基于Hadoop云平臺(tái)的網(wǎng)絡(luò)測量系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于Hadoop的云存儲(chǔ)平臺(tái)的研究與實(shí)現(xiàn).pdf
- 基于Hadoop的新校區(qū)云計(jì)算存儲(chǔ)服務(wù)平臺(tái)設(shè)計(jì)與研究.pdf
- 基于Hadoop可公共審計(jì)云存儲(chǔ)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于Hadoop的云計(jì)算資源管理研究.pdf
- 基于云計(jì)算平臺(tái)Hadoop的聚類研究.pdf
- 基于Hadoop的氣象信息云存儲(chǔ)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論