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