用戶遠(yuǎn)程訪問hdfs集群的裝置及方法
【專利摘要】本發(fā)明涉及一種用戶遠(yuǎn)程訪問HDFS集群的裝置及方法,該裝置包括連接用戶與HDFS集群的中間件,該中間件包括相互之間有調(diào)度關(guān)系的服務(wù)端模塊和客戶端模塊,服務(wù)端模塊包括服務(wù)啟動模塊、訪問請求處理模塊、訪問請求傳輸模塊及文件管理模塊,客戶端模塊包括用戶操作模塊、IP封裝模塊及服務(wù)器選擇模塊。在HDFS集群上具有公網(wǎng)IP的服務(wù)器上開啟數(shù)據(jù)調(diào)度或/和數(shù)據(jù)存儲的服務(wù),對需要遠(yuǎn)程訪問HDFS集群的用戶提供一個中間件,用戶使用中間件對HDFS集群進(jìn)行遠(yuǎn)程訪問。本發(fā)明不僅可以解決用戶遠(yuǎn)程訪問HDFS集群,同時實現(xiàn)了對用戶的有效隔離。
【專利說明】用戶遠(yuǎn)程訪問HDFS集群的裝置及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲訪問領(lǐng)域,尤其涉及一種用戶遠(yuǎn)程訪問HDFS集群的裝置及方法。
【背景技術(shù)】
[0002]Hadoop是一個開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺,是Appach用java語言實現(xiàn)的一個開源軟件框架,可以實現(xiàn)在大量計算機(jī)組成的集群中對海量數(shù)據(jù)進(jìn)行分布式計算。Hadoop由Apache基金會開發(fā),用戶可以在不了解分布式底層細(xì)節(jié)的情況下開發(fā)分布式程序,并充分利用集群的功能進(jìn)行高速運(yùn)算和存儲。Hadoop框架中最核心的設(shè)計就是HDFS(Hadoop Distributed File System,簡稱 HDFS)和 MapReduce, HDFS 負(fù)責(zé)提供海量數(shù)據(jù)的存儲,MapReduce負(fù)責(zé)提供對數(shù)據(jù)的計算。
[0003]HDFS是Hadoop的分布式文件系統(tǒng),HDFS是一個主從結(jié)構(gòu),一個HDFS集群一般包括一個名稱節(jié)點(diǎn)(也稱NameNode節(jié)點(diǎn)或名稱服務(wù)器)和多個存儲節(jié)點(diǎn)(也稱DataNode節(jié)點(diǎn)或數(shù)據(jù)存儲服務(wù)器)。另外,包含上述HDFS集群的Hadoop集群還包括命名為SecondaryNameNode的節(jié)點(diǎn)、命名為JobTracker的節(jié)點(diǎn)和命名為TaskTracker的節(jié)點(diǎn)組,其中NameNode節(jié)點(diǎn)記錄了文件是如何被拆分成分塊(block)以及這些分塊(block)都存儲到了哪些DateNode節(jié)點(diǎn)中,NameNode節(jié)點(diǎn)還同時保存了文件系統(tǒng)運(yùn)行的狀態(tài)信息;DataNode節(jié)點(diǎn)中存儲的是被拆分的分塊(blocks), Secondary NameNode節(jié)點(diǎn)負(fù)責(zé)收集文件系統(tǒng)運(yùn)行的狀態(tài)信息給NameNode節(jié)點(diǎn);當(dāng)有任務(wù)提交到Hadoop集群時,JobTracker節(jié)點(diǎn)負(fù)責(zé)任務(wù)的運(yùn)行,并負(fù)責(zé)調(diào)度多個TaskTracker節(jié)點(diǎn);TaskTracker節(jié)點(diǎn)負(fù)責(zé)某一個map或者reduce任務(wù)。
[0004]在Hadoop中,HDFS具有高容錯性的特點(diǎn),可以通過設(shè)計部署在低廉的硬件上。HDFS能夠提供高傳輸速率對應(yīng)用程序的數(shù)據(jù)進(jìn)行訪問,適合具有超大數(shù)據(jù)集的應(yīng)用程序。HDFS不僅具有備份功能,可以將存儲在HDFS集群中的數(shù)據(jù)自動地進(jìn)行備份,同時HDFS還具有機(jī)架感知機(jī)制,在用戶寫入數(shù)據(jù)時,HDFS會選擇距離用戶最近的節(jié)點(diǎn)進(jìn)行寫入;在用戶讀取數(shù)據(jù)時,HDFS會選擇距離用戶最近的備份塊進(jìn)行讀取,從而最大限度地減少帶寬占用率。
[0005]雖然HDFS具有高容錯、高并發(fā)及節(jié)省帶寬等特點(diǎn),但是為了最大限度地節(jié)省帶寬及釋放NameNode節(jié)點(diǎn)的壓力,用戶從HDFS集群中讀寫數(shù)據(jù)時,采用的是點(diǎn)對點(diǎn)的方式,即NameNode節(jié)點(diǎn)會將用戶與存儲數(shù)據(jù)的DataNode節(jié)點(diǎn)直接對接,讓用戶直接從DataNode節(jié)點(diǎn)中獲取數(shù)據(jù)流。這樣做雖然達(dá)到了開發(fā)者想要的目的,但是對使用HDFS進(jìn)行數(shù)據(jù)存儲訪問來說卻起到了相反的作用。由于在Hadoop集群中,并不是每臺存儲數(shù)據(jù)的服務(wù)器(DataNode節(jié)點(diǎn))都有公網(wǎng)IP,當(dāng)NameNode節(jié)點(diǎn)將DataNode節(jié)點(diǎn)的IP返回給用戶時,用戶得到的是DataNode節(jié)點(diǎn)在服務(wù)器集群中的內(nèi)網(wǎng)IP,用戶不能使用這個內(nèi)網(wǎng)IP對DataNode節(jié)點(diǎn)進(jìn)行訪問,所以也就不能從DataNode節(jié)點(diǎn)中讀寫數(shù)據(jù)。因此,如果在應(yīng)用集群服務(wù)器上直接搭建HDFS,會出現(xiàn)應(yīng)用集群服務(wù)器外的用戶不能讀寫HDFS集群中數(shù)據(jù)的情況。[0006]因此在現(xiàn)有技術(shù)條件下,在保持HDFS自身優(yōu)勢不受影響的情況下,迫切需要一種能夠?qū)崿F(xiàn)用戶遠(yuǎn)程訪問HDFS集群中數(shù)據(jù)的技術(shù)方案。
【發(fā)明內(nèi)容】
[0007]本發(fā)明首要解決的技術(shù)問題是針對現(xiàn)有技術(shù)提供一種用戶遠(yuǎn)程訪問HDFS集群的裝置,利用該裝置能夠?qū)崿F(xiàn)用戶對遠(yuǎn)程存儲進(jìn)行訪問。
[0008]本發(fā)明進(jìn)一步要解決的技術(shù)問題是針對現(xiàn)有技術(shù)提供一種用戶遠(yuǎn)程訪問HDFS集群的方法,該方法在實現(xiàn)用戶對遠(yuǎn)程存儲進(jìn)行訪問的同時,還實現(xiàn)了對訪問HDFS集群的用戶進(jìn)行有效隔離,即用戶不能直接接觸到HDFS集群中服務(wù)器的IP地址。
[0009]本發(fā)明解決上述首要技術(shù)問題所采用的技術(shù)方案為:一種用戶遠(yuǎn)程訪問HDFS集群的裝置,其特征在于,包括連接用戶與HDFS集群的中間件,所述中間件包括相互之間有調(diào)度關(guān)系的服務(wù)端模塊和客戶端模塊,其中,
[0010]服務(wù)端模塊包括:
[0011]服務(wù)啟動模塊,用于啟動HDFS集群中服務(wù)器上數(shù)據(jù)調(diào)度和數(shù)據(jù)存儲的服務(wù);
[0012]訪問請求處理模塊,用于處理用戶發(fā)來的訪問請求;
[0013]訪問請求傳輸模塊,用于傳輸用戶發(fā)來的訪問請求;
[0014]文件管理模塊,用于管理用戶在HDFS集群中數(shù)據(jù)存儲服務(wù)器上的文件信息;
[0015]客戶端模塊包括:
[0016]用戶操作模塊,用于接收用戶的訪問請求;
[0017]IP封裝模塊,用于封裝HDFS集群上具有公網(wǎng)IP的服務(wù)器的IP地址;
[0018]服務(wù)器選擇模塊,用于選擇離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器,并將選擇出來的離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器的IP地址記錄下來。
[0019]用戶使用上述裝置訪問HDFS集群的使用過程為:
[0020]HDFS集群上具有公網(wǎng)IP的服務(wù)器開啟有數(shù)據(jù)調(diào)度或/和數(shù)據(jù)存儲的服務(wù),
[0021]用戶使用上述裝置對HDFS集群進(jìn)行遠(yuǎn)程訪問的過程為:
[0022](a)、用戶使用上述中間件中客戶端模塊提供的用戶操作模塊提出訪問請求,訪問請求的內(nèi)容選擇下列操作中的一個或多個:創(chuàng)建文件、打開讀取文件、刪除文件、列出文件及創(chuàng)建文件夾;
[0023](b)、客戶端模塊根據(jù)IP封裝模塊中封裝的IP地址,通過服務(wù)器選擇模塊依次對各個服務(wù)器進(jìn)行連接測試,選擇網(wǎng)絡(luò)延遲最小的服務(wù)器,然后將用戶的訪問請求通過服務(wù)端模塊中的訪問請求處理模塊和訪問請求傳輸模塊發(fā)送給該服務(wù)器,將該服務(wù)器稱為轉(zhuǎn)接服務(wù)器;
[0024](c)、轉(zhuǎn)接服務(wù)器接收到用戶發(fā)送的訪問請求后,尋找距離該轉(zhuǎn)接服務(wù)器最近的數(shù)據(jù)存儲服務(wù)器,通過服務(wù)啟動模塊啟動該數(shù)據(jù)存儲服務(wù)器上數(shù)據(jù)調(diào)度或/和數(shù)據(jù)存儲的服務(wù),然后在用戶與該數(shù)據(jù)存儲服務(wù)器之間建立TCP連接,從而實現(xiàn)用戶對該數(shù)據(jù)存儲服務(wù)器的遠(yuǎn)程訪問操作。
[0025]作為改進(jìn),所述中間件的客戶端模塊還包括:
[0026]加密模塊,用于對用戶名進(jìn)行加密,以生成驗證碼;
[0027]驗證模塊,用于對加密用戶的驗證碼進(jìn)行驗證;[0028]所述服務(wù)端模塊還包括:用戶目錄建立模塊,用于在HDFS集群的數(shù)據(jù)存儲服務(wù)器中給用戶建立遠(yuǎn)程訪問目錄。
[0029]這樣,當(dāng)用戶與距離轉(zhuǎn)接服務(wù)器最近的數(shù)據(jù)存儲服務(wù)器連接后,所述中間件的用戶目錄建立模塊根據(jù)每個用戶的用戶名為它們建立一個目錄,用戶對HDFS集群中數(shù)據(jù)存儲服務(wù)器的一切訪問操作都只能在該目錄下進(jìn)行,而不能對其他用戶目錄下的內(nèi)容進(jìn)行訪問。
[0030]本發(fā)明解決上述進(jìn)一步技術(shù)問題所采用的技術(shù)方案為:一種用戶遠(yuǎn)程訪問HDFS集群的方法,其特征在于,包括以下步驟:
[0031](I)、在HDFS集群上具有公網(wǎng)IP的服務(wù)器上開啟數(shù)據(jù)調(diào)度或/和數(shù)據(jù)存儲的服務(wù);
[0032](2)、對需要遠(yuǎn)程訪問HDFS集群的用戶提供一個中間件,所述中間件包括相互之間有調(diào)度關(guān)系的服務(wù)端模塊和客戶端模塊,其中,
[0033]服務(wù)端模塊包括:
[0034]服務(wù)啟動模塊,用于啟動服務(wù)器上數(shù)據(jù)調(diào)度和數(shù)據(jù)存儲的服務(wù);
[0035]訪問請求處理模塊,用于處理用戶發(fā)來的訪問請求;
[0036]訪問請求傳輸模塊,用于傳輸用戶發(fā)來的訪問請求;
[0037]文件管理模塊,用于管理用戶在HDFS集群中數(shù)據(jù)存儲服務(wù)器上的文件信息;
[0038]客戶端模塊包括:
[0039]用戶操作模塊,用于接收用戶的訪問請求;
[0040]IP封裝模塊,用于封裝HDFS集群上具有公網(wǎng)IP的服務(wù)器的IP地址;
[0041]服務(wù)器選擇模塊,用于選擇離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器,并將選擇出來的離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器的IP地址記錄下來;
[0042](3)、用戶使用上述中間件對HDFS集群進(jìn)行遠(yuǎn)程訪問:
[0043](3-1)、用戶使用上述中間件中客戶端模塊提供的用戶操作模塊提出訪問請求,訪問請求的內(nèi)容選擇下列操作中的一個或多個:創(chuàng)建文件、打開讀取文件、刪除文件、列出文件及創(chuàng)建文件夾;
[0044](3-2)、客戶端模塊根據(jù)IP封裝模塊中封裝的IP地址,通過服務(wù)器選擇模塊依次對各個服務(wù)器進(jìn)行連接測試,選擇網(wǎng)絡(luò)延遲最小的服務(wù)器,然后將用戶的訪問請求通過服務(wù)端模塊中的訪問請求處理模塊和訪問請求傳輸模塊發(fā)送給該服務(wù)器,將該服務(wù)器稱為轉(zhuǎn)接服務(wù)器;
[0045](3-3)、轉(zhuǎn)接服務(wù)器接收到用戶發(fā)送的訪問請求后,尋找距離該轉(zhuǎn)接服務(wù)器最近的數(shù)據(jù)存儲服務(wù)器,通過服務(wù)啟動模塊啟動該數(shù)據(jù)存儲服務(wù)器上數(shù)據(jù)調(diào)度或/和數(shù)據(jù)存儲的服務(wù),然后在用戶與該數(shù)據(jù)存儲服務(wù)器之間建立TCP連接,從而實現(xiàn)用戶對該數(shù)據(jù)存儲服務(wù)器的遠(yuǎn)程訪問操作。
[0046]該方案中,HDFS集群中服務(wù)器的真實IP地址被封裝在中間件中,用戶無法接觸到這些IP地址,并且用戶也不需要知道每個HDFS集群中服務(wù)器的真實IP地址,只需要使用本發(fā)明提供的中間件便可訪問HDFS集群。
[0047]作為改進(jìn),所述中間件的客戶端模塊還包括:
[0048]加密模塊,用于對用戶名進(jìn)行加密,以生成驗證碼;[0049]驗證模塊,用于對加密用戶的驗證碼進(jìn)行驗證;
[0050]所述服務(wù)端模塊還包括:用戶目錄建立模塊,用于在HDFS集群的數(shù)據(jù)存儲服務(wù)器中給用戶建立遠(yuǎn)程訪問目錄。
[0051]當(dāng)用戶與距離轉(zhuǎn)接服務(wù)器最近的數(shù)據(jù)存儲服務(wù)器連接后,所述中間件的用戶目錄建立模塊根據(jù)每個用戶的用戶名為它們建立一個目錄,用戶對HDFS集群中數(shù)據(jù)存儲服務(wù)器的一切訪問操作都只能在該目錄下進(jìn)行,而不能去訪問其他用戶目錄下的內(nèi)容。該改進(jìn)方案可以起到對用戶進(jìn)行隔離的作用——即用戶在訪問HDFS集群時,擁有一塊私有的存儲空間,其他用戶無法對該私有存儲空間進(jìn)行訪問,從而既降低了用戶的使用難度,又保證了HDFS集群自身的安全。
[0052]作為進(jìn)一步地改進(jìn),所述加密模塊中對用戶名進(jìn)行加密的方法為:
[0053]將用戶名按照下述規(guī)則進(jìn)行編碼,從而生成一個長30個字符的驗證碼:
[0054]驗證碼的前六個字符為驗證碼的基礎(chǔ)信息,依次包括:密鑰、用戶名長度、每隔多少個字符插入無效字符、每次插入的無效字符數(shù)量、字符ο及字符k ;其中,每隔多少個字符插入無效字符稱為span,每次插入的無效字符數(shù)量稱為space,字符ο及字符k用來對驗證碼是否有效進(jìn)行驗證;密鑰為O到25之間隨機(jī)生成的一個數(shù)字,加密過程中,將用戶名的每個字符用秘鑰進(jìn)行加密,同時每加密span個字符便插入space個隨機(jī)字符,最后如果驗證碼長度小于30個字符,則在末尾插入隨機(jī)字符進(jìn)行補(bǔ)全;
[0055]所述驗證模塊通過如下方式對驗證碼進(jìn)行解密:
[0056]首先讀取出驗證碼的前六個字符,次序依次為密鑰、用戶名長度、每隔多少個字符插入無效字符、每次插入的無效字符數(shù)量、字符ο及字符k ;
[0057]如果這個驗證碼的第五位和第六位不是字符O和字符k,則說明這個驗證碼無效,返回空值;
[0058]然后用密鑰對剩下的字符進(jìn)行解碼,每解碼span個字符則跳過space個字符,直到解碼出來的明文長度與用戶名的長度相同時結(jié)束,最后解碼得到完整的用戶名。
[0059]再改進(jìn),所述步驟(3-2)中,查找網(wǎng)絡(luò)延遲最小的服務(wù)器的方法為:根據(jù)IP封裝模塊內(nèi)封裝的IP地址,依次對每個服務(wù)器的IP使用Ping命令,記錄從每個服務(wù)器收到返回包所需要的時間,最后從所記錄的時間中找出所需時間最短的服務(wù)器,該服務(wù)器即為離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器,并將該服務(wù)器的IP記錄下來。
[0060]再改進(jìn),所述步驟(3-3)中采用HDFS集群自帶的機(jī)架感知機(jī)制尋找距離轉(zhuǎn)接服務(wù)器最近的數(shù)據(jù)存儲服務(wù)器。
[0061]作為優(yōu)選,所述中間件以Jar包的形式提供給用戶。
[0062]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:本發(fā)明不僅可以解決用戶遠(yuǎn)程訪問HDFS集群問題,同時還實現(xiàn)了對用戶進(jìn)行有效隔離,即用戶不需要知道HDFS集群中每個服務(wù)器的真實IP地址,只需要使用本發(fā)明提供的中間件即可訪問HDFS集群,從而使得用戶使用起來
非常簡單。
【專利附圖】
【附圖說明】
[0063]圖1為本發(fā)明實施例一中用戶遠(yuǎn)程訪問HDFS集群的整體架構(gòu)圖;
[0064]圖2為本發(fā)明實施例一中中間件的模塊框圖;[0065]圖3為本發(fā)明實施例一中用戶遠(yuǎn)程訪問HDFS集群的方法流程圖;
[0066]圖4為本發(fā)明實施例一中HDFS集群機(jī)架感知機(jī)制中節(jié)點(diǎn)間距離計算方法的流程圖;
[0067]圖5為本發(fā)明實施例二中中間件的模塊框圖。
【具體實施方式】
[0068]下面結(jié)合附圖實施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
[0069]實施例一
[0070]本實施例首先提供了一種用戶遠(yuǎn)程訪問HDFS集群的裝置,參見圖1所示,該裝置包括連接用戶與HDFS集群的中間件,所述中間件包括相互之間有調(diào)度關(guān)系的服務(wù)端模塊和客戶端模塊,其中,
[0071]服務(wù)端模塊包括:
[0072]服務(wù)啟動模塊,用于啟動HDFS集群中服務(wù)器上數(shù)據(jù)調(diào)度和數(shù)據(jù)存儲的服務(wù);
[0073]訪問請求處理模塊,用于處理用戶發(fā)來的訪問請求,這里的處理指的是判讀用戶發(fā)來的訪問請求是哪一種訪問請求,然后對判斷后的訪問請求進(jìn)行分類處理;
[0074]訪問請求傳輸模塊,用于傳輸用戶發(fā)來的訪問請求;
[0075]文件管理模塊,用于管理用戶在HDFS集群中數(shù)據(jù)存儲服務(wù)器上的文件信息,如記錄及保存用戶在HDFS集群中數(shù)據(jù)存儲服務(wù)器上的目錄地址及目錄內(nèi)的文件信息;
[0076]客戶端模塊包括:
[0077]用戶操作模塊,用于接收用戶的訪問請求;
[0078]IP封裝模塊,用于封裝HDFS集群上具有公網(wǎng)IP的服務(wù)器的IP地址;
[0079]服務(wù)器選擇模塊,用于選擇離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器,并將選擇出來的離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器的IP地址記錄下來,參見圖2所示。
[0080]本實施例提供一種用戶遠(yuǎn)程訪問HDFS集群的方法,用戶通過上述中間件訪問HDFS集群,具體包括以下步驟,參見圖3所示:
[0081](I)、在HDFS集群上具有公網(wǎng)IP的服務(wù)器上開啟數(shù)據(jù)調(diào)度或/和數(shù)據(jù)存儲的服務(wù);
[0082](2)、對需要遠(yuǎn)程訪問HDFS集群的用戶提供一個具有上述結(jié)構(gòu)的中間件;
[0083](3)、用戶使用上述中間件對HDFS集群進(jìn)行遠(yuǎn)程訪問:
[0084](3-1)、用戶使用上述中間件中客戶端模塊提供的用戶操作模塊提出訪問請求,訪問請求的內(nèi)容選擇下列操作中的一個或多個:創(chuàng)建文件、打開讀取文件、刪除文件、列出文件及創(chuàng)建文件夾;
[0085](3-2)、客戶端模塊根據(jù)IP封裝模塊中封裝的IP地址,通過服務(wù)器選擇模塊依次對各個服務(wù)器進(jìn)行連接測試,選擇網(wǎng)絡(luò)延遲最小的服務(wù)器,然后將用戶的訪問請求通過服務(wù)端模塊中的訪問請求處理模塊和訪問請求傳輸模塊發(fā)送給該服務(wù)器,將該服務(wù)器稱為轉(zhuǎn)接服務(wù)器;
[0086](3-3)、轉(zhuǎn)接服務(wù)器接收到用戶發(fā)送的訪問請求后,尋找距離該轉(zhuǎn)接服務(wù)器最近的數(shù)據(jù)存儲服務(wù)器,通過服務(wù)啟動模塊啟動該數(shù)據(jù)存儲服務(wù)器上數(shù)據(jù)調(diào)度或/和數(shù)據(jù)存儲的服務(wù),然后在用戶與該數(shù)據(jù)存儲服務(wù)器之間建立TCP連接,從而實現(xiàn)用戶對該數(shù)據(jù)存儲服務(wù)器的遠(yuǎn)程訪問操作。
[0087]所述步驟(3-2)中,查找網(wǎng)絡(luò)延遲最小的服務(wù)器的方法為:根據(jù)IP封裝模塊內(nèi)封裝的IP地址,依次對每個服務(wù)器的IP使用Ping命令,記錄從每個服務(wù)器收到返回包所需要的時間,最后從所記錄的時間中找出所需時間最短的服務(wù)器,該服務(wù)器即為離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器,并將該服務(wù)器的IP記錄下來。
[0088]所述步驟(3-3)中采用HDFS集群自帶的機(jī)架感知機(jī)制尋找距離轉(zhuǎn)接服務(wù)器最近的數(shù)據(jù)存儲服務(wù)器。圖4描述了 HDFS集群機(jī)架感知機(jī)制中節(jié)點(diǎn)間距離計算方法的流程圖,它采用樹來表示節(jié)點(diǎn)的網(wǎng)絡(luò)結(jié)構(gòu),節(jié)點(diǎn)間的距離用它們到最近的公共父節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)之和來進(jìn)行計算。例如,距離節(jié)點(diǎn)H1和節(jié)點(diǎn)H2最近的公共父節(jié)點(diǎn)為R1,節(jié)點(diǎn)H1到父節(jié)點(diǎn)R1的節(jié)點(diǎn)數(shù)為1,節(jié)點(diǎn)H2到父節(jié)點(diǎn)R1的節(jié)點(diǎn)數(shù)也為1,則節(jié)點(diǎn)H1和節(jié)點(diǎn)H2的距離為2 ;又如,節(jié)點(diǎn)H1與節(jié)點(diǎn)H6的最近的公共父節(jié)點(diǎn)為D1, H1到D1的節(jié)點(diǎn)數(shù)為2,H6到D1的節(jié)點(diǎn)數(shù)也為2,則節(jié)點(diǎn)H1與節(jié)點(diǎn)H6的距離為4。HDFS集群自帶的機(jī)架感知機(jī)制為常規(guī)技術(shù),不再繼續(xù)詳述。
[0089]本實施例中,所述中間件以Jar包的形式提供給用戶。
[0090]實施例二
[0091]與實施例一不同,所述中間件的客戶端模塊還包括:
[0092]加密模塊,用于對用戶名進(jìn)行加密,以生成驗證碼;
[0093]驗證模塊,用于對加密用戶的驗證碼進(jìn)行驗證;
[0094]所述服務(wù)端模塊還包括:用戶目錄建立模塊,用于在HDFS集群的數(shù)據(jù)存儲服務(wù)器中給用戶建立遠(yuǎn)程訪問目錄;參見圖5所示。
[0095]當(dāng)用戶與距離轉(zhuǎn)接服務(wù)器最近的數(shù)據(jù)存儲服務(wù)器連接后,所述中間件的用戶目錄建立模塊根據(jù)每個用戶的用戶名為它們建立一個目錄,用戶對HDFS集群中數(shù)據(jù)存儲服務(wù)器的一切訪問操作都只能在該目錄下進(jìn)行,而不能對其他用戶目錄下的內(nèi)容進(jìn)行訪問。
[0096]所述加密模塊中對用戶名進(jìn)行加密的方法為:
[0097]將用戶名按照下述規(guī)則進(jìn)行編碼,從而生成一個長為30個字符的驗證碼:
[0098]驗證碼的前六個字符為驗證碼的基礎(chǔ)信息,依次包括:密鑰、用戶名長度、每隔多少個字符插入無效字符、每次插入的無效字符數(shù)量、字符ο及字符k ;其中,每隔多少個字符插入無效字符稱為span,每次插入的無效字符數(shù)量稱為space,字符ο及字符k用來對驗證碼是否有效進(jìn)行驗證;密鑰為O到25之間隨機(jī)生成的一個數(shù)字,加密過程中,將用戶名的每個字符用秘鑰進(jìn)行加密,同時每加密span個字符便插入space個隨機(jī)字符,最后如果驗證碼長度小于30個字符,則在末尾插入隨機(jī)字符進(jìn)行補(bǔ)全;
[0099]所述驗證模塊通過如下方式對驗證碼進(jìn)行解密:
[0100]首先讀取出驗證碼的前六個字符,次序依次為密鑰、用戶名長度、每隔多少個字符插入無效字符、每次插入的無效字符數(shù)量、字符ο及字符k ;
[0101]如果這個驗證碼的第五位和第六位不是字符O和字符k,則說明這個驗證碼無效,返回空值;
[0102]然后用密鑰對剩下的字符進(jìn)行解碼,每解碼span個字符則跳過space個字符,直到解碼出來的明文長度與用戶名長度相同時結(jié)束,最后解碼得到完整的用戶名。
[0103]下面以用戶名是slxl23為例對上述加密和解密的過程進(jìn)行詳細(xì)描述:
[0104]密鑰key是隨機(jī)生成的,本例子中生成的密鑰key是“5”,根據(jù)字母表把它映射成“F”,Span (空多少位插入無效數(shù)據(jù))也是自動生成的,這里是“7”,所以映射成“H”,Space(每次插入無效數(shù)據(jù)的位數(shù)),這里是“O”,映射成“A”,Length (加密數(shù)據(jù)的長度),這里加密數(shù)據(jù)是“SLX123”,所以長度為6,映射成“G”。驗證碼前兩位字符用于確認(rèn)是否是正確的驗證碼字符“O”和字符“k”,利用密鑰key來進(jìn)行加密,公式為:(x」K' +key)%26+/ K',其中X是“ο”或者“k”,這里的key是5,所以加密結(jié)果分別為“T”、“P”,以上便是驗證碼前6位的含義。
[0105]接下來,對用戶名進(jìn)行加密,首先按照加密公式('S'-丨K' +key)%26+/ K'加密第一個數(shù)據(jù)“S”為X ;然后判斷是否需要插入無效字符,此處span為7,意思是指每加密7位數(shù)據(jù)便插入space個無效數(shù)據(jù),現(xiàn)在只加密了一位,因此不需要插入,然后直接加密下一位“L” ;重復(fù)以上步驟,將數(shù)據(jù)完全加密完成后,如果密文長度不足30位,則通過自動生成的無效字符填充不足的空間。因此加密后的驗證碼是FHAGTPXQCghiPHARPFRARGJYYEFYBR。
[0106]解密過程為加密的逆過程,先獲取前6位的信息,Key= " F " , " A " =5,Span= " H " , " A " =7,Space=...=0,Length=...=6, 0=( ' ? ' - ' k ' +26-key)%26+ ' A ' = ' ο ',k=( ' T ' - ' A ' +26-key) %26+ ' A ' = ' k ';先判斷第五位和第六位的字符是否為“ο”和“k”,如果是,則說明密文有效,然后才開始解密。先解密第一位('V K' +26-key)%26+/ K' =' S',然后通過span判斷下一位是否為無效字符,因為span為7,可知不是無效字符,所以繼續(xù)解密得到“L”,重復(fù)以上步驟;當(dāng)解碼出來的明文長度為length時停止解密過程。此時的明文就是被加密的數(shù)據(jù),解碼后得到的用戶名SLX123。`
【權(quán)利要求】
1.一種用戶遠(yuǎn)程訪問HDFS集群的裝置,其特征在于,包括連接用戶與HDFS集群的中間件,所述中間件包括相互之間有調(diào)度關(guān)系的服務(wù)端模塊和客戶端模塊,其中, 服務(wù)端模塊包括: 服務(wù)啟動模塊,用于啟動HDFS集群中服務(wù)器上數(shù)據(jù)調(diào)度和數(shù)據(jù)存儲的服務(wù); 訪問請求處理模塊,用于處理用戶發(fā)來的訪問請求; 訪問請求傳輸模塊,用于傳輸用戶發(fā)來的訪問請求; 文件管理模塊,用于管理用戶在HDFS集群中數(shù)據(jù)存儲服務(wù)器上的文件信息; 客戶端模塊包括: 用戶操作模塊,用于接收用戶的訪問請求; IP封裝模塊,用于封裝HDFS集群上具有公網(wǎng)IP的服務(wù)器的IP地址; 服務(wù)器選擇模塊,用于選擇離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器,并將選擇出來的離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器的IP地址記錄下來。
2.根據(jù)權(quán)利要求1所述的用戶遠(yuǎn)程訪問HDFS集群的裝置,其特征在于,所述中間件的客戶端模塊還包括: 加密模塊,用于對用戶名進(jìn)行加密,以生成驗證碼; 驗證模塊,用于對加密用戶的驗證碼進(jìn)行驗證; 所述服務(wù)端模塊還包括:用戶目錄建立模塊,用于在HDFS集群的數(shù)據(jù)存儲服務(wù)器中給用戶建立遠(yuǎn)程訪問目錄。
3.一種用戶遠(yuǎn)程訪問HDFS集群的方法,其特征在于,包括以下步驟: (1)、在HDFS集群上具有公網(wǎng)IP的服務(wù)器上開啟數(shù)據(jù)調(diào)度或/和數(shù)據(jù)存儲的服務(wù); (2)、對向需要遠(yuǎn)程訪問HDFS集群的用戶提供一個中間件,所述中間件包括相互之間有調(diào)度關(guān)系的服務(wù)端模塊和客戶端模塊,其中, 服務(wù)端模塊包括: 服務(wù)啟動模塊,用于啟動服務(wù)器上數(shù)據(jù)調(diào)度和數(shù)據(jù)存儲的服務(wù); 訪問請求處理模塊,用于處理用戶發(fā)來的訪問請求; 訪問請求傳輸模塊,用于傳輸用戶發(fā)來的訪問請求; 文件管理模塊,用于管理用戶在HDFS集群中數(shù)據(jù)存儲服務(wù)器上的文件信息; 客戶端模塊包括: 用戶操作模塊,用于接收用戶的訪問請求; IP封裝模塊,用于封裝HDFS集群上具有公網(wǎng)IP的服務(wù)器的IP地址; 服務(wù)器選擇模塊,用于選擇離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器,并將選擇出來的離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器的IP地址記錄下來; (3)、用戶使用上述中間件對HDFS集群進(jìn)行遠(yuǎn)程訪問: (3-1)、用戶使用上述中間件中客戶端模塊提供的用戶操作模塊提出訪問請求,訪問請求的內(nèi)容選擇下列操作中的一個或多個:創(chuàng)建文件、打開讀取文件、刪除文件、列出文件及創(chuàng)建文件夾; (3-2)、客戶端模塊根據(jù)IP封裝模塊中封裝的IP地址,通過服務(wù)器選擇模塊依次對各個服務(wù)器進(jìn)行連接測試,選擇網(wǎng)絡(luò)延遲最小的服務(wù)器,然后用戶的訪問請求通過服務(wù)端模塊中的訪問請求處理模塊和訪問請求傳輸模塊發(fā)送該服務(wù)器,將該服務(wù)器稱為轉(zhuǎn)接服務(wù)器; (3-3)、轉(zhuǎn)接服務(wù)器接收到用戶發(fā)送的訪問請求后,尋找距離該轉(zhuǎn)接服務(wù)器最近的數(shù)據(jù)存儲服務(wù)器,通過服務(wù)啟動模塊啟該數(shù)據(jù)存儲服務(wù)器上數(shù)據(jù)調(diào)度或/和數(shù)據(jù)存儲的服務(wù),然后在用戶與該數(shù)據(jù)存儲服務(wù)器之間建立TCP連接,從而實現(xiàn)用戶對該數(shù)據(jù)存儲服務(wù)器的遠(yuǎn)程訪問操作。
4.根據(jù)權(quán)利要求3所述的用戶遠(yuǎn)程訪問HDFS集群的方法,其特征在于,所述中間件的客戶端模塊還包括: 加密模塊,用于對用戶名進(jìn)行加密,以生成驗證碼; 驗證模塊,用于對加密用戶的驗證碼進(jìn)行驗證; 所述服務(wù)端模塊還包括:用戶目錄建立模塊,用于在HDFS集群的數(shù)據(jù)存儲服務(wù)器中給用戶建立遠(yuǎn)程訪問目錄; 當(dāng)用戶與距離轉(zhuǎn)接服務(wù)器最近的數(shù)據(jù)存儲服務(wù)器連接后,所述中間件的用戶目錄建立模塊根據(jù)每個用戶的用戶名為它們建立一個目錄,用戶對HDFS集群中數(shù)據(jù)存儲服務(wù)器的一切訪問操作都只能在該目錄下進(jìn)行,而不能對其他用戶目錄下的內(nèi)容進(jìn)行訪問。
5.根據(jù)權(quán)利要求4所述的用戶遠(yuǎn)程訪問HDFS集群的方法,其特征在于,所述加密模塊中對用戶名進(jìn)行加密方法為: 將用戶名按照下述規(guī)則進(jìn)行編碼,從而生成一個長30個字符的驗證碼: 驗證碼的前六個字符為驗證碼的基礎(chǔ)信息,依次包括:密鑰、用戶名長度、每隔多少個字符插入無效字符、每次插入的無效字符數(shù)量、字符ο及字符k,每隔多少個字符插入無效字符稱為span,每次插入的無效字符數(shù)量稱為space,其中字符ο及字符k用來對驗證碼是否有效進(jìn)行驗證,密鑰為O到25之間的一個數(shù)字中隨機(jī)生成的一個數(shù)字,加密過程中,將用戶名的每個字符用秘鑰進(jìn)行加密,同時每加密span個字符便插入space個隨機(jī)字符,最后如果驗證碼長度小于30個字符,則在末尾插入隨機(jī)字符進(jìn)行補(bǔ)全; 所述驗證模塊通過如下方式對驗證碼進(jìn)行解密: 首先讀取出驗證碼的前六個字符,次序依次為密鑰、用戶名長度、每隔多少個字符插入無效字符、每次插入的無效字符數(shù)量、字符ο及字符k ; 如果這個驗證碼第五位和第六位不是字符ο和字符k,則說明這個驗證碼無效,返回空值; 然后用密鑰對剩下的字符進(jìn)行解碼,每解碼span個字符則跳過space個字符,直到解碼出明文長度為用戶名長度個字符串時結(jié)束,最后解碼得到完整的用戶名。
6.根據(jù)權(quán)利要求3所述的用戶遠(yuǎn)程訪問HDFS集群的方法,其特征在于,所述步驟(3-2)中,查找網(wǎng)絡(luò)延遲最小的服務(wù)器的方法為:根據(jù)IP封裝模塊內(nèi)封裝的IP地址,依次對每個服務(wù)器的IP使用Ping命令,記錄從每個服務(wù)器收到返回包所需要的時間,最后從所記錄的時間中找出所需時間最短的服務(wù)器,該服務(wù)器即為離用戶網(wǎng)絡(luò)拓?fù)渥罱姆?wù)器,并將該服務(wù)器的IP記錄下來。
7.根據(jù)權(quán)利要求3所述的用戶遠(yuǎn)程訪問HDFS集群的方法,其特征在于,所述步驟(3-3)采用HDFS集群自帶的機(jī)架感知機(jī)制尋找距離轉(zhuǎn)接服務(wù)器最近的數(shù)據(jù)存儲服務(wù)器。
8.根據(jù)權(quán)利要求3所述的用戶遠(yuǎn)程訪問HDFS集群的方法,其特征在于,所述中間件以Jar包的形式提供給用戶。
【文檔編號】H04L29/06GK103561033SQ201310554689
【公開日】2014年2月5日 申請日期:2013年11月8日 優(yōu)先權(quán)日:2013年11月8日
【發(fā)明者】沈沛意, 董洛兵, 宋娟, 張亮, 孫庚澤薛丹, 劉暢 申請人:西安電子科技大學(xué)寧波信息技術(shù)研究院