數(shù)據(jù)存儲(chǔ)的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,具體而言,涉及一種數(shù)據(jù)存儲(chǔ)的方法和裝置。
【背景技術(shù)】
[0002] 分布式集群存儲(chǔ)是一種大數(shù)據(jù)存儲(chǔ)管理的關(guān)鍵技術(shù),其中HDFS(Had〇〇p Distributed File System,Hadoop分布式文件系統(tǒng))因其高傳輸率和高容錯(cuò)性成為解決大 數(shù)據(jù)高效存儲(chǔ)應(yīng)用的有效方法。
[0003] 現(xiàn)有的一種實(shí)現(xiàn)方式是將最優(yōu)緩存容量設(shè)計(jì)問(wèn)題描述為整數(shù)規(guī)劃問(wèn)題,但是現(xiàn)有 的HDFS數(shù)據(jù)放置策略在選擇數(shù)據(jù)可靠性提升的同時(shí),沒(méi)有兼顧到數(shù)據(jù)均衡問(wèn)題和系統(tǒng)執(zhí)行 性能,造成數(shù)據(jù)存儲(chǔ)緩慢且系統(tǒng)處理性能低。
[0004] 針對(duì)上述的問(wèn)題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供了一種數(shù)據(jù)存儲(chǔ)的方法和裝置,能夠在保證數(shù)據(jù)均衡分布的同 時(shí),快速完成數(shù)據(jù)存儲(chǔ),提升系統(tǒng)處理性能。
[0006] 根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種數(shù)據(jù)存儲(chǔ)的方法,包括:獲取待存儲(chǔ)的 數(shù)據(jù);通過(guò)哈希運(yùn)算在存儲(chǔ)空間內(nèi)確定所述數(shù)據(jù)對(duì)應(yīng)的機(jī)架;獲取所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)副 本,并通過(guò)哈希運(yùn)算確定所述數(shù)據(jù)副本在所述機(jī)架上的數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)的存儲(chǔ)區(qū)域;其中,所 述存儲(chǔ)空間為環(huán)形存儲(chǔ)空間,所述數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)多個(gè)虛擬數(shù)據(jù)節(jié)點(diǎn),所述多個(gè)虛擬數(shù)據(jù)節(jié) 點(diǎn)負(fù)責(zé)的存儲(chǔ)空間由多個(gè)均分的存儲(chǔ)區(qū)域組成;將所述數(shù)據(jù)副本存儲(chǔ)在所述存儲(chǔ)區(qū)域內(nèi)。
[0007] 可選地,在荻取待存儲(chǔ)的數(shù)據(jù)前,所述方法還包括:將所述存儲(chǔ)空間進(jìn)行均分操作 得到多個(gè)均分的存儲(chǔ)區(qū)域。
[0008] 可選地,在所述獲取所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)副本前,所述方法還包括:確定所述機(jī)架 是否異常;所述獲取所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)副本包括:在確定所述機(jī)架正常時(shí),獲取所述數(shù)據(jù) 對(duì)應(yīng)的數(shù)據(jù)副本;在確定所述機(jī)架異常時(shí),按照順時(shí)針順序在所述存儲(chǔ)空間內(nèi)搜索下一機(jī) 架。
[0009] 可選地,在所述將所述數(shù)據(jù)副本存儲(chǔ)在所述存儲(chǔ)區(qū)域內(nèi)之前,所述方法還包括:在 通過(guò)哈希運(yùn)算確定所述數(shù)據(jù)副本在所述機(jī)架上的數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)的存儲(chǔ)區(qū)域后,確定所述機(jī) 架上的數(shù)據(jù)節(jié)點(diǎn)是否異常;在確定所述數(shù)據(jù)節(jié)點(diǎn)異常時(shí),按照順時(shí)針順序在所述存儲(chǔ)空間 內(nèi)搜索下一機(jī)架;在確定所述數(shù)據(jù)節(jié)點(diǎn)正常時(shí),確定所述數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)的存儲(chǔ)區(qū)域是否充 足;所述將所述數(shù)據(jù)副本存儲(chǔ)在所述存儲(chǔ)區(qū)域內(nèi)包括:在確定所述存儲(chǔ)區(qū)域充足時(shí),將所述 數(shù)據(jù)副本存儲(chǔ)在所述存儲(chǔ)區(qū)域內(nèi);在確定所述存儲(chǔ)區(qū)域不充足時(shí),按照順時(shí)針順序在所述 存儲(chǔ)空間內(nèi)搜索所述機(jī)架上的下一數(shù)據(jù)節(jié)點(diǎn)。
[0010] 可選地,在將所述數(shù)據(jù)副本存儲(chǔ)在所述存儲(chǔ)區(qū)域內(nèi)之后,所述方法還包括:確定全 部數(shù)據(jù)副本是否存儲(chǔ)完成;在確定全部數(shù)據(jù)副本未存儲(chǔ)完成時(shí),按照順時(shí)針順序在所述存 儲(chǔ)空間內(nèi)搜索下一機(jī)架。
[0011] 根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種數(shù)據(jù)存儲(chǔ)的裝置,包括:獲取單元, 用于獲取待存儲(chǔ)的數(shù)據(jù);處理單元,用于通過(guò)哈希運(yùn)算在存儲(chǔ)空間內(nèi)確定所述數(shù)據(jù)對(duì)應(yīng)的 機(jī)架,并獲取所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)副本,并通過(guò)哈希運(yùn)算確定所述數(shù)據(jù)副本在所述機(jī)架上 的數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)的存儲(chǔ)區(qū)域;其中,所述存儲(chǔ)空間為環(huán)形存儲(chǔ)空間,所述數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)多個(gè) 虛擬數(shù)據(jù)節(jié)點(diǎn),所述多個(gè)虛擬數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)的存儲(chǔ)空間由多個(gè)均分的存儲(chǔ)區(qū)域組成;存儲(chǔ) 單元,用于將所述數(shù)據(jù)副本存儲(chǔ)在所述存儲(chǔ)區(qū)域內(nèi)。
[0012] 可選地,所述處理單元,還用于在獲取待存儲(chǔ)的數(shù)據(jù)前,將所述存儲(chǔ)空間進(jìn)行均分 操作得到多個(gè)均分的存儲(chǔ)區(qū)域。
[0013] 可選地,所述裝置還包括:第一判斷單元,用于在所述獲取所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)副 本前,確定所述機(jī)架是否異常:所述處理單元,用于在所述第一判斷單元確定所述機(jī)架正常 時(shí),獲取所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)副本;在所述第一判斷單元確定所述機(jī)架異常時(shí),按照順時(shí)針 順序在所述存儲(chǔ)空間內(nèi)搜索下一機(jī)架。
[0014] 可選地,所述裝置還包括:第二判斷單元,用于在所述將所述數(shù)據(jù)副本存儲(chǔ)在所述 存儲(chǔ)區(qū)域內(nèi)之前,在通過(guò)哈希運(yùn)算確定所述數(shù)據(jù)副本在所述機(jī)架上的數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)的存儲(chǔ) 區(qū)域之后,確定所述機(jī)架上的數(shù)據(jù)節(jié)點(diǎn)是否異常;所述處理單元,用于在所述第二判斷單元 確定所述數(shù)據(jù)節(jié)點(diǎn)異常時(shí),按照順時(shí)針順序在所述存儲(chǔ)空間內(nèi)搜索下一機(jī)架;第二判斷單 元,還用于在確定所述數(shù)據(jù)節(jié)點(diǎn)正常時(shí),確定所述數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)的存儲(chǔ)區(qū)域是否充足;所述 存儲(chǔ)單元,用于在所述第二判斷單元確定所述存儲(chǔ)區(qū)域充足時(shí),將所述數(shù)據(jù)副本存儲(chǔ)在所 述存儲(chǔ)區(qū)域內(nèi);所述處理單元,用于在所述第二判斷單元確定所述存儲(chǔ)區(qū)域不充足時(shí),按照 順時(shí)針順序在所述存儲(chǔ)空間內(nèi)搜索所述機(jī)架上的下一數(shù)據(jù)節(jié)點(diǎn)。
[0015] 可選地,所述裝置還包括:第三判斷單元,在將所述數(shù)據(jù)副本存儲(chǔ)在所述存儲(chǔ)區(qū)域 內(nèi)之后,確定全部數(shù)據(jù)副本是否存儲(chǔ)完成;所述處理單元,用于在確定全部數(shù)據(jù)副本未存儲(chǔ) 完成后,按照順時(shí)針順序在所述存儲(chǔ)空間內(nèi)搜索下一機(jī)架。
[0016] 在本發(fā)明實(shí)施例中,獲取待存儲(chǔ)的數(shù)據(jù);通過(guò)哈希運(yùn)算在存儲(chǔ)空間內(nèi)確定數(shù)據(jù)對(duì) 應(yīng)的機(jī)架;獲取數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)副本,并通過(guò)哈希運(yùn)算確定內(nèi)數(shù)據(jù)副本在機(jī)架上的數(shù)據(jù)節(jié) 點(diǎn)對(duì)應(yīng)的存儲(chǔ)區(qū)域;其中,存儲(chǔ)空間為環(huán)形存儲(chǔ)空間,數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)多個(gè)虛擬節(jié)點(diǎn),多個(gè)虛 擬節(jié)點(diǎn)負(fù)責(zé)的存儲(chǔ)空間由多個(gè)均分的存儲(chǔ)區(qū)域組成;將數(shù)據(jù)副本存儲(chǔ)在存儲(chǔ)區(qū)域內(nèi),這樣, 本發(fā)明通過(guò)哈希算法并引入虛擬數(shù)據(jù)節(jié)點(diǎn)與等分存儲(chǔ)區(qū)域完成數(shù)據(jù)存儲(chǔ),從而能夠在保證 數(shù)據(jù)均衡分布的同時(shí),快速完成數(shù)據(jù)存儲(chǔ),提升系統(tǒng)處理性能的技術(shù)問(wèn)題。
【附圖說(shuō)明】
[0017] 此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā) 明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0018] 圖1是根據(jù)本發(fā)明實(shí)施例的一種可選的數(shù)據(jù)存儲(chǔ)方法的流程示意圖;
[0019] 圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的機(jī)架迀移的示意圖;
[0020] 圖3是根據(jù)本發(fā)明實(shí)施例的一種可選的機(jī)架備份分布示意圖;
[0021] 圖4是根據(jù)本發(fā)明實(shí)施例的一種可選的數(shù)據(jù)連接查詢運(yùn)行時(shí)間對(duì)比圖;
[0022] 圖5是根據(jù)本發(fā)明實(shí)施例的一種可選的實(shí)際備份分布情況及運(yùn)行時(shí)間對(duì)比圖;
[0023] 圖6是根據(jù)本發(fā)明實(shí)施例的一種可選的數(shù)據(jù)節(jié)點(diǎn)調(diào)整后備份分布情況圖;
[0024] 圖7是根據(jù)本發(fā)明實(shí)施例的另一種可選的數(shù)據(jù)存儲(chǔ)方法的流程示意圖;
[0025] 圖8是根據(jù)本發(fā)明實(shí)施例的一種可選的數(shù)據(jù)存儲(chǔ)方法的流程示意圖;
[0026] 圖9是根據(jù)本發(fā)明實(shí)施例的一種可選的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖;
[0027] 圖10是根據(jù)本發(fā)明實(shí)施例的另一種可選的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖;
[0028] 圖11是根據(jù)本發(fā)明實(shí)施例的第三種可選的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0029] 為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的 附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是 本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人 員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范 圍。
[0030] 需要說(shuō)明的是,本發(fā)明的說(shuō)明書和權(quán)利要求書及上述附圖中的術(shù)語(yǔ)"第一"、"第 二"等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用 的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或 描述的那些以外的順序?qū)嵤?。此外,術(shù)語(yǔ)"包括"和"具有"以及他們的任何變形,意圖在于覆 蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于 清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品 或設(shè)備固有的其它步驟或單元。
[0031] 圖1是根據(jù)本發(fā)明實(shí)施例的一種數(shù)據(jù)存儲(chǔ)的方法,如圖1所示,本發(fā)明實(shí)施例的執(zhí) 行主體為數(shù)據(jù)存儲(chǔ)的裝置,該方法包括如下步驟:
[0032] 步驟S101、獲取待存儲(chǔ)的數(shù)據(jù)。
[0033] 步驟S102、通過(guò)哈希運(yùn)算在存儲(chǔ)空間內(nèi)確定該數(shù)據(jù)對(duì)應(yīng)的機(jī)架。
[0034]步驟S103、獲取該數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)副本,并通過(guò)哈希運(yùn)算確定該數(shù)據(jù)副本在該機(jī) 架上的數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)的存儲(chǔ)區(qū)域。
[0035] 其中,該存儲(chǔ)空間為環(huán)形存儲(chǔ)空間,該數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)多個(gè)虛擬數(shù)據(jù)節(jié)點(diǎn),該多個(gè)虛 擬數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)的存儲(chǔ)空間由多個(gè)均分的存儲(chǔ)區(qū)域組成。
[0036] 進(jìn)一步地,在獲取待存儲(chǔ)的數(shù)據(jù)前,將該存儲(chǔ)空間進(jìn)行均分操作得到多個(gè)均分的 存儲(chǔ)區(qū)域。
[0037] 其中,將環(huán)形存儲(chǔ)空間進(jìn)行均分操作,此時(shí)存儲(chǔ)空間中的所有虛擬節(jié)點(diǎn)都包含多 個(gè)均分存儲(chǔ)區(qū)域,即每一個(gè)虛擬節(jié)點(diǎn)負(fù)責(zé)的存儲(chǔ)空間都由多個(gè)均分區(qū)域組成。當(dāng)數(shù)據(jù)節(jié)點(diǎn) 通過(guò)哈希運(yùn)算映射到存儲(chǔ)空間后,定址找到數(shù)據(jù)節(jié)點(diǎn)所處位置的第一個(gè)均分區(qū)域?yàn)榇斯?jié)點(diǎn) 的映射位置,若位置沖突則使用線性探測(cè)再散列的方法順時(shí)針?lè)较蚶^續(xù)查找下一個(gè)均分區(qū) 域,直到每個(gè)數(shù)據(jù)節(jié)點(diǎn)負(fù)