摘要:為滿(mǎn)足海量數(shù)據(jù)的便捷化、智能化存儲(chǔ)和分析需求,充分發(fā)揮和利用Hadoop分布式架構(gòu)的運(yùn)行成本低、容錯(cuò)性高等優(yōu)勢(shì),應(yīng)用Hadoop分布式架構(gòu)設(shè)計(jì)一款新型、先進(jìn)的云存儲(chǔ)系統(tǒng),從系統(tǒng)架構(gòu)設(shè)計(jì)和系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)兩個(gè)方面入手,完成系統(tǒng)總體設(shè)計(jì)。根據(jù)系統(tǒng)功能列表,依次設(shè)計(jì)文件上傳、文件下載、文件瀏覽、其他操作等模塊。在Hadoop分布式架構(gòu)的應(yīng)用背景下,文章中所設(shè)計(jì)的云存儲(chǔ)系統(tǒng)具有內(nèi)存開(kāi)銷(xiāo)率低、集群讀取效率高、安全可靠等優(yōu)點(diǎn),符合預(yù)期設(shè)計(jì)標(biāo)準(zhǔn)和要求。
關(guān)鍵詞:Hadoop;云存儲(chǔ)系統(tǒng);預(yù)取緩存;數(shù)據(jù)讀取
中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2024)23-0046-03
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID)
在智慧醫(yī)療、電商、網(wǎng)絡(luò)社交媒體等行業(yè)的迅猛發(fā)展下,包括小文件在內(nèi)的網(wǎng)絡(luò)數(shù)據(jù)呈現(xiàn)出急劇增加的趨勢(shì),HDFS(分布式文件系統(tǒng))在整個(gè)Hadoop集群中主要用于海量數(shù)據(jù)的存儲(chǔ)[1]。然而,目前HDFS存儲(chǔ)機(jī)制缺乏一定的健全性和完善性,存在集群文件規(guī)模不易拓展、內(nèi)存消耗大、訪問(wèn)數(shù)據(jù)不便捷等問(wèn)題。云存儲(chǔ)系統(tǒng)的設(shè)計(jì)和應(yīng)用可以解決這些問(wèn)題。該系統(tǒng)主要運(yùn)用Hadoop分布式架構(gòu)、云存儲(chǔ)等技術(shù),具有運(yùn)行性能高、文件讀寫(xiě)速率高、訪問(wèn)效率快、存儲(chǔ)能力高等特點(diǎn),為實(shí)現(xiàn)數(shù)據(jù)安全化存儲(chǔ)和管理提供重要的平臺(tái)支持[2]。因此,在Hadoop分布式架構(gòu)的應(yīng)用背景下,如何科學(xué)地設(shè)計(jì)和實(shí)現(xiàn)云存儲(chǔ)系統(tǒng)是技術(shù)人員必須思考和解決的問(wèn)題。
1 相關(guān)技術(shù)介紹
1.1 Hadoop分布式架構(gòu)概述
Hadoop作為一種重要的分布式系統(tǒng)基礎(chǔ)架構(gòu),可以為用戶(hù)提供存儲(chǔ)平臺(tái)和計(jì)算平臺(tái)。Hadoop主要是由Apache基金會(huì)研發(fā),主要包含以下兩個(gè)組成部分:1) 分布式文件系統(tǒng)。分布式文件系統(tǒng)憑借著自身拓展性高、容錯(cuò)性強(qiáng)、可用性高等特點(diǎn),被廣泛地應(yīng)用于集群設(shè)備數(shù)據(jù)分布式存儲(chǔ)領(lǐng)域中。2) 分布式運(yùn)算編程框架。分布式運(yùn)算編程框架為開(kāi)發(fā)人員提供多個(gè)接口,開(kāi)發(fā)人員可以在無(wú)須了解底層實(shí)現(xiàn)細(xì)節(jié)原理的情況下,對(duì)分布式程序進(jìn)行有效開(kāi)發(fā)和設(shè)計(jì)。與其他傳統(tǒng)分布式文件系統(tǒng)相比47aG8h4Yrf1PiCLJ+2lykbr10zc36M9DTX/OYHTM5PU=,Hadoop具有運(yùn)行性能高、安全穩(wěn)定、開(kāi)源免費(fèi)等特點(diǎn),完全滿(mǎn)足大數(shù)據(jù)時(shí)代海量數(shù)據(jù)存儲(chǔ)和管理的需求。借助Hadoop技術(shù),用戶(hù)可以方便地完成Hadoop集群的安裝和部署,這為后期構(gòu)建分布式云計(jì)算平臺(tái)和存儲(chǔ)數(shù)據(jù)提供了重要的技術(shù)支持。
1.2 云存儲(chǔ)技術(shù)概述
云存儲(chǔ)技術(shù)主要是在延伸和拓展云計(jì)算相關(guān)技術(shù)的基礎(chǔ)上形成的新型、先進(jìn)產(chǎn)品形態(tài)。云存儲(chǔ)作為一種常用的存儲(chǔ)資源池,主要由數(shù)據(jù)存儲(chǔ)設(shè)備、數(shù)據(jù)管理設(shè)備等組成。借助應(yīng)用程序編程接口,云存儲(chǔ)可以為用戶(hù)提供靈活性強(qiáng)、公開(kāi)透明的云系統(tǒng),便于用戶(hù)根據(jù)存儲(chǔ)需求分配資源存儲(chǔ)空間,實(shí)現(xiàn)最大化利用存儲(chǔ)空間。此外,授權(quán)的用戶(hù)可以通過(guò)互聯(lián)網(wǎng)與云存儲(chǔ)系統(tǒng)有效連接,隨時(shí)隨地存儲(chǔ)和分析海量數(shù)據(jù)。云存儲(chǔ)技術(shù)主要包含以下幾種。
1.2.1 分布式存儲(chǔ)技術(shù)
分布式存儲(chǔ)主要是指使用網(wǎng)絡(luò)存儲(chǔ)的方式,將所需數(shù)據(jù)傳輸和存儲(chǔ)到分布式服務(wù)器上。在數(shù)據(jù)存儲(chǔ)過(guò)程中,借助分布式文件系統(tǒng)將數(shù)據(jù)存儲(chǔ)到相應(yīng)的服務(wù)器上,為用戶(hù)提供強(qiáng)大的數(shù)據(jù)管理服務(wù)。為了確保分布式存儲(chǔ)系統(tǒng)的設(shè)計(jì)質(zhì)量,需要充分發(fā)揮和利用分布式存儲(chǔ)技術(shù)的透明性、自治性等優(yōu)勢(shì)。
1.2.2 存儲(chǔ)虛擬化技術(shù)
存儲(chǔ)虛擬化是一種層次接口封裝與抽象的過(guò)程。通過(guò)應(yīng)用虛擬化技術(shù),封裝層次接口,可以減小系統(tǒng)硬件在容量、接口方面的差異性。然后,將虛擬化產(chǎn)品安裝和部署到系統(tǒng)硬件上,確保硬件細(xì)節(jié)與業(yè)務(wù)相互分離。通過(guò)虛擬化技術(shù),可以實(shí)現(xiàn)對(duì)系統(tǒng)硬件資源的虛擬化處理,為用戶(hù)提供簡(jiǎn)潔友好、操作智能的人機(jī)界面。存儲(chǔ)虛擬化作為一種常用的虛擬化技術(shù),可以實(shí)現(xiàn)對(duì)各種虛擬化方法和相關(guān)先進(jìn)設(shè)備的統(tǒng)一化存儲(chǔ)。通過(guò)應(yīng)用存儲(chǔ)虛擬化技術(shù),可以實(shí)現(xiàn)對(duì)存儲(chǔ)資源的有效隔離,確保網(wǎng)絡(luò)資源與存儲(chǔ)數(shù)據(jù)分開(kāi),方便后期針對(duì)不同資源信息的管理。
2 系統(tǒng)總體設(shè)計(jì)
2.1 系統(tǒng)架構(gòu)設(shè)計(jì)
本文系統(tǒng)設(shè)計(jì)主要運(yùn)用B/S設(shè)計(jì)模式,將系統(tǒng)架構(gòu)劃分為以下幾個(gè)層次:1) 用戶(hù)訪問(wèn)層:該層次將系統(tǒng)操作界面簡(jiǎn)潔、友好地展示給用戶(hù),方便用戶(hù)進(jìn)行相關(guān)功能操作。2) 應(yīng)用接口層:結(jié)合用戶(hù)多樣化的使用需求,提供相應(yīng)的應(yīng)用程序編程接口,并將用戶(hù)的操作映射到分布式文件系統(tǒng)操作中,屏蔽底層架構(gòu)的細(xì)節(jié)。3) 數(shù)據(jù)管理層:該層次包含分布式文件系統(tǒng)的操作接口,為系統(tǒng)的二次開(kāi)發(fā)提供重要的技術(shù)支持。4) 存儲(chǔ)層:存儲(chǔ)層主要用于重要數(shù)據(jù)的存儲(chǔ),利用Hadoop框架,實(shí)現(xiàn)多個(gè)PC機(jī)的組合和使用,為用戶(hù)提供更優(yōu)質(zhì)的分布式存儲(chǔ)服務(wù)體驗(yàn)。
2.2 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
本文系統(tǒng)在具體設(shè)計(jì)時(shí),主要使用了Oracle MySQL數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)具有運(yùn)行速度快、體積小、免費(fèi)等優(yōu)點(diǎn),通過(guò)與SSH空間充分結(jié)合,可以有效開(kāi)發(fā)中小型系統(tǒng)的數(shù)據(jù)庫(kù)。此外,MySQL數(shù)據(jù)庫(kù)功能穩(wěn)定、強(qiáng)大,完全滿(mǎn)足用戶(hù)個(gè)性化使用需求。在本文系統(tǒng)中,MySQL數(shù)據(jù)庫(kù)主要用于統(tǒng)一存儲(chǔ)和管理用戶(hù)信息、管理員信息,方便相關(guān)人員通過(guò)系統(tǒng)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的增加、刪除、修改和查詢(xún)[3]。在實(shí)際存儲(chǔ)過(guò)程中,系統(tǒng)業(yè)務(wù)文件主要使用Hadoop集群。本文創(chuàng)建了用戶(hù)信息表和管理員信息表,表1和表2展示了其屬性信息。用戶(hù)信息表包括用戶(hù)編號(hào)、登錄名、用戶(hù)名稱(chēng)、學(xué)號(hào)、登錄密碼、密保問(wèn)題、密保答案、注冊(cè)時(shí)間等屬性;管理員信息表包括管理員編號(hào)、登錄名、管理員名稱(chēng)、登錄密碼等屬性。
3 系統(tǒng)功能實(shí)現(xiàn)
3.1 系統(tǒng)功能列表
為了充分發(fā)揮和利用Hadoop分布式架構(gòu)和云存儲(chǔ)等技術(shù)的優(yōu)勢(shì),確保云存儲(chǔ)系統(tǒng)的穩(wěn)定性和實(shí)用性,技術(shù)人員應(yīng)嚴(yán)格按照?qǐng)D2所示的系統(tǒng)功能模塊設(shè)計(jì)示意圖完成用戶(hù)管理模塊、目錄管理模塊和文件管理模塊的設(shè)計(jì)。在實(shí)際設(shè)計(jì)中,選擇使用Eclipse作為開(kāi)發(fā)工具,以Java為主要開(kāi)發(fā)語(yǔ)言。在整個(gè)Web展示中,主要采用了JSP技術(shù)、Spring技術(shù)和Hibernate技術(shù)這三種技術(shù)。具體而言,用戶(hù)管理模塊應(yīng)用JSP技術(shù),目錄管理模塊應(yīng)用Spring技術(shù),文件管理模塊應(yīng)用Hibernate技術(shù)。
3.2 用戶(hù)注冊(cè)模塊
在用戶(hù)注冊(cè)與登錄模塊的具體設(shè)計(jì)中,需要嚴(yán)格按照注冊(cè)相關(guān)的標(biāo)準(zhǔn)和要求,有效地注冊(cè)用戶(hù)信息,并調(diào)用MySQL數(shù)據(jù)庫(kù)的Create()方法來(lái)創(chuàng)建用戶(hù)信息表。在用戶(hù)進(jìn)行登錄和注銷(xiāo)操作時(shí),需要借助系統(tǒng)數(shù)據(jù)庫(kù)來(lái)驗(yàn)證用戶(hù)名和密碼的有效性[4]。通過(guò)文件上傳模塊,用戶(hù)成功登錄系統(tǒng)并進(jìn)入文件上傳界面后,點(diǎn)擊“上傳”按鈕,可以實(shí)現(xiàn)批量上傳多個(gè)文件或快速上傳單個(gè)文件。通過(guò)文件下載模塊,用戶(hù)登錄系統(tǒng)并進(jìn)入文件下載界面后,可以自行下載感興趣的文件。這些文件一方面可以來(lái)自用戶(hù)之前上傳的文件,另一方面可以來(lái)自其他用戶(hù)分享的文件。通過(guò)文件搜索模塊,用戶(hù)登錄系統(tǒng)并進(jìn)入文件搜索界面后,可以使用關(guān)鍵字匹配的方式對(duì)所需文件進(jìn)行精確搜索。其他操作模塊主要包括文件刪除、文件重命名、目錄新增和目錄刪除等操作。其中,文件刪除操作主要調(diào)用File_delete()方法,文件重命名操作主要調(diào)用File_rename()方法,目錄新增主要調(diào)用List_create()方法,目錄刪除主要調(diào)用List_delete()方法[5]。
3.3 文件上傳模塊
文件上傳模塊主要是將用戶(hù)從本地系統(tǒng)上傳的文件存儲(chǔ)到Hadoop集群中。在用戶(hù)與Hadoop集群進(jìn)行交互時(shí),需要通過(guò)文件系統(tǒng)類(lèi)進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)。首先,調(diào)用create()方法完成所需文件的上傳。由于本文系統(tǒng)支持用戶(hù)批量上傳文件,因此,在實(shí)現(xiàn)文件上傳模塊時(shí),開(kāi)發(fā)人員使用了Jquery的Uploadify上傳插件,該插件可以將文件的當(dāng)前上傳進(jìn)度展示給用戶(hù)。在文件上傳過(guò)程中,分布式文件系統(tǒng)采用流式上傳的方式,將文件從Web前端上傳到Web服務(wù)器,再由Web服務(wù)器將文件上傳到Hadoop集群中。為了避免服務(wù)器性能限制導(dǎo)致系統(tǒng)響應(yīng)時(shí)間延長(zhǎng),本文在設(shè)計(jì)文件上傳模塊時(shí)為每個(gè)用戶(hù)設(shè)置并分配了單個(gè)線程。然后,按照一定的上傳順序批量上傳多個(gè)文件,以確保在某一用戶(hù)同時(shí)上傳多個(gè)文件時(shí),其他用戶(hù)可以正常查找和獲取感興趣的文件。此外,在上傳文件時(shí)還需要分析和判斷文件的大小。當(dāng)所上傳的文件大小低于5MB時(shí),需要將多個(gè)小文件合并為一個(gè)大文件,然后將其上傳到Hadoop集群中[6]。
3.4 文件下載模塊
在進(jìn)行文件下載操作時(shí),用戶(hù)需要向Web服務(wù)器發(fā)送文件下載請(qǐng)求指令。此時(shí),Web服務(wù)器會(huì)結(jié)合用戶(hù)請(qǐng)求指令并檢測(cè)系統(tǒng)的緩存情況,判斷系統(tǒng)是否存在需要請(qǐng)求的文件。如果存在,系統(tǒng)會(huì)自動(dòng)向用戶(hù)返回相應(yīng)的文件數(shù)據(jù);如果不存在,Web服務(wù)器會(huì)借助分布式文件系統(tǒng),發(fā)送用戶(hù)的下載請(qǐng)求。在分布式文件系統(tǒng)中,各個(gè)客戶(hù)端之間的連接關(guān)系是公開(kāi)透明的,Web服務(wù)器不需要了解內(nèi)部原理的實(shí)現(xiàn),只須調(diào)用文件系統(tǒng)類(lèi)的方法即可完成對(duì)文件的操作。通過(guò)使用FileSystem接口內(nèi)部的Open方法,獲取所需文件的輸入流,然后調(diào)用Read方法,將讀取的文件數(shù)據(jù)流直接傳輸給指定用戶(hù),實(shí)現(xiàn)文件的下載目的。
3.5 文件瀏覽模塊
文件瀏覽模塊是本文系統(tǒng)的重要組成部分,主要用于獲取和顯示當(dāng)前登錄用戶(hù)所對(duì)應(yīng)目錄中的文件列表。在設(shè)計(jì)該模塊時(shí),會(huì)調(diào)用getFileStatus()方法來(lái)獲取所需目錄對(duì)象,并調(diào)用ListStatus()方法將文件狀態(tài)數(shù)組直接返回到前端頁(yè)面。前端頁(yè)面會(huì)將相應(yīng)的文件列表信息展示給用戶(hù),方便用戶(hù)全面了解和掌握文件狀態(tài)的詳細(xì)信息。這為后期實(shí)時(shí)共享和最大化利用文件狀態(tài)信息打下了堅(jiān)實(shí)的基礎(chǔ)。
3.6 其他操作
在設(shè)計(jì)和開(kāi)發(fā)其他操作模塊時(shí),首先需要調(diào)用分布式文件系統(tǒng)的開(kāi)發(fā)人員對(duì)本文系統(tǒng)的其他操作模塊進(jìn)行相應(yīng)的設(shè)計(jì)和實(shí)現(xiàn)。這些操作模塊包括文件刪除、文件重命名和文件新建等功能。通過(guò)調(diào)用文件系統(tǒng)類(lèi)中的Delete()方法、Rename()方法和Create()方法,可以實(shí)現(xiàn)文件的刪除、重命名和新建,并為用戶(hù)提供這些其他操作功能。然而,在設(shè)計(jì)文件刪除、文件重命名和文件新建等其他操作模塊時(shí),如果文件名或存儲(chǔ)位置發(fā)生改變,就需要及時(shí)更新當(dāng)前用戶(hù)目錄下所對(duì)應(yīng)的信息,以確保系統(tǒng)的準(zhǔn)確性和一致性。
4 結(jié)束語(yǔ)
綜上所述,本文應(yīng)用基于Hadoop分布式架構(gòu)設(shè)計(jì)的云存儲(chǔ)系統(tǒng)具有強(qiáng)大的文件上傳、文件下載和文件瀏覽功能。該系統(tǒng)不僅能夠提高小文件的存取質(zhì)量和效率,還能將名稱(chēng)節(jié)點(diǎn)內(nèi)存開(kāi)銷(xiāo)量降至最低。此外,本文系統(tǒng)采用B/S訪問(wèn)模式,并使用圖形界面將相關(guān)操作直觀地展示給用戶(hù),以滿(mǎn)足用戶(hù)多樣化的使用需求。盡管本文系統(tǒng)取得了一定的設(shè)計(jì)成果,但仍存在一些需要優(yōu)化和完善的方面:名稱(chēng)節(jié)點(diǎn)內(nèi)存消耗仍然是Hadoop面臨的最大挑戰(zhàn),需要通過(guò)分布式存儲(chǔ)文件元數(shù)據(jù)、拓展Hadoop集群的存儲(chǔ)容量來(lái)進(jìn)一步提高文件的執(zhí)行速度,從而提升用戶(hù)的使用體驗(yàn)。
參考文獻(xiàn):
[1] 謝帆,彭玉濤.基于Hadoop分布式架構(gòu)的云存儲(chǔ)系統(tǒng)、文件存儲(chǔ)實(shí)現(xiàn)研究[J].電腦與電信,2022(10):102-105.
[2] 劉姝.基于 Hadoop 的云存儲(chǔ)系統(tǒng)的設(shè)計(jì)與研究[J].鄭州輕工業(yè)學(xué)院學(xué)報(bào)(自然科學(xué)版),2014,29(5):60-63.
[3] 鄭海清.基于MongoDB的數(shù)據(jù)密集型云存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2021,29(1):106-109,114.
[4] 孫惠芬.基于云計(jì)算的海量大數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)[J].信息與電腦,2022(23):147-149.
[5] 張曉陽(yáng),許佳豪,胡燏翀.云存儲(chǔ)系統(tǒng)中的預(yù)測(cè)式局部修復(fù)碼[J].計(jì)算機(jī)研究與發(fā)展,2019,56(9):1988-2000.
[6] 徐翔,張光亞.基于Hadoop的云盤(pán)存儲(chǔ)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2023,19(3):78-81.
【通聯(lián)編輯:張薇】