基于虛擬化與分布式技術(shù)的存儲系統(tǒng)
摘要:介紹了一套基于云計算(cloud computing)技術(shù)的數(shù)據(jù)應(yīng)用平臺系統(tǒng)設(shè)計方案。該系統(tǒng)由多組服務(wù)器集群組成,可提供數(shù)據(jù)存儲、備份和并行運算服務(wù)。并可采用虛擬化應(yīng)用端與分布式(Hadoop)技術(shù)相結(jié)合的方式為用戶提供高容量和異構(gòu)應(yīng)用存儲系統(tǒng),以便結(jié)合iSCSI協(xié)議在硬件層獲得更靈活的部署。
關(guān)鍵詞:虛擬化;數(shù)據(jù)處理;分布式存儲;云計算
0 引言
通過FreeBSD系統(tǒng)搭建開源的Hadoop存儲應(yīng)用基礎(chǔ),依托在服務(wù)器虛擬化(VMware)的平臺上進行運行,這樣能夠擁有更快、更穩(wěn)定、更安全的硬件保障,使用iSCSI技術(shù),盡可能降低存儲部署成本。本系統(tǒng)利用VMware虛擬化平臺將服務(wù)器硬件存儲資源進行整合,通過建立Lun將服務(wù)器的磁盤陣列進行劃分,組成多個磁盤邏輯,然后通過在Lun上安裝FreeBSD操作系統(tǒng)及搭建iSCSI服務(wù)器端,使得存儲硬件資源能夠靈活地應(yīng)用在Hadoop系統(tǒng)中。Hadoop將部署在虛擬化硬件平臺上構(gòu)成一個分布式的文件系統(tǒng),通過WebDAV協(xié)議建立與客戶端服務(wù)器的應(yīng)用通信。用戶可以通過訪問客戶端服務(wù)器,將文件通過WebDAV以HTTPS方式傳輸?shù)紿adoop存儲集群中保存。
該平臺的設(shè)計充分利用了虛擬化與分布式技術(shù)的特點,采用多層次的模塊化應(yīng)用將整個存儲系統(tǒng)從硬件架構(gòu)到軟件應(yīng)用方式都變得靈活和易擴展,同時又因為虛擬化與分布式技術(shù)本身的安全特性,系統(tǒng)在數(shù)據(jù)安全性上具有先天優(yōu)勢,從而實現(xiàn)數(shù)據(jù)存儲服務(wù)的低成本部署。
1 系統(tǒng)設(shè)計原理
存儲系統(tǒng)采用底層云存儲技術(shù)與應(yīng)用層iSCSI技術(shù)來為用戶提供跨系統(tǒng)應(yīng)用平臺支持。其工作原理如圖1所示。
系統(tǒng)首先由多臺數(shù)據(jù)存儲服務(wù)器通過iSCSI網(wǎng)絡(luò)構(gòu)成一個龐大的數(shù)據(jù)存儲服務(wù)集群,每一臺數(shù)據(jù)服務(wù)器的配置是相同的。當(dāng)數(shù)據(jù)達到存儲池飽和狀態(tài)時,可以將同樣配置的服務(wù)器加入到這個存儲網(wǎng)絡(luò)中,在不改變原有系統(tǒng)運行狀態(tài)下實現(xiàn)擴容。
系統(tǒng)采用VMware ESXi Server虛擬系統(tǒng)作為應(yīng)用服務(wù)器集群底層系統(tǒng),各應(yīng)用服務(wù)器系統(tǒng)可在VMware虛擬系統(tǒng)之上建立邏輯上的關(guān)聯(lián)。 VMware允許多個操作系統(tǒng)并行運行于一臺高性能服務(wù)器之上和多個高性能服務(wù)器運行同一任務(wù),同時通過網(wǎng)絡(luò)對操作系統(tǒng)進行備份和管理,能夠依據(jù)應(yīng)用服務(wù)使用狀況對操作系統(tǒng)實施遷移和復(fù)制,從而擴大網(wǎng)絡(luò)應(yīng)用處理帶寬。
在VMware層上安裝FreeBSD系統(tǒng)平臺搭建Hadoop分布式存儲系統(tǒng),Hadoop系統(tǒng)能將數(shù)據(jù)同時分割成許多小塊和備份,通過點播服務(wù)器(NameNode)存放于不同的數(shù)據(jù)存儲服務(wù)器中。在Hadoop系統(tǒng)中,會有一臺Master,主要負責(zé)NameNode的工作以及JobTracker的工作。Job Tracker的主要職責(zé)就是啟動、跟蹤和調(diào)度各個Slave的任務(wù)執(zhí)行。還會有多臺Slave,每一臺Slave通常具有DataNode的功能并負責(zé)Task Tracker的工作。TaskTracker根據(jù)應(yīng)用要求來結(jié)合本地數(shù)據(jù)執(zhí)行Map任務(wù)以及Reduce任務(wù)。
在NameNode上部署WebDAV應(yīng)用,實現(xiàn)應(yīng)用服務(wù)器對存儲資源的通信,從而讓用戶調(diào)用Hadoop上的數(shù)據(jù)。WebDAV(Web-based Distributed Authoring and Versioning)是基于HTTP 1.1的一個通信協(xié)議。它為HTTP 1.1添加了一些擴展(就是在GET、POST、HEAD等幾個HTTP標準方法以外添加了一些新的方法),使得應(yīng)用程序可以直接將文件寫到Web Server上,從而替代傳統(tǒng)的FTP傳輸文件模式。
2 系統(tǒng)關(guān)鍵技術(shù)實現(xiàn)
存儲平臺通過在Hadoop上部署WebDAV,可實現(xiàn)客戶端(應(yīng)用服務(wù)器)對服務(wù)器端(Hadoop節(jié)點服務(wù)器)的復(fù)制和移動文件,并可進行多用戶同時讀取一個文件等操作。
實施步驟(以四臺服務(wù)器為例,結(jié)合局域網(wǎng)內(nèi)DNS服務(wù)器):
第一步:Hadoop環(huán)境搭建使用Hadoop的用戶,機器名和IP依次為域名vc1(192.168.1.1),域名vc2(192.168.1.2),域名vc3(19 2.168.1.3)和域名vc4(192.168.1.4)。這是因為四臺機器中vc3作為Hadoop的Namenode,其他的作為Datanode。
詳細環(huán)境配置介紹如下:
Hadoop版本為0.20.2;
JDK版本為1.6.0;
操作系統(tǒng)為FreeBSD8.0(最小化安裝)。
ve3(192.168.1.3)是NameNode(Master),其他三臺作為DateNode(slave).
Hadoop是Java語言編寫的機群程序,它的安裝是建立在ssh和JDK之上的,所以在配置Hadoop之前首先要對系統(tǒng)進行ssh和JDK的安裝與配置。
(1)通過ssh來實現(xiàn)Hadoop節(jié)點之間用戶的無密碼訪問
①在各個節(jié)點的/etc/hosts文件中添加節(jié)點IP及對應(yīng)機器名,并在各個節(jié)點上建立相同用戶名與密碼的賬戶。
修改/etc/hosts文件如下:
192.168.1.1 vc1
192.168.1.2 vc2
192.168.1.3 vc3
192.168.1.4 vc4
修改成功后就可以實現(xiàn)IP地址與機器名的對應(yīng)解析。
在各個節(jié)點建立用戶名為Hadoop,密碼為123456的用戶。[!--empirenews.page--]
②實現(xiàn)節(jié)點間通過ssh無密碼訪問。
③測試是否配置成功。
通過ssh+機器名命令測試能否無密碼訪問其他計算機,如果無密碼訪問,則配置成功。
例:vc1使用ssh vc3是否能無密碼訪問vc3,vc3使用ssh vc1是否能無密碼訪問vc1(其他主機方法類似)?
(2)JDK的安裝
在這里利用ports安裝JDK。在安裝時要先下載如下幾個文件:
下載設(shè)置環(huán)境變量,修改/etc/profile文件。在該文件中添加如下代碼:
保存后鍵入命令:
source/etc/profile
使環(huán)境變量設(shè)置生效。
安裝好JDK后可以通過which命令來測試JDK是否安裝成功:
which java
若是第一種方法,則顯示信息如下:
/usr/local/jdk1.6.0/bin/java
若是第二種方法,則顯示信息如下:
/usr/java/jkd1.6.0_12/bin/java
(3)進行Hadoop的安裝和配置。
下載hadoop-0.20.2.tar.gz到/home/hadoop目錄,并解壓:
tar-vxzf hadoop-0.20.2.tar.gz//解壓hadoop到當(dāng)前目錄
解壓完后進入/home/hadoop/hadoop-0.20.2/conf目錄進行配置。
[!--empirenews.page--]
配置文件修改完畢后格式化NameNode(運行Hadoop之前必須先進行格式化),進入/home/hadoop/hadoop-0.20.2/目錄,命令如下:
.bin/hadoop namenode-format
格式化完畢后就可以運行Hadoop了,命令如下:
./bin/start-a11.sh //在/home/hadoop/hadoop-0.20.2/目錄下運行
如果要停止運行如下命令:
./bin/stop-a11.sh //在/home/hadoop/hadoop-0.20.2/目錄下運行
到此,Hadoop的配置已經(jīng)完成了。
第二步:WebDAV部署
(1)修改配置
修改hdfs-webdav.war里面的WEB-INF/classes/hadoop-site.xml。
修改fs.default.name屬性,以確定hdfs-webdav要連接的hadoopNameNode Server。示例:
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.52.129:9000/</value>
<description>namenode</description>
</property>[!--empirenews.page--]
(2)替換hadoop-xxxx-core.jar版本
由于hadoop有自己的rpc遠程調(diào)用實現(xiàn),并且各個版本間可能不兼容(0.17.X與0.18.x之間就不兼容),所以需要將WEB-INF/lib/ha doop-XXXX-core.jar的版本與NameNode Server的版本一致,現(xiàn)war自帶的是hadoop-0.18.1-core.jar的版本。
(3)部署至tomcat
以上修改完,將war包部署至tomcat或是jboss中,部署在其它服務(wù)器中時需要tomcat的catalina.jar與tomcat-coyote.jar,拷貝至WEB-INF/lib目錄,因為現(xiàn)在項目是從tomcat的WebdavServlet中修改而來的。
(4)測試是否部署成功
訪問http://localhost:8080/hdfs-webdav
第三步:webdav客戶端訪問
實現(xiàn)webdav的hdfs可以映射為windows或是linux本地文件夾。
(1)window網(wǎng)上鄰居訪問
打開“網(wǎng)上鄰居”,添加網(wǎng)上鄰居,在“請鍵入網(wǎng)上鄰居的位置”中輸入Web文件夾的URL。
http://loealhost:8080/hdfs-webdav
然后按照向?qū)У奶崾纠^續(xù)下一步就可以了。
(2)Linux mount WebDav為本地文件系統(tǒng)
linux下想要mount WebDAV server為本地文件系統(tǒng),必須要使用davfs2,項目網(wǎng)址為http://day.sourceforge.net/。
安裝davfs2請使用編譯安裝。
davfs2編譯時依賴于neon,neon是一個WebDAV client library.neon網(wǎng)址為http://www.webdav.org/neon/。
dsvfs2在mount時會使用fuse或是coda這兩個文件系統(tǒng),其中一個文件系統(tǒng)linux一般都有自帶,davfs2在mount時會首先嘗試使用fuse,失敗時再使用coda。
但在CentOs中使用coda時發(fā)生如下錯誤,所以后面安裝fuse,fuse網(wǎng)址為http://fuse.sourceforge.net/。
/sbin/mount.davfs:no free coda device to mount
/sbin/mount.davfs:trying fuse kernel file system
/sbin/mount.davfs:can‘t open fuse device
(3)neon,davfs2,fuse編譯安裝
項目的linux_mount_lib目錄自帶如下三個包:
①運行./configure;
②運行make;
③運行make install。
運行davfs2的mount命令
在mount之前,davfs2需要創(chuàng)建davfs2用戶及用戶組
[root@datacenter5 usr]# mkdir/data/hdfs
[root@datacenter5 usr]# groupadd davfs2
[root@datacenter5 usr]# useradd-g davfs2 davfs2
[root@datacenter5 usr]# mount.davfshttp://192.168.55.104:8080/hdfs-webdav/data/hdfs
3 系統(tǒng)應(yīng)用拓補分析
基于服務(wù)器虛擬化(VMware)系統(tǒng),制作出的云存儲陣列,其中云主機控制云系統(tǒng)內(nèi)的服務(wù)器集群,進行數(shù)據(jù)的寫入與讀出,由云主機提供的API接口(主要是WebDAV協(xié)議,也可采用其他協(xié)議)進行與客戶應(yīng)用服務(wù)器之間的數(shù)據(jù)存儲、數(shù)據(jù)備災(zāi)、數(shù)據(jù)應(yīng)用,這樣能夠盡可能地利用云的效率,如圖2所示。
在圖2中,系統(tǒng)應(yīng)用主要分為存儲服務(wù)與應(yīng)用服務(wù)兩部分。存儲服務(wù)主要以Hadoop系統(tǒng)為主,通過應(yīng)用服務(wù)中的局域網(wǎng)DNS構(gòu)建頭節(jié)點與存儲節(jié)點關(guān)系。WebDAV部署在頭節(jié)點服務(wù)器上,通過建立映射可在Windows或Linux系統(tǒng)上建立本地文件夾,從而實現(xiàn)為應(yīng)用服務(wù)器提供存儲服務(wù)功能。
4 結(jié)論
本系統(tǒng)通過集群應(yīng)用、網(wǎng)格技術(shù)或分布式文件系統(tǒng)等功能,將網(wǎng)絡(luò)中大量各種不同類型的存儲設(shè)備通過應(yīng)用軟件集合起來協(xié)同工作,共同對外提供數(shù)據(jù)存儲和業(yè)務(wù)訪問功能。通過虛擬化技術(shù)將iSCSI與云存儲系統(tǒng)結(jié)合,為大型企業(yè)和機構(gòu)提供異地數(shù)據(jù)存儲服務(wù),并且通過云存儲系統(tǒng)平臺為企業(yè)提供跨平臺服務(wù)應(yīng)用解決方案,實現(xiàn)了部署靈活、可擴展性和安全性高的特點,從而降低了數(shù)據(jù)存儲、應(yīng)用和維護成本。