李一清,張 靜
(河西學院 信息技術與傳媒學院,甘肅 張掖 734000)
淺析云計算環境下的數據管理技術
李一清,張靜
(河西學院 信息技術與傳媒學院,甘肅 張掖 734000)
隨著計算機網絡技術的迅速發展,以及人們對計算能力、資源利用效率、資源集中化的迫切需求,云計算應運而生。目前,云計算及云數據管理技術已經成為一種全新的互聯網應用技術模式。本文介紹了云計算的概念和云數據管理的特點,并在此基礎上對互聯網主流的數據管理技術GFS,BigTable和MapReduce等進行分析,最后指出了云數據管理技術的發展前景。
云計算;云數據;數據管理
近年來,隨著互聯網時代信息與數據的飛速增長,用戶對儲存和處理大量數據的要求越來越高,面臨著如何有效的利用更少的資源解決更多的問題,在這種情況下,云計算技術就應運而生了。作為一項正在興起中的技術,云計算以開放的標準和服務為基礎,以互聯網為中心,讓互聯網上的各種計算資源協同工作,共同組成數個龐大的數據中心和計算中心,為各類用戶提供各類安全、快速、便捷的數據存儲和網絡計算等特定服務。云計算綜合了分布式計算,并行計算,網絡存儲等各種技術,所有這些技術為產生更強大的計算能力和服務提供了可能。
對于到底什么是云計算,至少可以找到100種解釋。現階段廣為接受的是美國國家標準與技術研究院(NIST)定義:云計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問,進入可配置的計算資源共享池 (資源包括網絡、服務器、存儲、應用軟件、服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的交互[1]。云計算實質上是給用戶提供像傳統的電力、水、煤氣一樣的按需計算服務,與其不同在于,它是通過互聯網進行傳輸的。目前,云計算的服務形式包括三種:即基礎設施即服務(IaaS),平臺即服務(PaaS)和軟件即服務(SaaS)。
云計算通過互聯網將超大規模的計算能力與資源整合起來形成一個巨大的資源池,并以可信服務的形式按需提供給用戶。因此,大規模的云計算資源是實現云計算服務的基本條件。云計算還需要對分布的、海量的數據進行處理,在大量的數據中找到特定的數據,并分析向用戶提供高效的服務。簡單來說,云計算的數據管理工作就是接受用戶的資源請求,并把特定的資源分配給請求者,云數據管理主要具備以下幾個特點。
2.1資源的海量性
近年來,隨著云計算應用規模的擴大,資源的數據量會呈現爆炸性增長的趨勢。如何有效地改進已有的技術和方法或提出新的技術和方法來高效地管理和處理這些海量數據并從數據中準確地提取信息是很重要的。
2.2數據異構性
在云計算各種各樣的應用中,不同領域不同行業在數據獲取階段所采用的設備、手段和方式都千差萬別,取得的數據在數據形態、數據結構上也就各不相同,最終導致結構化數據、半結構化數據、非結構化數據并存,造成了數據資源的異構性,導致了對數據訪問、分析和處理方式多種多樣。
2.3模糊性
云計算中的數據有明顯的模糊性特征,主要包括數據本身的模糊性、語義匹配的模糊性和查詢分析的模糊性等。為了讓用戶獲得準確的信息,還有待相關技術的革新。
云計算系統對海量數據進行處理、分析后向用戶提供高效的服務。因此,數據管理技術必須能夠高效的管理海量數據。面對復雜的數據管理工作,數據管理技術應用而生。目前,云計算系統中的數據管理技術主要是GoogleFileSystem,BigTable,MapReduce,Dynamo等技術。
3.1GFS技術
GFS(GoogleFileSystem)是Google公司為了存儲海量搜索數據而設計的專用文件系統,是一個可擴展的分布式文件系統,用于訪問大型的、分布式的數據。它使用廉價的商用硬件搭建系統并向大量用戶提供容錯的高性能服務,并與MapReduce以及BigTable等技術緊密結合。為保證云計算的高可用性,GFS采用分布式存儲的方式來存儲數據;為保證云計算的高可靠性,GFS采用數據冗余技術來存儲數據,每份數據在系統中保存3個以上的備份。
一個GFS集群由一個Master(主服務器)和大量的ChunkServer(數據塊服務器)構成,并被許多Client(客戶端)訪問。Master是GFS的管理節點,在邏輯上只有一個,它保存系統的所有元數據,負責整個文件系統的管理,是整個GFS文件系統的核心。Master所保存的元數據主要包括名字空間、訪問控制信息以及當前Chunk的位置信息等。
GFS技術的一次簡單讀取的過程,即Client通過Master節點,獲取將要與之進行交互的Chunk Server的位置信息,然后直接訪問這些 Chunk Server完成數據存取,所以客戶端與Master之間只有控制流而無數據流,GFS的這種設計方法實現了控制流和數據流的分離,極大地降低了Master的負載,使之不成為系統性能的一個瓶頸。之后客戶端發送請求到其中的一個副本處,一般會選擇最近的,請求信息包含了Chunk標識和字節范圍。在對這個Chunk的后續讀取操作中,客戶端不必再和Master節點通訊了,除非緩存的元數據信息過期或者文件被重新打開。實際上,Client通常會在一次請求中查詢多個Chunk信息,Master節點的回應也可能包含了這些被請求的Chunk信息。
3.2BigTable技術
BigTable是Google設計的分布式數據存儲系統,是建立在GFS和MapReduce之上,用來處理海量的數據的一種非關系型的數據庫。確切的說BigTable更像是一個規模超過1PB(1024TB)的龐大的表。它將所有數據都作為對象來處理,形成一個巨大的表格。對于BigTable技術,Google給出了如下定義:BigTable是一種為了管理結構化數據而設計的分布式存儲系統,這些數據可以擴展到非常大的規模。例如在數千臺商用服務器上的達到PB (Petabytes)規模的數據[2]。
BigTable的數據模型是一個有序的、稀疏的、持久化存儲的多維度的映射表。該數據模型由行(row)、列族(columnfamilies)和時間戳(timestamps)這幾個基本元素來進行三維定位。行是劃分BigTable內容的標準,同時將多個行組成一個小表,保存到某一個服務器節點中,這個小表就被稱為Tablet[3];Tablet是數據分布和負載均衡調整的最小單位;列族由同一類型的列關鍵字組成,是訪問控制的基本單位。時間戳用來存儲同一份數據的不同版本,不同版本的數據按照時間戳倒序排序,即最新的數據排在最前面。時間戳的類型是64位整形。
BigTable的執行包括了三個主要的組件:鏈接到客戶程序中的庫、一個Master服務器和多個Tablet服務器。Master服務器主要負責為Tablet服務器分配Tablets、對Tablet服務器進行負載平衡、探測新加入的或者過期失效的Tablet服務器、以及對保存在GFS上的文件進行垃圾回收等。每個Tablet服務器負責處理它所加載的Tablet的讀寫操作,以及對過大的Tablets進行分割。客戶端讀取的數據都不經過Master服務器,客戶程序直接和Tablet服務器進行交互。由于BigTable的客戶程序不必通過Master服務器來獲取Tablet的位置信息,因此Master服務器的負載很輕。
3.3MapReduce技術
MapReduce是云計算的核心計算模式,是一種用于大規模數據集(大于1TB)的并行運算編程模型和計算框架。MapReduce對海量數據處理思想即分而治之,體現在對作業的處理過程中即把處理作業的過程分為Map(映射)過程和Reduce(規約)過程。即先通過用戶自定義的Map函數將數據切割成不相關的區塊,分配給大量計算機處理達到分布運算的效果,再通過用戶自定義的Reduce函數將結果匯總,輸出開發者需要的結果[4]。
一個Mapreduce程序首先會把輸入的用戶輸入數據集切分成若干獨立的數據塊,數據塊大小一般為16MB到64MB。第一階段由作業服務器調度任務服務器讀取切分好的輸入數據塊并執行map任務,然后將map任務輸出保存在本地;第二階段由作業服務器調度任務服務器執行 reduce任務,reduce任務服務器讀取第一階段輸出文件并執行reduce任務,將結果寫入輸出目錄文件中。
在新興的云計算數據管理領域,GFS、BigTable、MapReduce、Dynamo這四種技術對云計算海量數據的問題和應用特點有了很多創新,綜合來看它們主要運用于云計算的以下四個層次。
4.1數據組織與管理
采用分布式的存儲技術可用于大型的、分布式的、對大量數據進行訪問的應用,類似GFS。它運行于各種類似的普通硬件上,提供容錯功能,為用戶提供可靠、高并發和高性能的數據并存取訪問。
4.2數據集成與管理
針對數據的非確定性、分布異構性、海量、動態變化等特點,采用分布式管理技術,如BigTable、Dynamo技術對大數據進行處理、分析,為用戶提供高效的服務[5]。
4.3分布式并行處理
為了高效地在分布式環境下進行數據的定位和處理,采用云計算的并行編程模式,如MapReduce,將任務分成多個子任務,通過映射和化簡這兩步來實現任務在大規模計算節點的調度與分配。
4.4數據分析
用戶應用云資源需要對云數據進行分析和挖掘,通過語義分析技術,定位所需要的數據資源,從而從大量的結構化的、半結構化的文本、圖形、和圖像數據中提取潛在的、事先未知的、有用的數據。
GFS、BigTable、MapReduce、Dynamo是云計算的關鍵技術,但是它們還是存在一系列的問題有待解決。
在GFS技術當中,雖然高冗余度能提高數據的可靠性,但是也會導致數據操作不一致性的問題,多個數據備份副本對使用者權限設置不同,備份出錯將導致數據的不一致帶來安全問題。
對于BigTable技術,因為它只對結構化數據起作用,所以會過濾一些半結構化、非結構化數據,導致讀取數據不正確,列存儲方式讀取數據時有時候會導致數據讀取不完整。
MapReduce作為一種較為流行的云計算編程模型,在云計算系統中應用廣闊,但是基于它的開發工具Hadoop并不完善。特別是其調度算法過于簡單,判斷需要進行推測執行的任務的算法造成過多任務需要推測執行,降低了整個系統的性能。而且Mapreduce技術將任務分成多個子任務完成時,各個子任務間處理速度的差異導致安全問題。
Dynamo技術以簡單的鍵/值方式存儲數據,導致它不支持復雜的查詢,這一點它是不能與BigTable同日而語的。Dynamo是完全的分布式、去中心化,但它的很多一致性問題又都是去中心化設計所導致的,所以采用中心化還是去中心化還有待研究。
6.1數據存儲更安全可靠
支撐云計算的是大規模的集群計算系統,隨著云計算資源的不斷增長,云計算規模也要隨著擴大,存儲的資源越來越多,數據安全可靠很可能成為云計算的一個瓶頸問題,為更好地解決這個問題,各式各樣的云數據管理技術在競爭中相繼產生。
6.2對海量數據的準確定位
云計算需要對分布的、海量的數據進行處理、分析,現在的云數據管理技術都存在著搜尋信息的模糊性。在規模巨大的數據中準確無誤地找到特定的數據,并且支持復雜的查詢,云數據管理技術肯定要適應這個潮流。
6.3數據的自我管理
云計算中管理任務復雜,大多數情況下,由于云系統中機器數量太大,數據庫管理員和系統管理員很難對所有機器進行全面周全的人工干預,所以迫切地需要一種云數據管理技術對云計算實行自動管理數據。
6.4能夠處理多結構化數據
云數據管理技術不再是只單純地處理一種結構的數據,而是從結構化、半結構化或非結構的數據中都能提取出有用信息,并且能保證處理速度迅速,保證數據的一致性。
云計算是基于多種技術的新興計算模式,所帶來的新興IT資源共享和應用模式是互聯網之后的又一次變革,將極大地促進IT產業特別是軟件服務業的發展。隨著云計算的流行和云數據管理技術的逐漸成熟,相信在不久的將來,云計算基于互聯網的應用將會逐漸滲透到每個人的生活中,對我們的服務、生活都會帶來深遠的影響。
[1] MichaelMiller.云計算[M].機械工業出版社.2009.4
[2] 陳全,鄧倩妮.云計算及其關鍵技術[J].計算機應用,2009,29(9):2562-2567.
[3] 陳康,鄭緯民.云計算:系統實例與研究現狀[J].軟件學報,2009,20(5):1337-1348.
[4] 李成華,張新訪,金海,等.MapReduce:新型的分布式并行計算編程模型[J].計算機工程與科學,2011,33(3):129-135.
[5] 劉正偉,文中領,張海濤.云計算和云數據管理技術[J].計算機研究與發展,2012,49(1):26-31.
TP393