国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種數(shù)據(jù)操作方法,服務(wù)器及存儲系統(tǒng)的制作方法

      文檔序號:10572730閱讀:268來源:國知局
      一種數(shù)據(jù)操作方法,服務(wù)器及存儲系統(tǒng)的制作方法
      【專利摘要】一種數(shù)據(jù)操作方法,服務(wù)器及存儲系統(tǒng),涉及存儲領(lǐng)域,能夠保證Hadoop在功能支撐完全的前提下使用鍵值存儲。該方法包括:名稱節(jié)點(diǎn)模塊接收HDFS客戶端發(fā)送的操作請求消息,該操作請求消息基于Hadoop平臺中名稱節(jié)點(diǎn)與HDFS客戶端之間的ClientProtocol通信協(xié)議;根據(jù)該操作請求消息中包括的該目標(biāo)文件的文件名確定鍵key,并根據(jù)該key確定值value的存儲空間的位置,該value為該目標(biāo)文件的數(shù)據(jù);根據(jù)該操作請求消息中的起始地址信息以及數(shù)據(jù)長度信息獲取該目標(biāo)數(shù)據(jù)在該存儲空間中的目標(biāo)塊地址信息;向該HDFS客戶端發(fā)送用于響應(yīng)該操作請求消息的響應(yīng)消息,該響應(yīng)消息包括該目標(biāo)塊地址信息。
      【專利說明】
      一種數(shù)據(jù)操作方法,服務(wù)器及存儲系統(tǒng)
      技術(shù)領(lǐng)域
      [0001] 本發(fā)明涉及存儲領(lǐng)域,尤其涉及一種數(shù)據(jù)操作方法,服務(wù)器及存儲系統(tǒng)。
      【背景技術(shù)】
      [0002] 現(xiàn)有技術(shù)中對大數(shù)據(jù)的處理采用基于Hadoop的平臺。Hadoop是一個開源分布式計(jì) 算平臺,其核心包括HDFS(Hadoop Distributed Files System,Hadoop分布式文件系統(tǒng))。
      [0003] HDFS包括名字節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn),名字節(jié)點(diǎn)用于元數(shù)據(jù)的管理和處理,數(shù)據(jù)節(jié)點(diǎn)用 于以文件形式存儲數(shù)據(jù)。名字節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)可以是專用設(shè)備。也可以是運(yùn)行在普通計(jì)算 機(jī)上的軟件,通常由一臺專門的機(jī)器來運(yùn)行名字節(jié)點(diǎn)軟件,其他每臺機(jī)器運(yùn)行一個數(shù)據(jù)節(jié) 點(diǎn)軟件。一臺機(jī)器上也可以運(yùn)行多個數(shù)據(jù)節(jié)點(diǎn)軟件。每臺運(yùn)行數(shù)據(jù)節(jié)點(diǎn)軟件的機(jī)器具有本 地的文件系統(tǒng)。HDFS是建立在多個機(jī)器文件系統(tǒng)上的一個邏輯上的文件系統(tǒng),它的底層數(shù) 據(jù)以數(shù)據(jù)塊方式進(jìn)行存儲。數(shù)據(jù)節(jié)點(diǎn)將HDFS數(shù)據(jù)存儲到本地的文件系統(tǒng)中,其中,數(shù)據(jù)節(jié)點(diǎn) 并不知道HDFS文件的存在,它在本地文件系統(tǒng)中以單獨(dú)的文件存儲每一個HDFS文件的數(shù)據(jù) 塊。
      [0004]鍵值(key-value)存儲中,數(shù)據(jù)被稱作值(value),每個數(shù)據(jù)對應(yīng)著一個唯一的標(biāo) 識(key ),根據(jù)唯一標(biāo)識(key)可以直接定位到值(value)的位置,因此,鍵值存儲不再有類 似文件系統(tǒng)的目錄層級結(jié)構(gòu),而是完全扁平化存儲,這樣,相比文件存儲,鍵值存儲更容易 進(jìn)行容量擴(kuò)展,并且由于數(shù)據(jù)讀寫可以直通對象層,鍵值存儲比目錄結(jié)構(gòu)的存儲方式的讀 寫效率也更高。
      [0005] 如何把Hadoop與鍵值存儲這兩種先進(jìn)技術(shù)進(jìn)行結(jié)合,是業(yè)界亟待解決的問題。但 是,由于Hadoop的一些功能的實(shí)現(xiàn)直接依賴HDFS,例如,HBase(Hadoop database,Hadoop的 數(shù)據(jù)庫)備份以及系統(tǒng)查詢impala等,直接利用鍵值存儲系統(tǒng)替換Hadoop中的HDFS,將導(dǎo)致 Hadoop的功能支撐不全,因此,現(xiàn)有技術(shù)中還沒有使用鍵值存儲系統(tǒng)結(jié)合HDFS的完善方案。

      【發(fā)明內(nèi)容】

      [0006] 本發(fā)明的目的是提供一種數(shù)據(jù)操作方法,服務(wù)器及存儲系統(tǒng),能夠保證Hadoop在 功能支撐完全的前提下使用鍵值存儲。
      [0007] 為了達(dá)到上述目的,本發(fā)明采用如下的技術(shù)方案:
      [0008] 第一方面,提供一種數(shù)據(jù)操作方法,所述方法應(yīng)用于存儲系統(tǒng),所述存儲系統(tǒng)包括 名稱節(jié)點(diǎn)模塊,數(shù)據(jù)節(jié)點(diǎn)模塊,以及鍵值KV存儲設(shè)備;所述方法包括:名稱節(jié)點(diǎn)模塊接收分 布式文件系統(tǒng)HDFS客戶端發(fā)送的操作請求消息,所述操作請求消息是用于請求獲取目標(biāo)文 件中待操作的目標(biāo)數(shù)據(jù)的在HDFS中的塊地址信息,以對所述目標(biāo)數(shù)據(jù)進(jìn)行操作;所述操作 請求消息基于Hadoop平臺中名稱節(jié)點(diǎn)與HDFS客戶端之間的ClientProtocol通信協(xié)議;根據(jù) 所述操作請求消息中包括的所述目標(biāo)文件的文件名確定鍵k e y,并根據(jù)所述k e y確定值 value的存儲空間的位置,所述value為所述目標(biāo)文件的數(shù)據(jù);根據(jù)所述操作請求消息中的 起始地址信息以及數(shù)據(jù)長度信息獲取所述目標(biāo)數(shù)據(jù)在所述存儲空間中的目標(biāo)塊地址信息; 向所述HDFS客戶端發(fā)送用于響應(yīng)所述操作請求消息的響應(yīng)消息,所述響應(yīng)消息包括所述目 標(biāo)塊地址信息。其中,該響應(yīng)消息也是基于該ClientProtocol通信協(xié)議,并且,第一方面中, HDFS客戶端接收到名稱節(jié)點(diǎn)模塊發(fā)送的該響應(yīng)消息后,可以基于Hadoop平臺中數(shù)據(jù)節(jié)點(diǎn)與 HDFS客戶端之間的ClientDatanodeProtocol通信協(xié)議將包括該目標(biāo)地址信息的操作指令 發(fā)送至數(shù)據(jù)節(jié)點(diǎn)模塊,該數(shù)據(jù)節(jié)點(diǎn)模塊可以根據(jù)該目標(biāo)地址信息對目標(biāo)數(shù)據(jù)進(jìn)行該操作指 令指示的操作。這樣,名稱節(jié)點(diǎn)模塊與HDFS客戶端之間、數(shù)據(jù)節(jié)點(diǎn)模塊與HDFS客戶端之間均 是基于Hadoop平臺的原生協(xié)議進(jìn)行通信,從而保證了對Hadoop其他功能的支撐,在此前提 下,由于HDFS文件的數(shù)據(jù)在底層做鍵值存儲,從而提高了數(shù)據(jù)的讀寫效率以及容量擴(kuò)展性。
      [0009] 在結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述操作請求消息中包括 的所述目標(biāo)文件的文件名確定鍵key,包括:根據(jù)所述文件名確定所述目標(biāo)文件的索引節(jié)點(diǎn) inode編號;將所述inode編號作為所述key確定所述value的存儲空間的位置。inode編號計(jì) 算機(jī)識別文件的標(biāo)識,在上述可能的實(shí)現(xiàn)方式中,一個HDFS文件的數(shù)據(jù)為KV存儲設(shè)備中一 個value,HDFS文件的inode編號為value的鍵key,根據(jù)鍵值存儲的實(shí)現(xiàn)機(jī)制,所述名稱節(jié)點(diǎn) 模塊通過key可以直接定位到value的位置。
      [0010] 結(jié)合第一方面或者第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能 的實(shí)現(xiàn)方式中,所述根據(jù)所述操作請求消息中的起始地址信息以及數(shù)據(jù)長度信息獲取所述 目標(biāo)數(shù)據(jù)在所述存儲空間中的目標(biāo)塊地址信息,包括:根據(jù)所述起始地址信息以及所述數(shù) 據(jù)長度信息,獲取所述目標(biāo)數(shù)據(jù)在所述存儲空間中占用的每個塊的編號,以及在每個所述 塊中的塊偏移量和塊長度。所述塊為KV存儲設(shè)備中的物理存儲單元,上述可能的實(shí)現(xiàn)方式 中,名稱節(jié)點(diǎn)在確定value的存儲空間的位置后,根據(jù)起始地址信息和數(shù)據(jù)長度信息可確定 待操作的目標(biāo)數(shù)據(jù)位于該存儲空間的哪些物理存儲單元上。
      [0011] 結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式 中,所述目標(biāo)數(shù)據(jù)在HDFS中的塊地址信息包括所述目標(biāo)數(shù)據(jù)在HDFS中占用的每個邏輯塊的 編號,以及在每個所述邏輯塊中的邏輯塊偏移量和邏輯塊長度;所述向所述HDFS客戶端發(fā) 送用于響應(yīng)所述操作請求消息的響應(yīng)消息,包括:將所述塊的編號作為所述邏輯塊的編號, 將所述塊偏移量作為所述邏輯塊偏移量,將所述塊長度作為所述邏輯塊長度發(fā)送至所述 HDFS客戶端。Hadoop平臺中名稱節(jié)點(diǎn)返回至HDFS客戶端的響應(yīng)消息包括目標(biāo)數(shù)據(jù)在所屬文 件中的塊地址信息,目標(biāo)數(shù)據(jù)在文件中的塊地址是邏輯地址,數(shù)據(jù)節(jié)點(diǎn)根據(jù)該邏輯塊地址 讀取數(shù)據(jù)時,經(jīng)過數(shù)據(jù)節(jié)點(diǎn)本地文件系統(tǒng)的層級結(jié)構(gòu)最終獲取到目標(biāo)數(shù)據(jù),在上述可能的 實(shí)現(xiàn)方式中,所述名稱節(jié)點(diǎn)模塊將KV存儲設(shè)備中的物理塊地址信息返回至HDFS客戶端,這 樣,數(shù)據(jù)節(jié)點(diǎn)模塊在接收到HDFS客戶端發(fā)送的包括該物理塊地址信息的操作指令后,可以 直接在KV存儲設(shè)備中對所述目標(biāo)數(shù)據(jù)進(jìn)行操作,無需經(jīng)過文件系統(tǒng),從而提高了數(shù)據(jù)讀寫 的效率。
      [0012] 在上述第一方面或者以上第一方面的任一種可能的實(shí)現(xiàn)方式中,該操作請求消息 可以為讀請求消息,也可以為寫請求消息。
      [0013] 第二方面,提供一種數(shù)據(jù)操作方法,所述方法應(yīng)用于存儲系統(tǒng),所述存儲系統(tǒng)包括 名稱節(jié)點(diǎn)模塊,數(shù)據(jù)節(jié)點(diǎn)模塊,以及鍵值KV存儲設(shè)備;所述方法包括:所述數(shù)據(jù)節(jié)點(diǎn)模塊接 收分布式文件系統(tǒng)HDFS客戶端發(fā)送的操作指令,所述操作指令用于對目標(biāo)文件中待操作的 目標(biāo)數(shù)據(jù)進(jìn)行操作;所述操作指令基于Hadoop平臺中數(shù)據(jù)節(jié)點(diǎn)與HDFS客戶端之間的 ClientDatanodeProtocol通信協(xié)議;所述操作指令包括所述KV存儲設(shè)備中存儲所述目標(biāo)數(shù) 據(jù)的塊地址信息;根據(jù)所述塊地址信息對所述目標(biāo)數(shù)據(jù)進(jìn)行所述操作指令指示的操作。
      [0014] 第三方面,提供一種名稱節(jié)點(diǎn)模塊,所述名稱節(jié)點(diǎn)模塊應(yīng)用于存儲系統(tǒng),所述存儲 系統(tǒng)還包括數(shù)據(jù)節(jié)點(diǎn)模塊以及鍵值KV存儲設(shè)備;所述名稱節(jié)點(diǎn)模塊包括:接收單元,用于接 收分布式文件系統(tǒng)HDFS客戶端發(fā)送的操作請求消息,所述操作請求消息是用于請求獲取目 標(biāo)文件中待操作的目標(biāo)數(shù)據(jù)的在HDFS中的塊地址信息,以對所述目標(biāo)數(shù)據(jù)進(jìn)行操作;所述 操作請求消息基于Hadoop平臺中名稱節(jié)點(diǎn)與HDFS客戶端之間的ClientProtocol通信協(xié)議; 確定單元,用于根據(jù)所述操作請求消息中包括的所述目標(biāo)文件的文件名確定鍵key,并根據(jù) 所述key確定值value的存儲空間的位置,所述value為所述目標(biāo)文件的數(shù)據(jù);獲取單元,用 于根據(jù)所述操作請求消息中的起始地址信息以及數(shù)據(jù)長度信息獲取所述目標(biāo)數(shù)據(jù)在所述 存儲空間中的目標(biāo)塊地址信息;發(fā)送單元,用于向所述HDFS客戶端發(fā)送用于響應(yīng)所述操作 請求消息的響應(yīng)消息,所述響應(yīng)消息包括所述目標(biāo)塊地址信息。
      [0015] 在結(jié)合第三方面的第一種可能的實(shí)現(xiàn)方式中,所述確定單元具體用于:根據(jù)所述 文件名確定所述目標(biāo)文件的索引節(jié)點(diǎn)inode編號;將所述inode編號作為所述key確定所述 value的存儲空間的位置。
      [0016] 結(jié)合第三方面或者第三方面的第一種可能的實(shí)現(xiàn)方式,在第三方面的第二種可能 的實(shí)現(xiàn)方式中,所述獲取單元具體用于:根據(jù)所述起始地址信息以及所述數(shù)據(jù)長度信息,獲 取所述目標(biāo)數(shù)據(jù)在所述存儲空間中占用的每個塊的編號,以及在每個所述塊中的塊偏移量 和塊長度。
      [0017] 結(jié)合第三方面的第二種可能的實(shí)現(xiàn)方式,在第三方面的第三種可能的實(shí)現(xiàn)方式 中,所述目標(biāo)數(shù)據(jù)在HDFS中的塊地址信息包括所述目標(biāo)數(shù)據(jù)在HDFS中占用的每個邏輯塊的 編號,以及在每個所述邏輯塊中的邏輯塊偏移量和邏輯塊長度;所述發(fā)送單元具體用于:將 所述塊的編號作為所述邏輯塊的編號,將所述塊偏移量作為所述邏輯塊偏移量,將所述塊 長度作為所述邏輯塊長度發(fā)送至所述HDFS客戶端。
      [0018] 第四方面,提供一種數(shù)據(jù)節(jié)點(diǎn)模塊,所述數(shù)據(jù)節(jié)點(diǎn)模塊應(yīng)用于存儲系統(tǒng),所述存儲 系統(tǒng)還包括名稱節(jié)點(diǎn)模塊以及鍵值KV存儲設(shè)備;所述數(shù)據(jù)節(jié)點(diǎn)模塊包括:接收單元,用于接 收分布式文件系統(tǒng)HDFS客戶端發(fā)送的操作指令,所述操作指令用于對目標(biāo)文件中待操作的 目標(biāo)數(shù)據(jù)進(jìn)行操作;所述操作指令基于Hadoop平臺中數(shù)據(jù)節(jié)點(diǎn)與HDFS客戶端之間的 ClientDatanodeProtocol通信協(xié)議;所述操作指令包括所述KV存儲設(shè)備中存儲所述目標(biāo)數(shù) 據(jù)的塊地址信息;操作單元,用于根據(jù)所述塊地址信息對所述目標(biāo)數(shù)據(jù)進(jìn)行所述操作指令 指示的操作。
      [0019] 第五方面,提供一種服務(wù)器,所述服務(wù)器包括第三方面或者第三方面的任一項(xiàng)可 能的實(shí)現(xiàn)方式所述的名稱節(jié)點(diǎn)模塊,和/或所述服務(wù)器包括第四方面所述的數(shù)據(jù)節(jié)點(diǎn)模塊。
      [0020] 另一種實(shí)現(xiàn)方式,具體地,所述服務(wù)器包括:處理器、第一接口、第二接口和通信總 線;所述處理器、所述第一接口和所述第二接口通過所述通信總線進(jìn)行通信;所述第一接口 用于與分布式文件系統(tǒng)HDFS客戶端進(jìn)行通信,所述第二接口用于與鍵值KV存儲設(shè)備進(jìn)行通 信;所述服務(wù)器運(yùn)行名稱節(jié)點(diǎn)軟件,所述服務(wù)器通過所述名稱節(jié)點(diǎn)軟件執(zhí)行第一方面或者 以上第一方面的任一種可能的實(shí)現(xiàn)方式所述的方法。可選地,所述的服務(wù)器還可以運(yùn)行數(shù) 據(jù)節(jié)點(diǎn)軟件,所述服務(wù)器通過所述數(shù)據(jù)節(jié)點(diǎn)軟件執(zhí)行:接收所述HDFS客戶端發(fā)送的操作指 令,所述操作指令用于對所述目標(biāo)數(shù)據(jù)進(jìn)行操作;所述操作指令基于Hadoop平臺中數(shù)據(jù)節(jié) 點(diǎn)與HDFS客戶端之間的ClientDatanodeProtocol通信協(xié)議;所述操作指令包括所述目標(biāo)塊 地址信息;根據(jù)所述目標(biāo)塊地址信息對所述目標(biāo)數(shù)據(jù)進(jìn)行所述操作指令指示的操作。
      [0021] 第六方面,提供一種存儲系統(tǒng),所述存儲系統(tǒng)包括第三方面或者以上第三方面的 任一種可能的實(shí)現(xiàn)方式所述的名稱節(jié)點(diǎn)模塊,第四方面所述的數(shù)據(jù)節(jié)點(diǎn)模塊,鍵值KV存儲 設(shè)備,所述名稱節(jié)點(diǎn)模塊與所述KV存儲設(shè)備相連,所述數(shù)據(jù)節(jié)點(diǎn)模塊與所述KV存儲設(shè)備相 連。
      [0022] 在結(jié)合第六方面的第一種可能的實(shí)現(xiàn)方式中,所述名稱節(jié)點(diǎn)模塊與所述數(shù)據(jù)節(jié)點(diǎn) 模塊部署在同一服務(wù)器上。
      [0023] 第七方面,提供了一種計(jì)算機(jī)可讀介質(zhì),用于存儲計(jì)算機(jī)程序,該計(jì)算機(jī)程序包括 用于執(zhí)行第一方面或第一方面的任一可能的實(shí)現(xiàn)方式中的方法的指令。
      [0024] 第八方面,提供了一種計(jì)算機(jī)可讀介質(zhì),用于存儲計(jì)算機(jī)程序,該計(jì)算機(jī)程序包括 用于執(zhí)行第二方面中的方法的指令。
      [0025] 本發(fā)明在上述各方面提供的實(shí)現(xiàn)方式的基礎(chǔ)上,還可以進(jìn)行進(jìn)一步組合以提供更 多實(shí)現(xiàn)方式。
      【附圖說明】
      [0026] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例描述 中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí) 施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖 獲得其他的附圖。
      [0027] 圖1為本發(fā)明實(shí)施例提供的一種HDFS架構(gòu)的示意圖;
      [0028] 圖2為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)操作的方法的流程示意圖;
      [0029] 圖3為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)讀取方法的流程示意圖;
      [0030] 圖4為本發(fā)明實(shí)施例提供的文件到KV存儲設(shè)備中的物理存儲單元的映射示意圖;
      [0031] 圖5為本發(fā)明實(shí)施例提供的一種名稱節(jié)點(diǎn)模塊的結(jié)構(gòu)示意圖;
      [0032] 圖6為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)節(jié)點(diǎn)模塊的結(jié)構(gòu)示意圖;
      [0033] 圖7為本發(fā)明實(shí)施例提供的一種服務(wù)器的結(jié)構(gòu)示意圖;
      [0034] 圖8為本發(fā)明實(shí)施例提供的另一種服務(wù)器的結(jié)構(gòu)示意圖;
      [0035] 圖9為本發(fā)明實(shí)施例提供的一種存儲系統(tǒng)的結(jié)構(gòu)示意圖。
      【具體實(shí)施方式】
      [0036] 為了使本領(lǐng)域的技術(shù)人員更容易理解本發(fā)明實(shí)施例對現(xiàn)有技術(shù)進(jìn)行的改進(jìn),下面 首先對現(xiàn)有技術(shù)中的方案進(jìn)行簡單介紹。
      [0037]圖1為一種HDFS架構(gòu)的示意圖,如圖所示,該HDFS架構(gòu)包括HDFS客戶端,名稱節(jié)點(diǎn), 數(shù)據(jù)節(jié)點(diǎn)1,數(shù)據(jù)節(jié)點(diǎn)2,其中,客戶端分別與名稱節(jié)點(diǎn)以及數(shù)據(jù)節(jié)點(diǎn)1相連,數(shù)據(jù)節(jié)點(diǎn)1與數(shù) 據(jù)節(jié)點(diǎn)2相連。其中,名稱節(jié)點(diǎn)運(yùn)行有HDFS文件系統(tǒng),每個數(shù)據(jù)節(jié)點(diǎn)運(yùn)行有本地文件系統(tǒng)。 [0038]基于圖1所示的HDFS架構(gòu)說明數(shù)據(jù)的寫入流程:HDFS客戶端向名稱節(jié)點(diǎn)發(fā)送寫請 求消息,該寫請求消息包括文件名、起始地址信息和數(shù)據(jù)長度信息,該名稱節(jié)點(diǎn)在接收到該 寫請求消息后,首先確定文件是否存在,若不存在,則在名稱節(jié)點(diǎn)運(yùn)行的文件系統(tǒng)中創(chuàng)建一 個新的文件,并在創(chuàng)建成功后,該文件劃分成固定大小的多個數(shù)據(jù)塊(block),并為每個數(shù) 據(jù)塊分配數(shù)據(jù)節(jié)點(diǎn),其中,數(shù)據(jù)節(jié)點(diǎn)將劃分后的每個數(shù)據(jù)塊作為本地文件系統(tǒng)中的一個文 件進(jìn)行存儲,同一數(shù)據(jù)塊可有多個副本存儲在不同數(shù)據(jù)節(jié)點(diǎn)上;若存在,則該名稱節(jié)點(diǎn)根據(jù) 該起始地址信息和該數(shù)據(jù)長度信息可確定待寫入的數(shù)據(jù)將要寫入的數(shù)據(jù)塊的列表,該數(shù)據(jù) 塊列表包括每個數(shù)據(jù)塊的編號,待寫入的數(shù)據(jù)在每個數(shù)據(jù)塊的偏移量以及長度,該HDFS客 戶端獲取到該數(shù)據(jù)塊列表后,可發(fā)送寫入指令至數(shù)據(jù)節(jié)點(diǎn),將待寫入的數(shù)據(jù)寫入數(shù)據(jù)節(jié)點(diǎn)。
      [0039] 數(shù)據(jù)讀取流程如下:HDFS客戶端向名稱節(jié)點(diǎn)發(fā)送寫請求消息,該寫請求消息包括 文件名、起始地址信息和數(shù)據(jù)長度信息,該名稱節(jié)點(diǎn)在接收到該寫請求消息后,向該HDFS客 戶端返回待讀取的數(shù)據(jù)的數(shù)據(jù)塊列表,該HDFS客戶端接收到待讀取的數(shù)據(jù)的數(shù)據(jù)塊列表 后,發(fā)送讀取指令從數(shù)據(jù)節(jié)點(diǎn)中讀取該數(shù)據(jù)。
      [0040] 值得說明的是,上述HDFS架構(gòu)中,名稱節(jié)點(diǎn)向HDFS客戶端提供的接口為RPC (Remote Procedure Call Protocol,遠(yuǎn)程過程調(diào)用協(xié)議)接口,數(shù)據(jù)節(jié)點(diǎn)向HDFS客戶端提 供的接口也是RPC接口,并且,HDFS客戶端與名稱節(jié)點(diǎn)之間的通信協(xié)議為ClientProtocol協(xié) 議,客戶端與數(shù)據(jù)節(jié)點(diǎn)之間的通信協(xié)議為ClientDatanodeProtocol協(xié)議。
      [0041] 本發(fā)明實(shí)施例提供一種數(shù)據(jù)操作方法,該方法應(yīng)用于存儲系統(tǒng),該存儲系統(tǒng)包括 名稱節(jié)點(diǎn)模塊,數(shù)據(jù)節(jié)點(diǎn)模塊,以及KV(key- Value,鍵值)存儲設(shè)備,如圖2所示,該方法包 括:
      [0042] S201、名稱節(jié)點(diǎn)模塊接收HDFS客戶端發(fā)送的操作請求消息。
      [0043]其中,該操作請求消息是用于請求獲取目標(biāo)文件中待操作的目標(biāo)數(shù)據(jù)的在HDFS中 的塊地址信息,以對該目標(biāo)數(shù)據(jù)進(jìn)行操作;該操作請求消息基于Hadoop平臺中名稱節(jié)點(diǎn)與 HDFS客戶端之間的ClientProtocol通信協(xié)議。
      [0044]該名稱節(jié)點(diǎn)模塊向HDFS客戶端提供RPC接口,該名稱節(jié)點(diǎn)模炔基于該RPC接口接收 該HDFS客戶端發(fā)送的該操作請求消息。
      [0045] 該操作請求消息可以是對該目標(biāo)數(shù)據(jù)進(jìn)行寫操作的寫請求消息,用于請求將該目 標(biāo)數(shù)據(jù)寫入目標(biāo)文件中的指定位置,也可以是對該目標(biāo)數(shù)據(jù)進(jìn)行讀操作的讀請求消息,用 于從目標(biāo)文件的指定位置讀取該目標(biāo)數(shù)據(jù)。
      [0046] S202、該名稱節(jié)點(diǎn)模塊根據(jù)該操作請求消息中包括的目標(biāo)文件的文件名確定鍵 key,并根據(jù)該key確定值value的存儲空間的位置,該value為該目標(biāo)文件的數(shù)據(jù)。
      [0047] 值得說明的是,KV存儲設(shè)備中存儲的一個文件的數(shù)據(jù)被稱作一個value,每個 value對應(yīng)著一個唯一的標(biāo)識(key ),根據(jù)唯一標(biāo)識(key)可以直接定位到value的存儲空間 的位置。例如,在KV存儲設(shè)備中定義一個大的有序結(jié)構(gòu)數(shù)組Ha ShValue[m],m為整數(shù),每個 HashValue即為一個存儲空間,如HashValue[0],HashValue[l],每個存儲空間用于存儲一 個文件的數(shù)據(jù)(value)。并且構(gòu)造一個哈希函數(shù)0^即61'〇]^1811\%1116(1^5〇,將每個¥31116的 唯一標(biāo)識key轉(zhuǎn)換為HashValue [m]中的某個下標(biāo)值X,然后將每個文件的數(shù)據(jù)放進(jìn) HashValue[x]中去,再次需要對文件中的數(shù)據(jù)進(jìn)行操作時,根據(jù)該文件的key使用哈希函數(shù) ChangeToHashValue (key)計(jì)算即可得到這個下標(biāo)值,由此確定該文件的數(shù)據(jù)的存儲空間的 位置。
      [0048] 可選地,本發(fā)明實(shí)施例可以將該目標(biāo)文件的文件名對應(yīng)的索引節(jié)點(diǎn)inode編號作 為該目標(biāo)文件的數(shù)據(jù)(value)的key,在此種情況下,上述步驟S202具體包括:根據(jù)該文件名 確定該目標(biāo)文件的inode編號,以該inode編號作為key確定value的存儲空間的位置。
      [0049] 該名稱節(jié)點(diǎn)包括目錄項(xiàng)列表,每個目錄項(xiàng)由兩部分組成:所包含文件的文件名,以 及該文件名對應(yīng)的inode編號,因此,該名稱節(jié)點(diǎn)模塊通過查詢該目錄項(xiàng)列表即可確定該目 標(biāo)文件的文件名對應(yīng)的inode編號。值得說明的是,文件系統(tǒng)內(nèi)部不使用文件名,而使用 inode編號來識別文件。文件系統(tǒng)中,在對某一文件的數(shù)據(jù)進(jìn)行操作時,需要找到該文件的 文件名對應(yīng)的inode編號,其次,通過inode編號獲取inode信息,最后根據(jù)inode信息,找到 文件數(shù)據(jù)所在的block。
      [0050] 由上可知,inode編號為文件系統(tǒng)中文件的標(biāo)識,在本發(fā)明實(shí)施例的一種可選的實(shí) 現(xiàn)方式中,將inode編號作為文件數(shù)據(jù)(value)的key,用于唯一標(biāo)識該value。
      [0051] S203、該名稱節(jié)點(diǎn)模塊根據(jù)該操作請求消息中的起始地址信息以及數(shù)據(jù)長度信息 獲取目標(biāo)數(shù)據(jù)在該存儲空間中的目標(biāo)塊地址信息。
      [0052] 具體地,該名稱節(jié)點(diǎn)模塊根據(jù)該起始地址信息以及該數(shù)據(jù)長度信息,獲取該目標(biāo) 數(shù)據(jù)在該存儲空間中占用的每個塊的編號,以及在每個該塊中的塊偏移量和塊長度。
      [0053]值得說明的是,HDFS文件系統(tǒng)向HDFS客戶端呈現(xiàn)的文件的地址是連續(xù)的,也就是 說,HDFS客戶端感知到的文件是連續(xù)存儲的。而文件的數(shù)據(jù)(value)在KV存儲設(shè)備的存儲空 間中分塊進(jìn)行存儲,每個塊為一個物理存儲單元,每個物理存儲單元都存在一個指針,用于 指向下一個單元,該目標(biāo)塊地址信息即該目標(biāo)數(shù)據(jù)在該存儲空間中占用的每個物理存儲單 元的位置信息。
      [0054] S204、該名稱節(jié)點(diǎn)模塊向該HDFS客戶端發(fā)送用于響應(yīng)該操作請求消息的響應(yīng)消 息,該響應(yīng)消息包括該目標(biāo)塊地址信息。
      [0055 ] 該操作請求消息可以是HDFS客戶端調(diào)用名稱節(jié)點(diǎn)模塊的getblocklocation接口 傳入的消息,該接口傳入的參數(shù)為該目標(biāo)文件的文件名、該目標(biāo)數(shù)據(jù)在該目標(biāo)文件中的起 始地址、以及該目標(biāo)數(shù)據(jù)的長度,該接口要求返回的參數(shù)為該目標(biāo)數(shù)據(jù)在HDFS文件系統(tǒng)中 占用的每個邏輯塊的編號,以及在每個邏輯塊中的邏輯塊偏移量和邏輯塊長度。
      [0056]在本發(fā)明實(shí)施例中,該名稱節(jié)點(diǎn)模塊可以將該目標(biāo)數(shù)據(jù)在該存儲空間中的塊的編 號作為該邏輯塊的編號,將該塊偏移量作為該邏輯塊偏移量,將該塊長度作為該邏輯塊長 度返回至該HDFS客戶端。
      [0057] S205、該數(shù)據(jù)節(jié)點(diǎn)模塊接收該HDFS客戶端發(fā)送的操作指令,該操作指令包括該目 標(biāo)塊地址信息。
      [0058]其中,該操作指令用于對目標(biāo)文件中待操作的目標(biāo)數(shù)據(jù)進(jìn)行操作;該操作指令基 于Hadoop平臺中數(shù)據(jù)節(jié)點(diǎn)與HDFS客戶端之間的ClientDatanodeProtocol通信協(xié)議。
      [0059] S206、該數(shù)據(jù)節(jié)點(diǎn)模塊根據(jù)該塊地址信息對該目標(biāo)數(shù)據(jù)進(jìn)行該操作指令指示的操 作。
      [0060]在該操作指令為寫操作指令的情況下,該數(shù)據(jù)節(jié)點(diǎn)模塊將該目標(biāo)數(shù)據(jù)寫入該目標(biāo) 塊地址信息指定的位置,在該操作指令為讀操作指令的情況下,該數(shù)據(jù)節(jié)點(diǎn)模塊從該目標(biāo) 塊地址信息指定的位置讀取該目標(biāo)數(shù)據(jù)。
      [0061 ]采用上述方法,名稱節(jié)點(diǎn)模塊與HDFS客戶端之間基于Hadoop平臺中名稱節(jié)點(diǎn)與 HDFS客戶端之間的ClientProtocol通信協(xié)議進(jìn)行通信,數(shù)據(jù)節(jié)點(diǎn)模炔基于Hadoop平臺中數(shù) 據(jù)節(jié)點(diǎn)與HDFS客戶端之間的01丨61^03七3]1〇(16?1'〇1:〇〇〇1通信協(xié)議進(jìn)行通信,保證了對!^(1〇〇卩 其他功能的支撐,在此前提下,由于HDFS文件的數(shù)據(jù)在底層做鍵值存儲,從而提高了數(shù)據(jù)的 讀寫效率以及容量擴(kuò)展性。
      [0062]為了使本領(lǐng)域的普通技術(shù)人員更容易理解本發(fā)明提供的技術(shù)方案,下面對操作請 求消息為讀請求消息的情況進(jìn)行舉例說明。
      [0063]示例地,若HDFS客戶端需要讀取文件名為"第一文件"的文件中起始地址為100M (兆),數(shù)據(jù)長度為128M的目標(biāo)數(shù)據(jù),則在本發(fā)明實(shí)施例中,數(shù)據(jù)讀取的方法如圖3所示,包 括:
      [0064] S301、名稱節(jié)點(diǎn)模塊接收該HDFS客戶端發(fā)送的讀請求消息,該讀請求消息包括文 件名,起始地址信息以及數(shù)據(jù)長度信息。
      [0065]該文件名即為"第一文件",該起始地址信息為100M,數(shù)據(jù)長度信息為128M。
      [0066] S302、該名稱節(jié)點(diǎn)模塊根據(jù)該文件名確定該文件的inode編號。
      [0067] S303、該名稱節(jié)點(diǎn)模塊根據(jù)該inode編號(key)計(jì)算該文件的數(shù)據(jù)(value)的存儲 空間的位置。
      [0068] 步驟S302和步驟S303可參照上述對步驟S202的描述,此處不再贅述。
      [0069] S304、該名稱節(jié)點(diǎn)模塊在KV存儲設(shè)備中的該存儲空間中獲取該目標(biāo)數(shù)據(jù)的目標(biāo)塊 地址信息。
      [0070] KV存儲設(shè)備中每個塊的大小可根據(jù)用戶需求設(shè)定,若KV存儲設(shè)備中每個塊的大小 均為64M,則如圖4所示,第一文件中起始地址為100M、數(shù)據(jù)長度為128M的目標(biāo)數(shù)據(jù)在該存儲 空間中占用塊1,塊2和塊3,其中,在塊1中的偏移量為36M,長度為28M,在塊2中的偏移量為 〇,長度為64M,在塊3中的偏移量為0,長度為36M。
      [0071 ]因此,該目標(biāo)塊地址信息可以是如下表所示的列表信息:
      [0072]
      [0074] S305、該名稱節(jié)點(diǎn)模塊將包括該目標(biāo)塊地址信息的響應(yīng)消息發(fā)送至該HDFS客戶 端。
      [0075]其中,該響應(yīng)協(xié)議基于Hadoop平臺中HDFS客戶端與名稱節(jié)點(diǎn)之間的 ClientProtocol通信協(xié)議??蓞⒄丈鲜鰧Σ襟ES204的描述,此處不再贅述。
      [0076]在原生Hadoop平臺中,名稱節(jié)點(diǎn)向HDFS客戶端返回的響應(yīng)消息包括目標(biāo)數(shù)據(jù)在 HDFS文件系統(tǒng)中的塊地址信息,該塊地址信息包括編號,偏移量以及長度,但是HDFS并不感 知名稱節(jié)點(diǎn)返回的塊地址信息是邏輯地址還是物理地址,因此,本發(fā)明實(shí)施例可以將KV存 儲設(shè)備的存儲空間中的物理存儲單元的地址信息返回至該HDFS客戶端。
      [0077] S306、該數(shù)據(jù)節(jié)點(diǎn)模塊接收HDFS客戶端發(fā)送的讀指令,該讀指令包括該目標(biāo)塊地 址信息。
      [0078]該操作指令基于H a d ο ο p平臺中H D F S客戶端與數(shù)據(jù)節(jié)點(diǎn)之間的 ClientDatanodeProtocol 通信協(xié)議。
      [0079] S307、該數(shù)據(jù)節(jié)點(diǎn)模塊根據(jù)該目標(biāo)塊地址信息從該KV存儲設(shè)備中讀取該目標(biāo)數(shù) 據(jù)。
      [0080] S308、該數(shù)據(jù)節(jié)點(diǎn)模塊將該目標(biāo)數(shù)據(jù)發(fā)送至該HDFS客戶端。
      [0081]采用上述方法,對于HDFS客戶端來說,下層做數(shù)據(jù)存儲的仍然是HDFS文件系統(tǒng),保 證了對Hadoop其他功能的支撐,并且,在HDFS客戶端不感知的情況下,將文件的數(shù)據(jù)在底層 做鍵值存儲,數(shù)據(jù)的讀取無需經(jīng)過文件系統(tǒng)復(fù)雜的層級機(jī)構(gòu),提高了讀取的效率,鍵值存儲 的扁平化存儲結(jié)構(gòu)也提高了容量的可擴(kuò)展性。
      [0082]本發(fā)明實(shí)施例還提供一種名稱節(jié)點(diǎn)模塊50,該名稱節(jié)點(diǎn)模塊50應(yīng)用于存儲系統(tǒng), 所述存儲系統(tǒng)還包括數(shù)據(jù)節(jié)點(diǎn)模塊以及鍵值KV存儲設(shè)備,該名稱節(jié)點(diǎn)模塊50用于實(shí)施上述 方法實(shí)施例中的相應(yīng)步驟,如圖5所示,該名稱節(jié)點(diǎn)模塊50包括:
      [0083]接收單元51,用于接收分布式文件系統(tǒng)HDFS客戶端發(fā)送的操作請求消息,所述操 作請求消息是用于請求獲取目標(biāo)文件中待操作的目標(biāo)數(shù)據(jù)的在HDFS中的塊地址信息,以對 所述目標(biāo)數(shù)據(jù)進(jìn)行操作;所述操作請求消息基于Hadoop平臺中名稱節(jié)點(diǎn)與HDFS客戶端之間 的ClientProtocol通信協(xié)議;
      [0084] 確定單元52,用于根據(jù)所述操作請求消息中包括的所述目標(biāo)文件的文件名確定鍵 key,并根據(jù)所述key確定值value的存儲空間的位置,所述value為所述目標(biāo)文件的數(shù)據(jù);
      [0085] 獲取單元53,用于根據(jù)所述操作請求消息中的起始地址信息以及數(shù)據(jù)長度信息獲 取所述目標(biāo)數(shù)據(jù)在所述存儲空間中的目標(biāo)塊地址信息;
      [0086]發(fā)送單元54,用于向所述HDFS客戶端發(fā)送用于響應(yīng)所述操作請求消息的響應(yīng)消 息,所述響應(yīng)消息包括所述目標(biāo)塊地址信息。
      [0087]采用上述名稱節(jié)點(diǎn)模塊50。該名稱節(jié)點(diǎn)模塊50與HDFS客戶端之間基于Hadoop平臺 中名稱節(jié)點(diǎn)與HDFS客戶端之間的ClientProtocol通信協(xié)議進(jìn)行通信,在未改變上層通信接 口的情況下,也就是說,該名稱節(jié)點(diǎn)對HDFS客戶端仍然呈現(xiàn)HDFS文件系統(tǒng),并將HDFS文件的 數(shù)據(jù)在底層做鍵值存儲,提高了數(shù)據(jù)的讀寫效率以及容量擴(kuò)展性。
      [0088] 可選地,所述確定單元52具體用于:根據(jù)所述文件名確定所述目標(biāo)文件的索引節(jié) 點(diǎn)inode編號;將所述inode編號作為所述key確定所述value的存儲空間的位置。
      [0089] 可選地,所述獲取單元53具體用于:根據(jù)所述起始地址信息以及所述數(shù)據(jù)長度信 息,獲取所述目標(biāo)數(shù)據(jù)在所述存儲空間中占用的每個塊的編號,以及在每個所述塊中的塊 偏移量和塊長度。
      [0090] 可選地,所述目標(biāo)數(shù)據(jù)在HDFS中的塊地址信息包括所述目標(biāo)數(shù)據(jù)在HDFS中占用的 每個邏輯塊的編號,以及在每個所述邏輯塊中的邏輯塊偏移量和邏輯塊長度;所述發(fā)送單 元54具體用于:將所述塊的編號作為所述邏輯塊的編號,將所述塊偏移量作為所述邏輯塊 偏移量,將所述塊長度作為所述邏輯塊長度發(fā)送至所述HDFS客戶端。
      [0091] 值得說明的是,以上對名稱節(jié)點(diǎn)模塊進(jìn)行的單元劃分,僅為一種邏輯功能劃分,實(shí) 際實(shí)現(xiàn)時可以有另外的劃分方式,例如,將上述確定單元52與上述獲取單元53劃分為一個 處理單元。并且,上述各功能單元的物理實(shí)現(xiàn)也可能有多種實(shí)現(xiàn)方式。
      [0092] 另外,所屬本領(lǐng)域的技術(shù)人員應(yīng)該清楚地了解到,為描述的方便和簡潔,上述描述 的名稱節(jié)點(diǎn)模塊的各單元的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此 不再贅述。
      [0093] 本發(fā)明實(shí)施例還提供一種數(shù)據(jù)節(jié)點(diǎn)模塊60,該數(shù)據(jù)節(jié)點(diǎn)模塊應(yīng)用于存儲系統(tǒng),所 述存儲系統(tǒng)還包括名稱節(jié)點(diǎn)模塊以及鍵值KV存儲設(shè)備,該數(shù)據(jù)節(jié)點(diǎn)模塊60用于實(shí)施上述方 法實(shí)施例中相應(yīng)的步驟,該數(shù)據(jù)節(jié)點(diǎn)模塊60包括:
      [0094] 接收單元61,用于接收分布式文件系統(tǒng)HDFS客戶端發(fā)送的操作指令,所述操作指 令用于對目標(biāo)文件中待操作的目標(biāo)數(shù)據(jù)進(jìn)行操作;所述操作指令基于Hadoop平臺中數(shù)據(jù)節(jié) 點(diǎn)與HDFS客戶端之間的ClientDatanodeProtocol通信協(xié)議;所述操作指令包括所述KV存儲 設(shè)備中存儲所述目標(biāo)數(shù)據(jù)的塊地址信息;
      [0095] 操作單元62,用于根據(jù)所述塊地址信息對所述目標(biāo)數(shù)據(jù)進(jìn)行所述操作指令指示的 操作。
      [0096]采用上述數(shù)據(jù)節(jié)點(diǎn)模塊60,該數(shù)據(jù)節(jié)點(diǎn)模塊60基于Hadoop平臺中數(shù)據(jù)節(jié)點(diǎn)與HDFS 客戶端之間的ClientDatanodeProtocol通信協(xié)議進(jìn)行通信,在未改變上層通信接口的情況 下,在KV存儲設(shè)備中對數(shù)據(jù)做鍵值存儲,提高了數(shù)據(jù)的讀寫效率以及容量擴(kuò)展性。
      [0097] 所屬本領(lǐng)域的技術(shù)人員應(yīng)該清楚地了解到,為描述的方便和簡潔,上述描述的名 稱節(jié)點(diǎn)模塊的各單元的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再 贅述。
      [0098] 本發(fā)明實(shí)施例還提供一種服務(wù)器,如圖7所示,該服務(wù)器包括圖5所示的名稱節(jié)點(diǎn) 模塊50和/或圖6所示的數(shù)據(jù)節(jié)點(diǎn)模塊60,具體參照上述對圖5和圖6的描述,此處不再贅述。 也就是說,名稱節(jié)點(diǎn)模塊與數(shù)據(jù)節(jié)點(diǎn)模塊可以靈活部署在計(jì)算機(jī)上。
      [0099] 本發(fā)明實(shí)施例還提供另一種服務(wù)器80,如圖8所示,該服務(wù)器80包括:
      [0100] 處理器81、第一接口 82、第二接口 83和通信總線84;所述處理器81、所述第一接口 82和所述第二接口 83通過所述通信總線84進(jìn)行通信;所述第一接口 82用于與分布式文件系 統(tǒng)HDFS客戶端進(jìn)行通信,所述第二接口 83用于與鍵值KV存儲設(shè)備進(jìn)行通信;所述服務(wù)器運(yùn) 行名稱節(jié)點(diǎn)軟件,所述服務(wù)器通過所述名稱節(jié)點(diǎn)軟件執(zhí)行一下操作:
      [0101]接收HDFS客戶端發(fā)送的操作請求消息,所述操作請求消息是用于請求獲取目標(biāo)文 件中待操作的目標(biāo)數(shù)據(jù)的在HDFS中的塊地址信息,以對所述目標(biāo)數(shù)據(jù)進(jìn)行操作;所述操作 請求消息基于Hadoop平臺中名稱節(jié)點(diǎn)與HDFS客戶端之間的ClientProtocol通信協(xié)議;
      [0102] 根據(jù)所述操作請求消息中包括的所述目標(biāo)文件的文件名確定鍵key,并根據(jù)所述 key確定值value的存儲空間的位置,所述value為所述目標(biāo)文件的數(shù)據(jù);
      [0103] 根據(jù)所述操作請求消息中的起始地址信息以及數(shù)據(jù)長度信息獲取所述目標(biāo)數(shù)據(jù) 在所述存儲空間中的目標(biāo)塊地址信息;
      [0104] 向所述HDFS客戶端發(fā)送用于響應(yīng)所述操作請求消息的響應(yīng)消息,所述響應(yīng)消息包 括所述目標(biāo)塊地址信息。
      [0105] 可選地,所述根據(jù)所述操作請求消息中包括的所述目標(biāo)文件的文件名確定鍵key, 包括:根據(jù)所述文件名確定所述目標(biāo)文件的索引節(jié)點(diǎn)inode編號;將所述inode編號作為所 述key確定所述value的存儲空間的位置。
      [0106] 可選地,所述根據(jù)所述操作請求消息中的起始地址信息以及數(shù)據(jù)長度信息獲取所 述目標(biāo)數(shù)據(jù)在所述存儲空間中的目標(biāo)塊地址信息,包括:根據(jù)所述起始地址信息以及所述 數(shù)據(jù)長度信息,獲取所述目標(biāo)數(shù)據(jù)在所述存儲空間中占用的每個塊的編號,以及在每個所 述塊中的塊偏移量和塊長度。
      [0107] 可選地,所述目標(biāo)數(shù)據(jù)在HDFS中的塊地址信息包括所述目標(biāo)數(shù)據(jù)在HDFS中占用的 每個邏輯塊的編號,以及在每個所述邏輯塊中的邏輯塊偏移量和邏輯塊長度;所述向所述 HDFS客戶端發(fā)送用于響應(yīng)所述操作請求消息的響應(yīng)消息,包括:將所述塊的編號作為所述 邏輯塊的編號,將所述塊偏移量作為所述邏輯塊偏移量,將所述塊長度作為所述邏輯塊長 度發(fā)送至所述HDFS客戶端。
      [0108] 在本發(fā)明實(shí)施例的一種可能的實(shí)現(xiàn)方式中,所述服務(wù)器80還可以運(yùn)行數(shù)據(jù)節(jié)點(diǎn)軟 件,所述服務(wù)器80通過所述數(shù)據(jù)節(jié)點(diǎn)軟件執(zhí)行:接收所述HDFS客戶端發(fā)送的操作指令,所述 操作指令用于對所述目標(biāo)數(shù)據(jù)進(jìn)行操作;所述操作指令基于Hadoop平臺中數(shù)據(jù)節(jié)點(diǎn)與HDFS 客戶端之間的<^1161^03丨3]1〇(16?1'〇1:〇〇〇1通信協(xié)議;所述操作指令包括所述目標(biāo)塊地址信 息;根據(jù)所述目標(biāo)塊地址信息對所述目標(biāo)數(shù)據(jù)進(jìn)行所述操作指令指示的操作。
      [0109] 該服務(wù)器80還可能包括其他器件,例如存儲介質(zhì),用于存儲程序指令,圖8中未一 一示出。并且,所屬本領(lǐng)域的技術(shù)人員應(yīng)該了解到,處理器81執(zhí)行的操作可能是由其他器件 的配合共同完成的,為了方便描述,本發(fā)明實(shí)施例中統(tǒng)一描述為處理器81執(zhí)行數(shù)據(jù)整理的 操作。
      [0110] 本發(fā)明實(shí)施例中的處理器81可以是CPU(Center Processing Unit,中央處理單 元)。另外,為節(jié)省CPU的計(jì)算資源,處理器81也可以是FPGA(Field Programmable Gate Array,現(xiàn)場可編程門陣列)或其他硬件,或者,處理器81還可以是CPU和FPGA或其他硬件,則 FPGA或其他硬件與CPU分別執(zhí)行本發(fā)明實(shí)施例中的部分操作。
      [0111]本發(fā)明實(shí)施例還提供一種存儲系統(tǒng)90,如圖9所示,該存儲系統(tǒng)90包括:
      [0112]名稱節(jié)點(diǎn)模塊50,數(shù)據(jù)節(jié)點(diǎn)模塊60,KV存儲設(shè)備91,所述名稱節(jié)點(diǎn)模塊50與所述KV 存儲設(shè)備91相連,所述數(shù)據(jù)節(jié)點(diǎn)模塊60與所述KV存儲設(shè)備91相連。
      [0113]具體地,如圖9所示,該名稱節(jié)點(diǎn)模塊50與HDFS客戶端相連,該數(shù)據(jù)節(jié)點(diǎn)模塊60與 該HDFS客戶端進(jìn)行相連,名稱節(jié)點(diǎn)模塊50包括INTF_Namen〇de接口,用于向HDFS客戶端提供 RPC接口,名稱節(jié)點(diǎn)模塊50可以通過該RPC接口接收HDFS客戶端發(fā)送的元數(shù)據(jù)處理或管理的 命令,數(shù)據(jù)節(jié)點(diǎn)模塊60包括INTF_Datanode接口,用于向客戶端提供RPC接口,數(shù)據(jù)節(jié)點(diǎn)模塊 60通過該RPC接口接收客戶端發(fā)送的數(shù)據(jù)處理命令。該KV存儲設(shè)備91為名稱節(jié)點(diǎn)模塊50和 數(shù)據(jù)節(jié)點(diǎn)模塊60提供標(biāo)準(zhǔn)的key-value形式的接口 INTF_KV。
      [0114] 該名稱節(jié)點(diǎn)模塊50具體可參照上述對圖5的具體描述,該數(shù)據(jù)節(jié)點(diǎn)模塊60具體可 參照上述對圖5的具體描述,此處不再贅述。
      [0115] 在本發(fā)明實(shí)施例的一種可能的實(shí)現(xiàn)方式中,該名稱節(jié)點(diǎn)模塊50和該數(shù)據(jù)節(jié)點(diǎn)模塊 60可以同時部署在同一服務(wù)器上,也可以分別部署在不同服務(wù)器上。
      [0116]另外,值得說明的是,圖9所示的存儲系統(tǒng)90中僅包括一個名稱節(jié)點(diǎn)模塊以及一個 數(shù)據(jù)節(jié)點(diǎn)模塊,在具體實(shí)施時,存儲系統(tǒng)中包括的數(shù)據(jù)節(jié)點(diǎn)模塊的數(shù)量以及名稱節(jié)點(diǎn)模塊 的數(shù)據(jù)可以根據(jù)實(shí)際需求設(shè)定,在具有多個名稱節(jié)點(diǎn)模塊以及多個數(shù)據(jù)節(jié)點(diǎn)模塊的情況 下,HDFS客戶端在需要連接名稱節(jié)點(diǎn)模塊時,可以先通過DNS(Domain Name System,域名系 統(tǒng))輪詢方式,獲取到一個名稱節(jié)點(diǎn)模塊的地址,對于名稱節(jié)點(diǎn)模塊返回的多個數(shù)據(jù)節(jié)點(diǎn)模 塊的地址,該HDFS客戶端可以選擇距離最近的數(shù)據(jù)節(jié)點(diǎn)模塊進(jìn)行連接。
      [0117]在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所公開的系統(tǒng),裝置和方法,可以 通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的 劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件 可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或 討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦 合或通信連接,可以是電性,機(jī)械或其它的形式。
      [0118]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯 示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個 網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目 的。
      [0119] 另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以 是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單 元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
      [0120] 上述以軟件功能單元的形式實(shí)現(xiàn)的集成的單元,可以存儲在一個計(jì)算機(jī)可讀取存 儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī) 設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的部 分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、RAM(Random Access Memory,隨機(jī)存取存 儲器)、磁碟或者光盤等各種可以存儲數(shù)據(jù)的介質(zhì)。
      [0121]盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造 性概念,則可對這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu) 選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
      [0122]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
      【主權(quán)項(xiàng)】
      1. 一種數(shù)據(jù)操作方法,其特征在于,所述方法應(yīng)用于存儲系統(tǒng),所述存儲系統(tǒng)包括名稱 節(jié)點(diǎn)模塊,數(shù)據(jù)節(jié)點(diǎn)模塊,以及鍵值KV存儲設(shè)備;所述方法包括: 名稱節(jié)點(diǎn)模塊接收分布式文件系統(tǒng)HDFS客戶端發(fā)送的操作請求消息,所述操作請求消 息是用于請求獲取目標(biāo)文件中待操作的目標(biāo)數(shù)據(jù)的在HDFS中的塊地址信息,以對所述目標(biāo) 數(shù)據(jù)進(jìn)行操作;所述操作請求消息基于Hadoop平臺中名稱節(jié)點(diǎn)與HDFS客戶端之間的 ClientProtocol 通信協(xié)議; 根據(jù)所述操作請求消息中包括的所述目標(biāo)文件的文件名確定鍵key,并根據(jù)所述key確 定值value的存儲空間的位置,所述value為所述目標(biāo)文件的數(shù)據(jù); 根據(jù)所述操作請求消息中的起始地址信息以及數(shù)據(jù)長度信息獲取所述目標(biāo)數(shù)據(jù)在所 述存儲空間中的目標(biāo)塊地址信息; 向所述HDFS客戶端發(fā)送用于響應(yīng)所述操作請求消息的響應(yīng)消息,所述響應(yīng)消息包括所 述目標(biāo)塊地址信息。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述操作請求消息中包括的所述 目標(biāo)文件的文件名確定鍵key,包括: 根據(jù)所述文件名確定所述目標(biāo)文件的索引節(jié)點(diǎn)inode編號; 將所述inode編號作為所述key確定所述value的存儲空間的位置。3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述根據(jù)所述操作請求消息中的起始 地址信息以及數(shù)據(jù)長度信息獲取所述目標(biāo)數(shù)據(jù)在所述存儲空間中的目標(biāo)塊地址信息,包 括: 根據(jù)所述起始地址信息以及所述數(shù)據(jù)長度信息,獲取所述目標(biāo)數(shù)據(jù)在所述存儲空間中 占用的每個塊的編號,以及在每個所述塊中的塊偏移量和塊長度。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述目標(biāo)數(shù)據(jù)在HDFS中的塊地址信息包括 所述目標(biāo)數(shù)據(jù)在HDFS中占用的每個邏輯塊的編號,以及在每個所述邏輯塊中的邏輯塊偏移 量和邏輯塊長度;所述向所述HDFS客戶端發(fā)送用于響應(yīng)所述操作請求消息的響應(yīng)消息,包 括: 將所述塊的編號作為所述邏輯塊的編號,將所述塊偏移量作為所述邏輯塊偏移量,將 所述塊長度作為所述邏輯塊長度發(fā)送至所述HDFS客戶端。5. -種數(shù)據(jù)操作方法,其特征在于,所述方法應(yīng)用于存儲系統(tǒng),所述存儲系統(tǒng)包括名稱 節(jié)點(diǎn)模塊,數(shù)據(jù)節(jié)點(diǎn)模塊,以及鍵值KV存儲設(shè)備;所述方法包括: 所述數(shù)據(jù)節(jié)點(diǎn)模塊接收分布式文件系統(tǒng)HDFS客戶端發(fā)送的操作指令,所述操作指令用 于對目標(biāo)文件中待操作的目標(biāo)數(shù)據(jù)進(jìn)行操作;所述操作指令基于Hadoop平臺中數(shù)據(jù)節(jié)點(diǎn)與 HDFS客戶端之間的ClientDatanodeProtocol通信協(xié)議;所述操作指令包括所述KV存儲設(shè)備 中存儲所述目標(biāo)數(shù)據(jù)的塊地址信息; 根據(jù)所述塊地址信息對所述目標(biāo)數(shù)據(jù)進(jìn)行所述操作指令指示的操作。6. -種名稱節(jié)點(diǎn)模塊,其特征在于,所述名稱節(jié)點(diǎn)模塊應(yīng)用于存儲系統(tǒng),所述存儲系統(tǒng) 還包括數(shù)據(jù)節(jié)點(diǎn)模塊以及鍵值KV存儲設(shè)備;所述名稱節(jié)點(diǎn)模塊包括: 接收單元,用于接收分布式文件系統(tǒng)HDFS客戶端發(fā)送的操作請求消息,所述操作請求 消息是用于請求獲取目標(biāo)文件中待操作的目標(biāo)數(shù)據(jù)的在HDFS中的塊地址信息,以對所述目 標(biāo)數(shù)據(jù)進(jìn)行操作;所述操作請求消息基于Hadoop平臺中名稱節(jié)點(diǎn)與HDFS客戶端之間的 ClientProtoco 1 通信協(xié)議; 確定單元,用于根據(jù)所述操作請求消息中包括的所述目標(biāo)文件的文件名確定鍵key,并 根據(jù)所述key確定值value的存儲空間的位置,所述value為所述目標(biāo)文件的數(shù)據(jù); 獲取單元,用于根據(jù)所述操作請求消息中的起始地址信息以及數(shù)據(jù)長度信息獲取所述 目標(biāo)數(shù)據(jù)在所述存儲空間中的目標(biāo)塊地址信息; 發(fā)送單元,用于向所述HDFS客戶端發(fā)送用于響應(yīng)所述操作請求消息的響應(yīng)消息,所述 響應(yīng)消息包括所述目標(biāo)塊地址信息。7. 根據(jù)權(quán)利要求6所述的名稱節(jié)點(diǎn)模塊,其特征在于,所述確定單元具體用于: 根據(jù)所述文件名確定所述目標(biāo)文件的索引節(jié)點(diǎn)inode編號; 將所述inode編號作為所述key確定所述value的存儲空間的位置。8. 根據(jù)權(quán)利要求6或7所述的名稱節(jié)點(diǎn)模塊,其特征在于,所述獲取單元具體用于: 根據(jù)所述起始地址信息以及所述數(shù)據(jù)長度信息,獲取所述目標(biāo)數(shù)據(jù)在所述存儲空間中 占用的每個塊的編號,以及在每個所述塊中的塊偏移量和塊長度。9. 根據(jù)權(quán)利要求8所述的名稱節(jié)點(diǎn)模塊,其特征在于,所述目標(biāo)數(shù)據(jù)在HDFS中的塊地址 信息包括所述目標(biāo)數(shù)據(jù)在HDFS中占用的每個邏輯塊的編號,以及在每個所述邏輯塊中的邏 輯塊偏移量和邏輯塊長度;所述發(fā)送單元具體用于: 將所述塊的編號作為所述邏輯塊的編號,將所述塊偏移量作為所述邏輯塊偏移量,將 所述塊長度作為所述邏輯塊長度發(fā)送至所述HDFS客戶端。10. -種數(shù)據(jù)節(jié)點(diǎn)模塊,其特征在于,所述數(shù)據(jù)節(jié)點(diǎn)模塊應(yīng)用于存儲系統(tǒng),所述存儲系 統(tǒng)還包括名稱節(jié)點(diǎn)模塊以及鍵值KV存儲設(shè)備;所述數(shù)據(jù)節(jié)點(diǎn)模塊包括: 接收單元,用于接收分布式文件系統(tǒng)HDFS客戶端發(fā)送的操作指令,所述操作指令用于 對目標(biāo)文件中待操作的目標(biāo)數(shù)據(jù)進(jìn)行操作;所述操作指令基于Hadoop平臺中數(shù)據(jù)節(jié)點(diǎn)與 HDFS客戶端之間的ClientDatanodeProtocol通信協(xié)議;所述操作指令包括所述KV存儲設(shè)備 中存儲所述目標(biāo)數(shù)據(jù)的塊地址信息; 操作單元,用于根據(jù)所述塊地址信息對所述目標(biāo)數(shù)據(jù)進(jìn)行所述操作指令指示的操作。11. 一種服務(wù)器,其特征在于,所述服務(wù)器包括如權(quán)利要求6-9任一項(xiàng)所述的名稱節(jié)點(diǎn) 模塊,和/或如權(quán)利要求10所述的數(shù)據(jù)節(jié)點(diǎn)模塊。12. -種服務(wù)器,其特征在于,所述服務(wù)器包括:處理器、第一接口、第二接口和通信總 線;所述處理器、所述第一接口和所述第二接口通過所述通信總線進(jìn)行通信;所述第一接口 用于與分布式文件系統(tǒng)HDFS客戶端進(jìn)行通信,所述第二接口用于與鍵值KV存儲設(shè)備進(jìn)行通 ?目; 所述服務(wù)器運(yùn)行名稱節(jié)點(diǎn)軟件,所述服務(wù)器通過所述名稱節(jié)點(diǎn)軟件執(zhí)行: 接收分布式文件系統(tǒng)HDFS客戶端發(fā)送的操作請求消息,所述操作請求消息是用于請求 獲取目標(biāo)文件中待操作的目標(biāo)數(shù)據(jù)的在HDFS中的塊地址信息,以對所述目標(biāo)數(shù)據(jù)進(jìn)行操 作;所述操作請求消息基于Hadoop平臺中名稱節(jié)點(diǎn)與HDFS客戶端之間的ClientProtocol通 信協(xié)議; 根據(jù)所述操作請求消息中包括的所述目標(biāo)文件的文件名確定鍵key,并根據(jù)所述key確 定值value的存儲空間的位置,所述value為所述目標(biāo)文件的數(shù)據(jù); 根據(jù)所述操作請求消息中的起始地址信息以及數(shù)據(jù)長度信息獲取所述目標(biāo)數(shù)據(jù)在所 述存儲空間中的目標(biāo)塊地址信息; 向所述HDFS客戶端發(fā)送用于響應(yīng)所述操作請求消息的響應(yīng)消息,所述響應(yīng)消息包括所 述目標(biāo)塊地址信息。13. 根據(jù)權(quán)利要求12所述的服務(wù)器,其特征在于,所述服務(wù)器通過所述名稱節(jié)點(diǎn)軟件執(zhí) 行: 根據(jù)所述文件名確定所述目標(biāo)文件的索引節(jié)點(diǎn)inode編號; 將所述inode編號作為所述key確定所述value的存儲空間的位置。14. 根據(jù)權(quán)利要求12或13所述的服務(wù)器,其特征在于,所述服務(wù)器通過所述名稱節(jié)點(diǎn)軟 件執(zhí)行: 根據(jù)所述起始地址信息以及所述數(shù)據(jù)長度信息,獲取所述目標(biāo)數(shù)據(jù)在所述存儲空間中 占用的每個塊的編號,以及在每個所述塊中的塊偏移量和塊長度。15. 根據(jù)權(quán)利要求14所述的服務(wù)器,其特征在于,所述目標(biāo)數(shù)據(jù)在HDFS中的塊地址信息 包括所述目標(biāo)數(shù)據(jù)在HDFS中占用的每個邏輯塊的編號,以及在每個所述邏輯塊中的邏輯塊 偏移量和邏輯塊長度;所述服務(wù)器通過所述名稱節(jié)點(diǎn)軟件執(zhí)行: 將所述塊的編號作為所述邏輯塊的編號,將所述塊偏移量作為所述邏輯塊偏移量,將 所述塊長度作為所述邏輯塊長度發(fā)送至所述HDFS客戶端。16. 根據(jù)權(quán)利要求12至15任一項(xiàng)所述的服務(wù)器,其特征在于,所述服務(wù)器運(yùn)行數(shù)據(jù)節(jié)點(diǎn) 軟件,所述服務(wù)器通過所述數(shù)據(jù)節(jié)點(diǎn)軟件執(zhí)行: 接收所述HDFS客戶端發(fā)送的操作指令,所述操作指令用于對所述目標(biāo)數(shù)據(jù)進(jìn)行操作; 所述操作指令基于Hadoop平臺中數(shù)據(jù)節(jié)點(diǎn)與HDFS客戶端之間的ClientDatanodeProtocol 通信協(xié)議;所述操作指令包括所述目標(biāo)塊地址信息; 根據(jù)所述目標(biāo)塊地址信息對所述目標(biāo)數(shù)據(jù)進(jìn)行所述操作指令指示的操作。17. -種存儲系統(tǒng),其特征在于,所述存儲系統(tǒng)包括如權(quán)利要求6至9所述的名稱節(jié)點(diǎn)模 塊,如權(quán)利要求10所述的數(shù)據(jù)節(jié)點(diǎn)模塊,鍵值KV存儲設(shè)備,所述名稱節(jié)點(diǎn)模塊與所述KV存儲 設(shè)備相連,所述數(shù)據(jù)節(jié)點(diǎn)模塊與所述KV存儲設(shè)備相連。18. 根據(jù)權(quán)利要求17所述的存儲系統(tǒng),其特征在于,所述名稱節(jié)點(diǎn)模塊與所述數(shù)據(jù)節(jié)點(diǎn) 模塊部署在同一服務(wù)器上。
      【文檔編號】H04L29/08GK105933376SQ201610201356
      【公開日】2016年9月7日
      【申請日】2016年3月31日
      【發(fā)明人】劉科佑, 王 鋒
      【申請人】華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1