通過FreeBSD系統搭建開源的Hadoop存儲應用基礎,依托在服務器虛擬化(VMware)的平臺上進行運行,這樣能夠擁有更快、更穩定、更安全的硬件保障,使用iSCSI技術,盡可能降低存儲部署成本。本系統利用VMware虛擬化平臺將服務器硬件存儲資源進行整合,通過建立Lun將服務器的磁盤陣列進行劃分,組成多個磁盤邏輯,然后通過在Lun上安裝FreeBSD操作系統及搭建iSCSI服務器端,使得存儲硬件資源能夠靈活地應用在Hadoop系統中。Hadoop將部署在虛擬化硬件平臺上構成一個分布式的文件系統,通過WebDAV協議建立與客戶端服務器的應用通信。用戶可以通過訪問客戶端服務器,將文件通過WebDAV以HTTPS方式傳輸到Hadoop存儲集群中保存。
??? 該平臺的設計充分利用了虛擬化與分布式技術的特點,采用多層次的模塊化應用將整個存儲系統從硬件架構到軟件應用方式都變得靈活和易擴展,同時又因為虛擬化與分布式技術本身的安全特性,系統在數據安全性上具有先天優勢,從而實現數據存儲服務的低成本部署。
1 系統設計原理
??? 存儲系統采用底層云存儲技術與應用層iSCSI技術來為用戶提供跨系統應用平臺支持。其工作原理如圖1所示。
??? 系統首先由多臺數據存儲服務器通過iSCSI網絡構成一個龐大的數據存儲服務集群,每一臺數據服務器的配置是相同的。當數據達到存儲池飽和狀態時,可以將同樣配置的服務器加入到這個存儲網絡中,在不改變原有系統運行狀態下實現擴容。
??? 系統采用VMware ESXi Server虛擬系統作為應用服務器集群底層系統,各應用服務器系統可在VMware虛擬系統之上建立邏輯上的關聯。? VMware允許多個操作系統并行運行于一臺高性能服務器之上和多個高性能服務器運行同一任務,同時通過網絡對操作系統進行備份和管理,能夠依據應用服務使用狀況對操作系統實施遷移和復制,從而擴大網絡應用處理帶寬。
??? 在VMware層上安裝FreeBSD系統平臺搭建Hadoop分布式存儲系統,Hadoop系統能將數據同時分割成許多小塊和備份,通過點播服務器(NameNode)存放于不同的數據存儲服務器中。在Hadoop系統中,會有一臺Master,主要負責NameNode的工作以及JobTracker的工作。Job Tracker的主要職責就是啟動、跟蹤和調度各個Slave的任務執行。還會有多臺Slave,每一臺Slave通常具有DataNode的功能并負責Task Tracker的工作。TaskTracker根據應用要求來結合本地數據執行Map任務以及Reduce任務。
??? 在NameNode上部署WebDAV應用,實現應用服務器對存儲資源的通信,從而讓用戶調用Hadoop上的數據。WebDAV(Web-based Distributed Authoring and Versioning)是基于HTTP 1.1的一個通信協議。它為HTTP 1.1添加了一些擴展(就是在GET、POST、HEAD等幾個HTTP標準方法以外添加了一些新的方法),使得應用程序可以直接將文件寫到Web Server上,從而替代傳統的FTP傳輸文件模式。
2 系統關鍵技術實現
??? 存儲平臺通過在Hadoop上部署WebDAV,可實現客戶端(應用服務器)對服務器端(Hadoop節點服務器)的復制和移動文件,并可進行多用戶同時讀取一個文件等操作。
??? 實施步驟(以四臺服務器為例,結合局域網內DNS服務器):
??? 第一步:Hadoop環境搭建使用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。
??? 詳細環境配置介紹如下:
??? Hadoop版本為0.20.2;
??? JDK版本為1.6.0;
??? 操作系統為FreeBSD8.0(最小化安裝)。
??? ve3(192.168.1.3)是NameNode(Master),其他三臺作為DateNode(slave).
??? Hadoop是Java語言編寫的機群程序,它的安裝是建立在ssh和JDK之上的,所以在配置Hadoop之前首先要對系統進行ssh和JDK的安裝與配置。
??? (1)通過ssh來實現Hadoop節點之間用戶的無密碼訪問
??? ①在各個節點的/etc/hosts文件中添加節點IP及對應機器名,并在各個節點上建立相同用戶名與密碼的賬戶。
??? 修改/etc/hosts文件如下:
??? 192.168.1.1 vc1
??? 192.168.1.2 vc2
??? 192.168.1.3 vc3
??? 192.168.1.4 vc4
??? 修改成功后就可以實現IP地址與機器名的對應解析。
??? 在各個節點建立用戶名為Hadoop,密碼為123456的用戶。
②實現節點間通過ssh無密碼訪問。
??? ③測試是否配置成功。
??? 通過ssh+機器名命令測試能否無密碼訪問其他計算機,如果無密碼訪問,則配置成功。
??? 例:vc1使用ssh vc3是否能無密碼訪問vc3,vc3使用ssh vc1是否能無密碼訪問vc1(其他主機方法類似)?
??? (2)JDK的安裝
??? 在這里利用ports安裝JDK。在安裝時要先下載如下幾個文件:
??? 下載設置環境變量,修改/etc/profile文件。在該文件中添加如下代碼:
??? 保存后鍵入命令:
??? source/etc/profile
??? 使環境變量設置生效。
??? 安裝好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到當前目錄
??? 解壓完后進入/home/hadoop/hadoop-0.20.2/conf目錄進行配置。
????
? ??配置文件修改e#
配置文件修改完畢后格式化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的配置已經完成了。
??? 第二步: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遠程調用實現,并且各個版本間可能不兼容(0.17.X與0.18.x之間就不兼容),所以需要將WEB-INF/lib/ha doop-XXXX-core.jar的版本與NameNode Server的版本一致,現war自帶的是hadoop-0.18.1-core.jar的版本。
??? (3)部署至tomcat
??? 以上修改完,將war包部署至tomcat或是jboss中,部署在其它服務器中時需要tomcat的catalina.jar與tomcat-coyote.jar,拷貝至WEB-INF/lib目錄,因為現在項目是從tomcat的WebdavServlet中修改而來的。
??? (4)測試是否部署成功
??? 訪問http://localhost:8080/hdfs-webdav?
??? 第三步:webdav客戶端訪問
??? 實現webdav的hdfs可以映射為windows或是linux本地文件夾。
??? (1)window網上鄰居訪問
??? 打開“網上鄰居”,添加網上鄰居,在“請鍵入網上鄰居的位置”中輸入Web文件夾的URL。
??? http://loealhost:8080/hdfs-webdav
??? 然后按照向導的提示繼續下一步就可以了。
??? (2)Linux mount WebDav為本地文件系統
??? linux下想要mount WebDAV server為本地文件系統,必須要使用davfs2,項目網址為http://day.sourceforge.net/。
??? 安裝davfs2請使用編譯安裝。
??? davfs2編譯時依賴于neon,neon是一個WebDAV client library.neon網址為http://www.webdav.org/neon/。
??? dsvfs2在mount時會使用fuse或是coda這兩個文件系統,其中一個文件系統linux一般都有自帶,davfs2在mount時會首先嘗試使用fuse,失敗時再使用coda。
??? 但在CentOs中使用coda時發生如下錯誤,所以后面安裝fuse,fuse網址為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需要創建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 系統應用拓補分析
??? 基于服務器虛擬化(VMware)系統,制作出的云存儲陣列,其中云主機控制云系統內的服務器集群,進行數據的寫入與讀出,由云主機提供的API接口(主要是WebDAV協議,也可采用其他協議)進行與客戶應用服務器之間的數據存儲、數據備災、數據應用,這樣能夠盡可能地利用云的效率,如圖2所示。
??? 在圖2中,系統應用主要分為存儲服務與應用服務兩部分。存儲服務主要以Hadoop系統為主,通過應用服務中的局域網DNS構建頭節點與存儲節點關系。WebDAV部署在頭節點服務器上,通過建立映射可在Windows或Linux系統上建立本地文件夾,從而實現為應用服務器提供存儲服務功能。
4 結論
??? 本系統通過集群應用、網格技術或分布式文件系統等功能,將網絡中大量各種不同類型的存儲設備通過應用軟件集合起來協同工作,共同對外提供數據存儲和業務訪問功能。通過虛擬化技術將iSCSI與云存儲系統結合,為大型企業和機構提供異地數據存儲服務,并且通過云存儲系統平臺為企業提供跨平臺服務應用解決方案,實現了部署靈活、可擴展性和安全性高的特點,從而降低了數據存儲、應用和維護成本。
評論
查看更多