摘 要:本文簡要介紹了云存儲的概念以及云存儲相關技術,分析了Hadoop與OpenStack各自的優(yōu)缺點,最后提出了Hadoop與OpenStack云存儲整合的兩種方式,為今后云存儲建設開拓了思路。
關鍵詞:Hadoop;OpenStack;云計算;云存儲;Sahara
中圖分類號:TP333
隨著信息時代的快速發(fā)展,各種信息需求越來越大,數(shù)據(jù)量也隨之呈幾何級快速增長,同時對數(shù)據(jù)的安全性、可靠性、擴展性等提出了新的要求,傳統(tǒng)的存儲模式越來越無法滿足如今復雜多變的網(wǎng)絡環(huán)境,云存儲集高可靠性、高效率、高數(shù)據(jù)安全性以及更強的適應性為一體,贏得了廣大用戶的青睞。
1 云存儲概述
云存儲是在云計算(cloud computing)概念上延伸和發(fā)展出來的一個新的概念。它利用網(wǎng)格技術、集群技術和分布式文件系統(tǒng)等技術,將網(wǎng)絡中大量各種不同類型的存儲設備組織起來協(xié)同工作,對外提供統(tǒng)一的數(shù)據(jù)存儲服務和業(yè)務訪問功能。云存儲是一個以數(shù)據(jù)存儲和管理為核心的云計算系統(tǒng),當云計算系統(tǒng)處理海量數(shù)據(jù)時,就需要配置大量存儲設備,這時云計算系統(tǒng)就轉(zhuǎn)化為一個云存儲系統(tǒng)。
2 云存儲模式與傳統(tǒng)存儲模式比較
相對傳統(tǒng)存儲模式,云存儲模式具有以下特點:第一,從功能需求來看,云存儲模式面向多種類型的網(wǎng)絡在線存儲服務,而傳統(tǒng)存儲模式則面向高性能計算、事務處理等應用;第二,從性能需求來看,云存儲模式具有高可靠性、高效率、高數(shù)據(jù)安全性,在網(wǎng)絡環(huán)境復雜多變,用戶規(guī)模龐大、服務范圍廣的業(yè)務中具有更強的適應性。第三,從數(shù)據(jù)管理來看,云存儲模式不僅支持傳統(tǒng)文件的訪問方式,而且還支持海量數(shù)據(jù)的管理并提供公共服務支撐功能,以方便云存儲系統(tǒng)后臺數(shù)據(jù)的維護。
3 云存儲相關技術
3.1 Hadoop架構
Hadoop是Apache Lucene下的一個開源分布式計算框架,它是Nutch項目的一部分,專門負責對大量不同類型的數(shù)據(jù)(結(jié)構化、非結(jié)構化等)進行分布式處理。
Hadoop框架由許多元素組成,其中最核心的設計就是MapReduce和HDFS。
MapReduce是一個大型分布式數(shù)據(jù)處理模型,它在數(shù)據(jù)處理過程中發(fā)揮著重要的作用,被譽為大數(shù)據(jù)處理背后最具影響力的“發(fā)動機”。MapReduce將一個任務分解多個任務進行處理,然后將這些任務處理的結(jié)果進行分析匯總得出最后的結(jié)果。
HDFS(Hadoop Distributed File System)是Hadoop分布式文件系統(tǒng)的縮寫。HDFS有著高容錯性的特點,可以在低廉的硬件上進行部署。它為訪問有著超大數(shù)據(jù)集的應用程序數(shù)據(jù)時提供高傳輸率,而且HDFS允許以流的形式訪問文件系統(tǒng)中的數(shù)據(jù)。在處理大數(shù)據(jù)的過程中,HDFS可為Hadoop集群發(fā)生故障錯誤時提供數(shù)據(jù)冗余功能,整個計算過程不會因為某個服務器出現(xiàn)故障而終止。另外,HDFS支持的數(shù)據(jù)存儲格式并沒有太多的限制,結(jié)構化以及非結(jié)構化的數(shù)據(jù)均可。
在實際過程中,HDFS與MapReduce往往是結(jié)合在一起的,這樣能最大發(fā)揮它們各自的優(yōu)勢。
3.2 OpenStack
OpenStack是一整套開源軟件項目的綜合,它用來建設和管理公共云以及私有云,它簡化了云的部署過程并為其帶來良好的可擴展性。
OpenStack由一組開源項目構成,他們分別是Nova、Swift、Glance。
Nova(計算服務):是一套云組織的控制器,它為部署云提供工具,包括管理網(wǎng)絡、運行實例以及控制用戶和其它項目對云的訪問。
Swift(存儲服務):是一個可擴展的對象存儲系統(tǒng)。它通過內(nèi)置的冗余及容錯機制在大規(guī)模可擴展系統(tǒng)中實現(xiàn)對象存儲。Swift支持多種應用,比如復制和存檔數(shù)據(jù),圖像或視頻服務,存儲次級靜態(tài)數(shù)據(jù),開發(fā)數(shù)據(jù)存儲整合的新應用,存儲容量難以估計的數(shù)據(jù),為Web應用創(chuàng)建基于云的彈性存儲。因為沒有中心單元或者主控結(jié)點,swift提供了更強的擴展性、冗余和持久性。
Glance(鏡像服務):是一個虛擬機鏡像的存儲、查詢和檢索系統(tǒng),服務包括的RESTfulAPI允許用戶通過HTTP請求查詢VM鏡像元數(shù)據(jù),以及檢索實際的鏡像。
4 HDFS和Swift整合
4.1 HDFS和Swift優(yōu)缺點
HDFS雖然有著許多優(yōu)點,但也存在著一些缺點。首先,HDFS是用來處理大吞吐量的離線數(shù)據(jù),它需要犧牲一定的延時為代價,因此它不太適合哪些對延時有較高要求的應用程序。其次,HDFS被設計用來處理大數(shù)據(jù)文件,它通常對大文件進行優(yōu)化,而在處理大量小文件時反而會使其耗費更多內(nèi)存,從而影響數(shù)據(jù)處理的效率。此外,HDFS中一次只能寫入一個文件,不支持多用戶并發(fā)寫入。相反,Swift用來存儲多個任意大小文件的數(shù)據(jù),而且支持對文件多用戶并發(fā)寫入,但Swift沒有目錄結(jié)構,不支持嵌套,也不支持文件的重寫,只能新建,不支持服務器上的數(shù)據(jù)查詢和處理,而且當容器的對象超過100萬個時,其性能就會急劇下降。因此,如果能將HDFS和Swift存儲進行整合,可極大提高云存儲的數(shù)據(jù)處理效率,降低硬件成本。
4.2 HDFS和Swift整合方式
由于HDFS采用Java編寫,而Swift采用Python編寫,因此它們之間互不兼容。通常情況下,要想使用Hadoop對Swift中存儲的大量數(shù)據(jù)進行處理,一般先將Swift中的數(shù)據(jù)導出到中間服務器,然后再將這些數(shù)據(jù)導入到HDFS中,最后才能通過MapReduce技術對這些數(shù)據(jù)進行分布式處理。這種方法在處理少量數(shù)據(jù)時有一定的可用性,但在處理大量數(shù)據(jù)時,導出和導入數(shù)據(jù)的過程需要耗費大量的時間,而且還會耗費更多額外的存儲。
為此,我們可以設計一個Swift對象適配器(Adapter),用來進行接口適配,將Swift中類的接口轉(zhuǎn)變成Hadoop所希望的另一個接口,使得原本兩個因為接口而不兼容的類能夠在一起工作。
Swift雖然采用Python語言編寫,但是也提供了多種編程語言的客戶端API,其中Swift的Java客戶端API是一個名叫Java-cloudfiles的開源項目,它支持對Swift存儲的各種操作。
Swift適配器的作用就是調(diào)用Swift的Java客戶端API,實現(xiàn)了對Swift存儲的操作,Hadoop MapReduce API調(diào)用Hadoop FileSystem API,對于MapReduce來說,底層的HDFS和Swift都是透明的。適配器所在層次結(jié)構如圖所示。
圖1
通過Swift適配器,將高可用的Swift對象存儲作為Hadoop的底層存儲系統(tǒng),使得Hadoop在存儲層面具有了高可用性。把Swift適配器部署到已有的Hadoop集群中是簡單快捷的。原本用來分析存儲在HDFS中的數(shù)據(jù)的MapReduce應用程序,也無需修改即可分析存儲在Swift中的數(shù)據(jù)。
另一種更為有效的方法就是采用Sahara方案。Sahara是在2013年由全球三大公司Hortonworks、Mirantis、紅帽公司聯(lián)合發(fā)起的,共同致力于在OpenStack上實現(xiàn)Apache Hadoop的一個項目,它旨在為OpenStack用戶提供一種簡單、快捷地部署以及管理Hadoop集群的方案,加快Hadoop在OpenStack上的開發(fā)和部署進程。
Sahara主要由以下五個部分組成:
Horizon:為Sahara提供圖形化的管理界面。
Keystone:提供用戶身份認證功能,為不同的OpenStack用戶分配特定的使用權限。
Nova:為Hadoop集群提供虛擬機配置功能。
Glance:用來儲存安裝有OS和Hadoop的虛擬機鏡像。
Swift:可以作為需要進行Hadoop作業(yè)的預存儲。
Sahara項目的架構圖如下:
圖2
通過Sahara,用戶只需要提供一些基本的信息(比如Hadoop版本、集群拓撲、節(jié)點硬件情況等)就可在幾分鐘內(nèi)快速建立起集群,而且還可以根據(jù)用戶需求隨意對集群進行擴展(增加或者刪除工作節(jié)點),有效降低硬件成本,極大的提高計算資源的利用率。
5 結(jié)束語
雖然Hadoop和OpenStack的存儲技術各有自己的優(yōu)缺點,但OpenStack和Hadoop的融合,不僅能充分利用對方的優(yōu)點,而且還能有效的規(guī)避對方的缺點,既能最大限度提高了存儲資源利用率,又能大大降低大數(shù)據(jù)處理的準入門檻。
參考文獻:
[1]高新成,王莉利.基于Hadoop的校園云存儲系統(tǒng)的研究[J].陜西理工學院學報(自然科學版),2012(04).
[2]劉琨,李愛菊,董龍江.基于Hadoop的云存儲的研究及實現(xiàn)[J].微計算機信息,2011(07).
[3]歐陽帆,楊奕,董龍江.為Hadoop的存儲層增加對OpenStack Swift的支持[OL].http://www.ibm.com/developerworks/cn/cloud/library/1401_ouyangf_hadoopswift,2014.01.27.
[4]王后明.Sahara將加速OpenStack與Hadoop融合[OL].http://www.chinacloud.cn/show.aspx?cid=14id=15544,2014.04.01.
作者簡介:李金亮(1983.11-),男,湖北人,教員,中級職稱,工學學士,在職研究生,研究方向:計算機應用技術。
作者單位:軍事交通學院,天津 300161