基于Hadoop的云計(jì)算模型研究
云計(jì)算是在網(wǎng)格計(jì)算基礎(chǔ)上新興的計(jì)算模型,是互聯(lián)網(wǎng)公司爭(zhēng)相追逐的新技術(shù)。云計(jì)算作為一種商業(yè)計(jì)算模型,可以把任務(wù)分布在大量的計(jì)算機(jī)構(gòu)成的資源池上。介紹了云計(jì)算的關(guān)鍵技術(shù),這些技術(shù)包含虛擬機(jī)和計(jì)算模型等,還基于Hadoop對(duì)云計(jì)算模型進(jìn)行了研究。
引言
云計(jì)算是由企業(yè)界開(kāi)始發(fā)展,然后才進(jìn)入學(xué)術(shù)界引起重視的,這與網(wǎng)格計(jì)算相反。經(jīng)過(guò)對(duì)迄今為止的云計(jì)算相關(guān)學(xué)術(shù)論文進(jìn)行統(tǒng)計(jì)分析后,顯示學(xué)術(shù)界對(duì)于云計(jì)算的研究主要集中在云技術(shù)關(guān)鍵技術(shù)方面。云計(jì)算研究的關(guān)鍵技術(shù)包括虛擬機(jī)、安全管理、數(shù)據(jù)管理、云監(jiān)測(cè)、能耗管理和計(jì)算模型等。云計(jì)算的計(jì)算模型是研究如何針對(duì)某類應(yīng)用特點(diǎn)提出效率更高的編程方式,目前云計(jì)算模型眾多,而Hadoop是一個(gè)開(kāi)源的分布式系統(tǒng)基本架構(gòu),正日益成為具有較強(qiáng)實(shí)用性的開(kāi)發(fā)平臺(tái).淘寶就是國(guó)內(nèi)率先使用Hadoop的公司之一。
1云計(jì)算關(guān)鍵技術(shù)
1.1虛擬機(jī)
虛擬機(jī)是云計(jì)算的關(guān)鍵技術(shù)之一。目前在云計(jì)算中使用的主要虛擬機(jī)之一就是VMwareInfrastructure。它是一個(gè)虛擬數(shù)據(jù)中心操作系統(tǒng),可以將離散的硬件資源統(tǒng)一起來(lái)以創(chuàng)建共享平臺(tái)。其優(yōu)點(diǎn)有:①整合服務(wù)器以降低IT成本;②暗哨計(jì)劃內(nèi)和計(jì)劃外停機(jī)以改進(jìn)業(yè)務(wù)連續(xù)性;⑧運(yùn)行較少的服務(wù)器并且動(dòng)態(tài)關(guān)閉不使用的服務(wù)器。
1.2安全管理
云計(jì)算是計(jì)算機(jī)資源的整合,通過(guò)云計(jì)算設(shè)施中的任何一臺(tái)計(jì)算機(jī),任何隱私信息都能夠被找到。云計(jì)算安全問(wèn)題已經(jīng)成為急需解決的重要問(wèn)題。其中,SianiPersion等提出了在云計(jì)算服務(wù)設(shè)計(jì)過(guò)程中保護(hù)用戶隱私的一些設(shè)計(jì)原則:①發(fā)送盡量少的個(gè)人信息到云中,或者對(duì)系統(tǒng)進(jìn)行分析后只對(duì)一小部分個(gè)人信息進(jìn)行必要的收集和采集;②采用安全措施防止未授權(quán)的訪問(wèn)、復(fù)制、使用或者修改個(gè)人信息來(lái)保護(hù)云中的個(gè)人信息:③***限度地實(shí)現(xiàn)用戶控制。在云計(jì)算環(huán)境中,讓用戶完全控制個(gè)人信息是比較困難的。要加強(qiáng)對(duì)個(gè)人信息的控制:一可以允許用戶控制最重要的個(gè)人信息;二可以委托信任的第三方來(lái)管理:④允許用戶對(duì)個(gè)人信息的使用進(jìn)行選擇,即加入、退出機(jī)制;⑤明確以及限制數(shù)據(jù)使用的目的。個(gè)人信息必須被身份明確的人使用和處理;⑥有反饋機(jī)制。即設(shè)計(jì)人及界面清楚地表明云服務(wù)中采取的安全措施,用其向用戶提供安全提示。
1.3數(shù)據(jù)管理
云計(jì)算具有計(jì)算能力可變、數(shù)據(jù)儲(chǔ)存在不信任的主機(jī)上、數(shù)據(jù)是遠(yuǎn)程復(fù)制等3個(gè)特點(diǎn)。從這3個(gè)特點(diǎn)分析而出,只有兩種數(shù)據(jù)管理應(yīng)用程序可能適合部署到云計(jì)算中:一是和事務(wù)處理相關(guān)的數(shù)據(jù)管理系統(tǒng):另一種是和分析相關(guān)的數(shù)據(jù)管理系統(tǒng)。前者未采用共享的體系結(jié)構(gòu),在進(jìn)行遠(yuǎn)程數(shù)據(jù)復(fù)制時(shí)很難滿足ACID的需求,同時(shí)在不信任的主機(jī)上存儲(chǔ)數(shù)據(jù)也有比較大的風(fēng)險(xiǎn)。ACID要求對(duì)于基于分析的數(shù)據(jù)管理系統(tǒng)來(lái)說(shuō)不是必須的,同時(shí)可以保證敏感數(shù)據(jù)在分析之外,從而保證其安全。因此,基于分析的數(shù)據(jù)管理系統(tǒng)應(yīng)該很合適部署到云計(jì)算環(huán)境中去。
1.4云監(jiān)測(cè)和能耗管理
云監(jiān)測(cè)是隨著云計(jì)算的推廣、云設(shè)施不斷增加、為了更好地體現(xiàn)云計(jì)算的強(qiáng)大計(jì)算處理能力而設(shè)置的對(duì)虛擬機(jī)監(jiān)控的能力:能耗管理是如何節(jié)省云設(shè)施中計(jì)算設(shè)施所需要的能源、有效整合資源、降低成本。
1.5云計(jì)算的計(jì)算模型
現(xiàn)行的分布式計(jì)算系統(tǒng)可以提供強(qiáng)大的計(jì)算能力.但非專業(yè)用戶并不能有效地利用,一個(gè)龐大的任務(wù)很可能由于初學(xué)者的偶然操作導(dǎo)致性能的大幅下降。為了解決這些問(wèn)題,應(yīng)該提供給用戶一個(gè)高度抽象的產(chǎn)品系統(tǒng).這些就是云計(jì)算的計(jì)算模型。提到云計(jì)算模型,就不得不說(shuō)一個(gè)開(kāi)源框架,那就是Hadoop。
Hadoop是一個(gè)分布式系統(tǒng)基本架構(gòu)。由Apache開(kāi)發(fā),使用戶在不了解分布式底層細(xì)節(jié)的情況下,開(kāi)發(fā)分布式程序。簡(jiǎn)單點(diǎn)說(shuō)。Hadoop是一個(gè)可以更容易開(kāi)發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺(tái)。
Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(HadoopDistributedFileSystem),簡(jiǎn)稱HDFS。HDFS有著高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來(lái)部署在低廉的硬件上。而且它提供高傳輸率來(lái)訪問(wèn)應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應(yīng)用程序。HDFS放寬了POSIX標(biāo)準(zhǔn)的要求。這樣可以流的形式訪問(wèn)文件系統(tǒng)中的數(shù)據(jù)。
Hadoop采用Master/Slave結(jié)構(gòu)(如圖1),會(huì)有一臺(tái)Mas.ter,主要負(fù)責(zé)NameNode的工作以及JobTracker的工作,Job.Tracker的主要職責(zé)就是啟動(dòng)、跟蹤和調(diào)度各個(gè)Slave的任務(wù)執(zhí)行。還會(huì)有多臺(tái)Slave,每一臺(tái)Slave通常具有DataNode的功能并負(fù)責(zé)TaskTracker的工作。TaskTracker根據(jù)應(yīng)用要求來(lái)結(jié)合本地?cái)?shù)據(jù)執(zhí)行Map任務(wù)以及Reduce任務(wù)。
圖1 Hadoop結(jié)構(gòu)#p#
2 Windows下使用Hadoop實(shí)例的研究
2.1Windows下使用Hadoop的環(huán)境配置:
?。?)安裝Hadoop前,首先需要安裝Cygwin
Cygwin是一個(gè)在Windows平臺(tái)上運(yùn)行的Unix模擬環(huán)境,提供了shel1支持。安裝中需要選中Netcategory中的openssh。如圖2所示。
圖2 下載Cygwin安裝包
?。?)配置Windows系統(tǒng)變量
新建系統(tǒng)變量CYGWIN.變量值為ntsec tty編輯系統(tǒng)變量里的Path變量.加入C:\eygwin\bin
?。?)安裝Java,即安裝idk,配置JAVA環(huán)境變量。
2.2 單機(jī)模式
(1)啟動(dòng)Cygwin,解壓縮Hadoop安裝包,例如Hapoop安裝包位于e:\下,則解壓命令為$tar—zxvf/cygdrive/e/hadoop一0.19.2.tar.gz。
解壓默認(rèn)目錄在C:\cygwin\home\user文件夾下。
(2)編輯C:\cygwin\home\Administrato ad0op-0.19.2\conf里的hadoop-env.sh,將JAVA_HOME變量設(shè)置成JDK安裝目錄,如果路徑中有空格,需要把Program Files改成Progra~1。
(3)配置完后即可運(yùn)行WordCount實(shí)例。
在C:\cygwiI ome dministrator\hadoop-0.19.2下創(chuàng)建一個(gè)輸入目錄input.新建2個(gè)本文文件:
txt1.txt:yangshenyuan hello world hello hadooop
txt2.txt:yangshenyuan bye hadoop
然后運(yùn)行實(shí)例,并將結(jié)果輸出到output目錄下:
$bin/hadoop jar hadoop-0.1 9.2-examples.jar wordeount inputoutput
2.3 偽分布模式
?。?)安裝配置SSH
啟動(dòng)eygwin,執(zhí)行命令:$ssh-host—eonfig。
當(dāng)詢問(wèn)“Shouldprivilegeseparationbeused”時(shí).輸入no;當(dāng)詢問(wèn)”Doyouwanttoinstallsshdasaservice?”選yes;當(dāng)提示“EnterthevalHeofCYGWINforthedaemon:[ntsee]”時(shí),選擇ntsec。
提示sshd服務(wù)已經(jīng)在本地系統(tǒng)安裝完畢。輸入命令$netstartsshd,啟動(dòng)SSH,或者在Windows服務(wù)項(xiàng)里啟動(dòng)CYGWINsshd。
然后執(zhí)行$ssh—keygen來(lái)生成密鑰對(duì).然后一直回車鍵確定。這樣會(huì)把生產(chǎn)的密鑰對(duì)保存在.ssh目錄下。使用命令將RSA公鑰加入到公鑰授權(quán)文件authorized_keys中:
訪問(wèn)http://grid1:50070可以查看NameNote以及整個(gè)分布式文件系統(tǒng)的狀態(tài).訪問(wèn)http://gridl:50060可以查看TaskTraeker的運(yùn)行狀態(tài)。
運(yùn)行完數(shù)據(jù)處理.查看結(jié)果和關(guān)閉Hadoop的操作和偽分布模式相同。#p#
3 結(jié)束語(yǔ)
雖然Hadoop支持Windows,但官網(wǎng)上同時(shí)聲明Hadoop尚未在Windows下嚴(yán)格測(cè)試,建議只作為開(kāi)發(fā)平臺(tái)。
而且,格式化Hadoop文件系統(tǒng)是Hadoop啟動(dòng)的第一步,每次格式化前,要清空$HADOOP_HOME\tmp目錄下的所有文件.因?yàn)镠adoop格式化時(shí)會(huì)重新建立NameNoteID.而tmp里還包含上次格式化留下的信息。格式化雖然清空了NameNote的數(shù)據(jù),但是保留了DateNote的數(shù)據(jù),這樣會(huì)導(dǎo)致啟動(dòng)失敗。
另外,在{HADOOP_HOME}\logs目錄下,NameNode、DataNode、SecondaryNameNode、JobTracker、Tasktracker各有一個(gè)日志文件,當(dāng)出現(xiàn)故障時(shí),分析這些文件也許會(huì)有幫助。