周奇年 ,陳玲玲 ,李 革
(1.浙江理工大學(xué)信息電子學(xué)院 杭州 310018;2.浙江理工大學(xué)機械與控制學(xué)院 杭州 310018)
近年來,由于數(shù)據(jù)的快速增長以及用戶對計算機計算能力的要求越來越高,如何提高普通計算機快速處理復(fù)雜問題的能力變成了一個極其重要的問題,為此,云計算應(yīng)運而生。云計算能夠改變普通用戶使用計算機的模式,為用戶提供按需分配的計算能力、存儲能力及應(yīng)用服務(wù)能力,目的是方便用戶,大大降低用戶的軟、硬件采購費用[1]。
云計算中的“云”就是指計算機群,每一個機群都包括幾十萬臺甚至上百萬臺計算機。在云計算中,用戶所處理的數(shù)據(jù)并不存儲在本地,而是存儲在“云端”,所需的應(yīng)用程序并不是運行在個人計算機上,而是運行在“云端”。用戶可以通過任意一臺連接到互聯(lián)網(wǎng)的終端來訪問 “云”中的數(shù)據(jù)以及使用“云”中的應(yīng)用軟件,而不必依賴某一臺特定的計算機來訪問處理自己的數(shù)據(jù)。云計算的應(yīng)用無疑給我們的生活帶來了許多方便,我們不會再有由于硬盤壞損、斷電等造成資料丟失的困擾,也不用擔(dān)心計算機病毒,因為“云”會為我們存儲數(shù)據(jù),并且將數(shù)據(jù)備份到不同的機架上,在“云”端有專業(yè)人員對應(yīng)用程序進(jìn)行維護(hù)升級。但是,由此帶來的一些信息安全問題,我們也不能忽視,處理不好就會阻礙云計算的發(fā)展。
近年來,各知名IT企業(yè)都在大力開發(fā)和推進(jìn)云計算,如IBM推出的 “藍(lán)云”計劃,亞馬遜推出的彈性計算云(EC2)服務(wù),Google推出Google Apps的企業(yè)服務(wù)平臺等。目前,初步的云計算產(chǎn)品已經(jīng)投入使用,但云計算還處在發(fā)展階段,各項技術(shù)還不夠成熟。
云計算沒有統(tǒng)一的定義,不同的企業(yè)可根據(jù)自己強調(diào)的云計算服務(wù)模式而給出不同的定義,但是云計算的最終目的還是服務(wù)用戶。下面給出一種云計算的定義:云計算是由一系列可以動態(tài)升級和被虛擬化的資源組成,這些資源被所有云計算的用戶共享,并且可以方便地通過網(wǎng)絡(luò)訪問,用戶無需掌握云計算的技術(shù),只需要按照個人或者團體的需要租賃云計算的資源[2]。在云計算中,用戶通過虛擬平臺來使用網(wǎng)絡(luò)資源、計算資源以及存儲資源等,這就相當(dāng)于在操作自己的計算機。
云計算是對分布式處理、并行處理、網(wǎng)格計算及分布式數(shù)據(jù)庫的改進(jìn)處理,其前身是利用并行計算,解決大型文體的網(wǎng)格計算和將計算資源作為可計量的服務(wù)提供的功用計算,是在互聯(lián)網(wǎng)寬帶技術(shù)和虛擬化技術(shù)高速發(fā)展后萌生出來的[3]。云計算可為我們提供眾多的服務(wù),如SaaS(軟件即服務(wù))、PaaS(平臺即服務(wù))以及 MSP(管理服務(wù)提供商)等,這些服務(wù)都可使得用戶更加專注于自己的創(chuàng)新,而不必?fù)?dān)心一些繁瑣的細(xì)節(jié),極大地降低了成本。
云計算的特點是要求云數(shù)據(jù)管理技術(shù)必須能管理大數(shù)據(jù)集,使得云數(shù)據(jù)管理具有一些共同的特點,如:計算資源的可伸縮性、數(shù)據(jù)具有備份以及數(shù)據(jù)存儲在大量的分布節(jié)點上等。
現(xiàn)行最著名的云數(shù)據(jù)管理技術(shù)是Google提出的BigTable技術(shù)。 BigTable是建立在GFS、Scheduler、LockService和MapReduce之上的一個大型的分布式數(shù)據(jù)庫,它將所有數(shù)據(jù)都作為對象來處理,形成一個巨大的表格,用來結(jié)構(gòu)化數(shù)據(jù)。Google給出了如下定義:“BigTable是一種為了管理結(jié)構(gòu)化數(shù)據(jù)而設(shè)計的分布式存儲系統(tǒng),這些數(shù)據(jù)可以擴展到非常大的規(guī)模,例如在數(shù)千臺商用服務(wù)器上的達(dá)到PB (Petabytes)規(guī)模的數(shù)據(jù)[4]。”現(xiàn)在,有很多Google的應(yīng)用程序建立在BigTable之 上 ,例 如 Web Indexing、Personalized Search、Google Earth、Orkut和RSS 閱讀器等。
從結(jié)構(gòu)上看,BigTable是一個有序、稀疏、多維度的映射表,在設(shè)計上具備很好的伸縮性以及高可用性等特點。主要包含三個基本元素,即行(row)、列(column)和時間戳(timestamps)。行是劃分BigTable內(nèi)容的標(biāo)準(zhǔn),同時將多個行組成一個小表,保存到某一個服務(wù)器節(jié)點中,這一個小表就被稱為Tablet;列名具有兩層結(jié)構(gòu),即family:optional_qualifier,family是一個訪問控制單元,與數(shù)據(jù)類型有關(guān),為了增強可讀性,optional_qualifier是在有必要時增加的索引;時間戳用來存儲數(shù)據(jù)的不同版本。BigTable管理數(shù)據(jù)的存儲結(jié)構(gòu)為:(row:string,column:string,time:int64)→string。BigTable 中的數(shù)據(jù)模型如圖1所示。
BigTable的實現(xiàn)主要由3個部分組成,即一個鏈接到每個客戶端的庫、一個主服務(wù)器和多個Tablet服務(wù)器。主服務(wù)器主要負(fù)責(zé)給Tablet服務(wù)器分配任務(wù)并使其達(dá)到負(fù)載平衡,探測Tablet服務(wù)器的添加或終結(jié)狀態(tài)以及垃圾回收等。Tablet服務(wù)器可以被動態(tài)地添加或刪除。每個Tablet服務(wù)器管理10到1 000個Tablet,它負(fù)責(zé)處理Tablet的讀寫請求,并將非常大的Tablet進(jìn)行分割,以滿足需要。在實現(xiàn)的過程中,客戶端數(shù)據(jù)并不通過主服務(wù)器,而是直接與Tablet服務(wù)器進(jìn)行交互。事實上,大部分的客戶端并不與主服務(wù)器進(jìn)行交互,而使得主服務(wù)器的負(fù)載很輕。
BigTable利用三層模型來存儲Tablet的位置信息,如圖2所示。
其中,Chubby中存儲著Root tablet的位置信息,Root table中存儲著Metadata tables中所有Tablet的位置信息,Root tablet是Metadata tables中的第一個表,且不會被分割,Metadata tables中存儲著許多User Table的位置信息。因此,當(dāng)用戶讀取數(shù)據(jù)時,需先從Chubby中讀取Root tablet的位置信息,然后逐層往下讀取,直至找到所需數(shù)據(jù)為止。
BigTable在執(zhí)行任務(wù)時,在任意時刻每個Tablet只被分配到一個Tablet服務(wù)器,主服務(wù)器對Tablet服務(wù)器的活動狀態(tài)進(jìn)行監(jiān)控,及時處理出現(xiàn)故障的服務(wù)器,同時也對未分配任務(wù)的記錄板進(jìn)行監(jiān)控,并且清楚地知道當(dāng)前Tablet服務(wù)器對Tablet的分配情況,以調(diào)節(jié)Tablet服務(wù)器的負(fù)載平衡。
Hadoop主要包括兩個部分:Hadoop分布式文件系統(tǒng)(hadoop distributed file system,HDFS)和MapReduce編程模型。Hadoop設(shè)計時有以下幾點的假設(shè):服務(wù)器失效是正常的,存儲和處理的數(shù)據(jù)是海量的,文件不會被頻繁寫入和修改,機柜內(nèi)的數(shù)據(jù)傳輸速度大于機柜間的數(shù)據(jù)傳輸速度,在海量數(shù)據(jù)的情況下移動計算比移動數(shù)據(jù)更有效[1]。Hadoop文件系統(tǒng)的整體結(jié)構(gòu)如圖3所示。
由圖3可知,HDFS是由一個Namenode(命名節(jié)點)和多個Datanode(數(shù)據(jù)節(jié)點)組成的。Namenode存儲著文件系統(tǒng)的元數(shù)據(jù),它的作用就像是文件系統(tǒng)的總指揮,維護(hù)文件系統(tǒng)命名空間、規(guī)范客戶對于文件的存取和提供對于文件目錄的操作;Datanode中存儲著實際的數(shù)據(jù),負(fù)責(zé)管理存儲結(jié)點上的存儲空間和來自客戶的讀寫請求。Datanode也執(zhí)行塊創(chuàng)建、刪除和來自Namenode的復(fù)制命令。
由于Hadoop將服務(wù)器失效看成是一種常態(tài),因此,在大多數(shù)情況下,數(shù)據(jù)會有3個副本:HDFS采用的副本存放策略是將一個副本存儲在本地機架的一個節(jié)點上,一個副本存儲在同一機架的不同節(jié)點上,最后一個副本存儲在不同機架的一個節(jié)點上。由于機架的錯誤遠(yuǎn)遠(yuǎn)比節(jié)點的錯誤少,這個策略不會影響到數(shù)據(jù)的可靠性和有效性。三分之一的副本在一個節(jié)點上,三分之二在一個機架上,其他保存在剩下的機架中,這一策略最大限度地避免了數(shù)據(jù)丟失及在節(jié)點失效后的恢復(fù)。在執(zhí)行任務(wù)時,主節(jié)點會不斷地通過心跳檢測監(jiān)控子節(jié)點的狀態(tài),并對子節(jié)點進(jìn)行管理。
Hadoop在對數(shù)據(jù)處理上采用的是計算向存儲遷移的策略,在Hadoop中由于有HDFS文件系統(tǒng)的支持,數(shù)據(jù)是分布存儲在各個節(jié)點的,計算時各節(jié)點讀取存儲在自己節(jié)點上的數(shù)據(jù)進(jìn)行處理,或?qū)⒂嬎氵w移到距離數(shù)據(jù)更近的位置,而不是將數(shù)據(jù)移動到應(yīng)用程序運行的位置,從而避免了大量數(shù)據(jù)在網(wǎng)絡(luò)上的傳遞,實現(xiàn)了“計算向存儲遷移”。
在云計算中,數(shù)據(jù)首先遇到的是數(shù)據(jù)分類問題,數(shù)據(jù)分類是將數(shù)據(jù)標(biāo)志為是否需要分割存儲的數(shù)據(jù)類型,如需分割,則將數(shù)據(jù)進(jìn)行分割存儲,分割信息存儲在一個表中,分割的小數(shù)據(jù)塊進(jìn)行復(fù)制,存儲在系統(tǒng)的不同地方。當(dāng)有任務(wù)時,將分割的數(shù)據(jù)塊進(jìn)行整合,且計算向存儲遷移,數(shù)據(jù)不需要在網(wǎng)絡(luò)中傳送,若正在執(zhí)行任務(wù)的數(shù)據(jù)塊的服務(wù)器損壞,則計算很快地被遷移到該數(shù)據(jù)塊副本所在的服務(wù)器,如此循環(huán),直至完成任務(wù),系統(tǒng)匯總后將計算結(jié)果反饋給用戶。具體過程如圖4所示。
由此可知,在云計算中,對數(shù)據(jù)的主要操作有分類、分塊、計算與存儲,下面分別介紹數(shù)據(jù)副本的存放策略、文件的分塊以及數(shù)據(jù)的隔離技術(shù)。
圖4 數(shù)據(jù)在云計算中的“旅程”
由于在同一個云計算系統(tǒng)中存在著不同類型的客戶(企業(yè)和個人)。不同用戶對數(shù)據(jù)安全性的要求不一樣,而且支付能力也不同,因此要求云計算系統(tǒng)能為不同用戶提供不同級別的數(shù)據(jù)安全保障。可將計算機文件的安全級別劃分為幾個等級,如單機級、跨服務(wù)器級、跨機柜級以及跨數(shù)據(jù)中心級[1]。對于未實行分塊存儲的小型文件,可以考慮采用安全級別不高的單機級存儲安全策略;而對于安全性要求高的文件,可以采用跨機柜級甚至是跨數(shù)據(jù)中心級的存儲安全策略。采用何種安全級別,需根據(jù)用戶對數(shù)據(jù)的不同要求而定,這體現(xiàn)了云計算按需服務(wù)的理念。
何時該對文件進(jìn)行分塊存儲以及怎樣分塊,需由文件的上傳和下載速度決定。對于小文件以及頻繁存取的數(shù)據(jù),我們可以不考慮分塊,因為分塊存儲后反而會使系統(tǒng)的效率大大降低。文件實現(xiàn)分塊存儲的原因主要是利用各硬盤的讀取速度,提高總體讀取數(shù)據(jù)的速度,減少讀取數(shù)據(jù)的時間。文件分塊運算的地點是集群主服務(wù)器,由主服務(wù)器來維護(hù)文件的分塊策略。
在云計算中,數(shù)據(jù)都處于共享的環(huán)境中,在同一時刻,可能有許多用戶在共享著同樣的資源,要使這些用戶在云計算平臺中獨立地運行而不出現(xiàn)數(shù)據(jù)和計算的交叉,數(shù)據(jù)的隔離技術(shù)顯得至關(guān)重要。在云計算應(yīng)用中,采用一種目錄映射的單向指針分層用戶隔離的方法,即通過設(shè)置文件目錄同一層和不同層節(jié)點的訪問權(quán)限來達(dá)到數(shù)據(jù)隔離的目的。
在云計算這種新型的商業(yè)模式下,公司和個人都可以進(jìn)行存儲空間和計算能力的租借,只需要一個簡單的終端,而不需耗費大量的投資去構(gòu)造和準(zhǔn)備大規(guī)模的計算機設(shè)備?,F(xiàn)有的存儲系統(tǒng)和數(shù)據(jù)庫系統(tǒng)都存在著缺陷,如擴展性不好、成本高等,因此,如何有效地存儲和分析大規(guī)模的數(shù)據(jù),如何在海量數(shù)據(jù)中找到特定的數(shù)據(jù),變成了一個很有挑戰(zhàn)性的技術(shù)問題,迫切需要新一代的云存儲和云數(shù)據(jù)管理系統(tǒng)。同時,由于云存儲和云數(shù)據(jù)管理通常要面臨多種不同的應(yīng)用,還需針對各種應(yīng)用分別做出優(yōu)化,可以說,云計算和云數(shù)據(jù)管理技術(shù)還有很長的路要走。
云計算具有廣闊的應(yīng)用前景、海量的存儲、高速的計算和數(shù)據(jù)安全等特點,這些也是云計算在今后的發(fā)展中需要努力的方向。云計算根據(jù)按需服務(wù)的理念而設(shè)計,必將得到更大的發(fā)展。
1 王鵬.云計算的關(guān)鍵技術(shù)與應(yīng)用示例.北京:人民郵電出版社,2010
2 云計算和云數(shù)據(jù)管理中面臨的挑戰(zhàn),http://cloud.it168.com/a2010/0428/879/000000879838.shtml,2010
3 王鵬.走進(jìn)云計算.北京:人民郵電出版社,2009
4 陳全,鄧倩妮.云計算及其關(guān)鍵技術(shù).計算機應(yīng)用,2009,29(9):2 562~2 567
5 Chang F,Dean J,Ghemawat S,et al.BigTable:a distributed storage system forstructured data.ACM Transactions on Computer Systems,2008,26(2):1~26
6 Dean J,Ghemawat S.MapReduce: simplified data processing on large clusters.In:Proceedings of the 6th Symposium on Operating System Design and Imp Lementation.New York ACM Press,2004
7 Apache Hadoop,http://hadoop.apache.org,2009
8 曹強,黃建忠,萬繼光等.海量網(wǎng)絡(luò)存儲系統(tǒng)原理與設(shè)計.武漢:華中科技大學(xué)出版社,2010
9 孫少陵,羅治國,徐萌等.云計算及應(yīng)用的研究與實現(xiàn).電信工程技術(shù)與標(biāo)準(zhǔn)化,2009(11):2~7
10 葛慧.云計算的信息安全.硅谷,2009(2):42~43