两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

分布式存儲方法及裝置、數(shù)據(jù)處理方法及裝置與流程

文檔序號:11261949閱讀:319來源:國知局
分布式存儲方法及裝置、數(shù)據(jù)處理方法及裝置與流程

本申請涉及計算機技術(shù)領(lǐng)域,尤其涉及一種分布式存儲方法及裝置、數(shù)據(jù)處理方法及裝置。



背景技術(shù):

并行計算與分布式存儲成為大數(shù)據(jù)時代進行數(shù)據(jù)處理及數(shù)據(jù)存儲的關(guān)鍵技術(shù)。在分布式存儲中,出于數(shù)據(jù)可靠性和可用性的考慮,通常采用將同一數(shù)據(jù)塊復制多個副本的方式進行數(shù)據(jù)存儲,也即將同一個數(shù)據(jù)塊的多個副本分布到集群的不同節(jié)點上,以此達到負載均衡的目的。

如圖1所示,在hadoop分布式文件系統(tǒng)(hadoopdistributedfilesystem,hdfs)中,對于原始的數(shù)據(jù)塊(圖中relation表示的數(shù)據(jù)塊),以連續(xù)的若干行為一組,將數(shù)據(jù)塊內(nèi)的數(shù)據(jù)分成多個行組(rowgroup),對每一個行組中的數(shù)據(jù),采用先行后列的方式進行存儲。將原始數(shù)據(jù)塊按照5行構(gòu)成一個行組進行劃分,以第一個行組為例,基于行列存儲格式(recordcolumnarfile,rcfile),先將原始數(shù)據(jù)塊的第一個行組中的第一列作為存儲的第一個行組的第一行的數(shù)據(jù),再將原始數(shù)據(jù)塊的第一個行組中的第二列作為存儲的第一個行組的第二行的數(shù)據(jù),以此類推,最終在rcfile存儲格式下原始數(shù)據(jù)塊的一個行組中的每列分別對應rcfile存儲格式中的每一行。比如原始數(shù)據(jù)塊的每個行組中有5行4列,對應到rcfile存儲格式中就是4行5列,相當于進行行列轉(zhuǎn)置。在rcfile存儲格式中每個行組還包括16字節(jié)(bytes)的sync,主要作用是作為分割標記,用以分割兩個連續(xù)的行組。而元數(shù)據(jù)頭(metadataheader)用于存儲行組的元數(shù)據(jù)信息,包括行組中的記錄數(shù)、每個列的字節(jié)數(shù)、列中每個域的字節(jié)數(shù)。

在并行計算映射歸約(mapreduce)框架中,將順序處理數(shù)據(jù)塊中的每個行組。當處理一個行組時,無需讀取行組的全部內(nèi)容到內(nèi)存,僅僅需要讀取metadataheader和給定查詢需要的列。這樣可以跳過不必要的列以獲得列存儲的輸入/輸出(input/output,i/o)優(yōu)勢。例如,表tbl(a,b,c,d)有4個列,做一次查詢“selectafromtblwhered=1”,對每個行組,僅需要讀取a列和d列的內(nèi)容,不需要讀取其它列的內(nèi)容,因此可以在一定程度上減少i/o次數(shù),降低數(shù)據(jù)處理開銷,提升應用處理速度。

基于這種存儲格式,在進行數(shù)據(jù)查詢時雖然能過濾掉不相關(guān)的列的數(shù)據(jù),但是對相關(guān)列的數(shù)據(jù)再無進一步過濾。例如,在對表tbl(a,b,c,d)做查詢“selectafromtblwhered=1”時,對每個行組,rcfile雖然只需要讀取a列和d列的內(nèi)容,但讀取的數(shù)據(jù)中還是存在大量不相關(guān)數(shù)據(jù),比如d列中不滿足d=1的域。在rcfile存儲格式下,同一數(shù)據(jù)塊的多個副本是同構(gòu)的,也即同一數(shù)據(jù)塊的多個副本的內(nèi)容具有完全一致的布局。在這種存儲方式下,在對一個數(shù)據(jù)塊進行數(shù)據(jù)處理時,選擇其中任何一個副本進行處理的數(shù)據(jù)處理開銷都是相同的,不存在某個副本能夠達到降低計算處理開銷、加速應用處理的效果。

可見,分布式系統(tǒng)的數(shù)據(jù)處理性能需進一步提高。



技術(shù)實現(xiàn)要素:

本申請實施例提供一種分布式存儲方法及裝置、數(shù)據(jù)處理方法及裝置,用以減少分布式系統(tǒng)中的i/o次數(shù)、降低計算處理開銷、加速應用處理。

本申請實施例提供一種分布式存儲方法,包括:

針對數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本,按照m種屬性信息對所述m個副本中的各條數(shù)據(jù)記錄分別進行排序;其中,同一數(shù)據(jù)塊的不同的副本所對應的用于排序的屬性信息不同;m為大于1的正整數(shù);

將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個排序后的副本存儲在m個數(shù)據(jù)節(jié)點 中;其中,同一數(shù)據(jù)塊的不同的副本存儲在不同的數(shù)據(jù)節(jié)點中。

該方法對數(shù)據(jù)塊的每個副本中的數(shù)據(jù)按照對應的屬性進行全局排序可以縮小在該副本的每個行組(rowgroup)中屬性的域的取值范圍,這個范圍越小,越能快速定位到該行組中是否有符合要求的數(shù)據(jù),從而達到減少i/o次數(shù)、加速應用處理、降低應用處理開銷的目標。

可選地,將數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本存儲在m個數(shù)據(jù)節(jié)點中,具體包括:

將數(shù)據(jù)文件中按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中。

上述將按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中的方式,可以避免數(shù)據(jù)文件中按相同屬性信息布局的三個數(shù)據(jù)塊都集中在一個數(shù)據(jù)節(jié)點,造成該數(shù)據(jù)節(jié)點成為應用的瓶頸而造成計算負載不均衡的情況。

可選地,上述方法還包括:

為所述副本中的每個行組添加索引信息,所述索引信息包括取值范圍和/或排序方式指示位;所述數(shù)值范圍包括用于排序的屬性信息對應的域的取值范圍,和/或沒有用于排序的屬性信息對應的域的取值范圍。

采用這種添加索引的方式,可以實現(xiàn)精確過濾無關(guān)數(shù)據(jù),快速定位數(shù)據(jù),減少i/o次數(shù)。

可選地,上述方法還包括:

按照預設的時間長度,統(tǒng)計每種屬性信息的引用次數(shù);

按照每種屬性信息的引用次數(shù),調(diào)整用于排序的m種屬性信息;

按照調(diào)整后的屬性信息,對所述m個數(shù)據(jù)節(jié)點中每個數(shù)據(jù)塊的各條數(shù)據(jù)記錄的排列順序進行調(diào)整。

采用這種方式,在每次進行數(shù)據(jù)處理時,分布式存儲系統(tǒng)可以根據(jù)應用程序?qū)Σ煌瑢傩缘囊们闆r,選擇最佳匹配的副本進行數(shù)據(jù)處理,從而達到快速 定位數(shù)據(jù)、減少i/o次數(shù)、加速應用處理、降低應用處理開銷的目標。

可選地,按照每種屬性信息的引用次數(shù),調(diào)整用于排序的m種屬性信息,包括:

按照每種屬性信息的引用次數(shù),以及每種屬性信息被引用的時間點信息,調(diào)整用于排序的m種屬性信息。

通過上述方式,可以識別出引用時間局部性最佳的m種屬性信息。

可選地,上述方法還包括:

在接收到數(shù)據(jù)訪問請求后,根據(jù)所述數(shù)據(jù)訪問請求所引用的屬性信息,確定按照該屬性信息進行排序的數(shù)據(jù)塊的副本;

調(diào)度所述副本所在的數(shù)據(jù)節(jié)點處理所述數(shù)據(jù)訪問請求。

相應地,本申請實施例還一種數(shù)據(jù)處理方法,用于數(shù)據(jù)節(jié)點的數(shù)據(jù)處理,包括:

接收包含數(shù)據(jù)位置信息的數(shù)據(jù)訪問請求處理任務;所述數(shù)據(jù)位置信息用于指示待處理的數(shù)據(jù)塊的副本;

根據(jù)在所述副本中按照屬性信息排序后的各個域的取值,從所述副本中讀取客戶端請求的數(shù)據(jù);

將讀取的數(shù)據(jù)發(fā)送給客戶端。

可選地,根據(jù)在所述副本中按照屬性信息排序后的各個域的取值,從所述副本中讀取客戶端請求的數(shù)據(jù),包括:

針對所述副本中的每個行組,根據(jù)該行組的索引信息,判斷該行組中是否存在客戶端請求的數(shù)據(jù);所述索引信息包括取值范圍和/或排序方式指示位;所述數(shù)值范圍包括用于排序的屬性信息對應的域的取值范圍;

若存在,則根據(jù)在該行組中按照屬性信息排序后的各個域的取值,從該行組中讀取客戶端請求的數(shù)據(jù)。

基于本申請實施例提供的上述數(shù)據(jù)存儲及數(shù)據(jù)處理方式,在接收到客戶端的數(shù)據(jù)訪問請求后,可以識別出應用引用的屬性,然后分布式存儲系統(tǒng)根據(jù)識 別出的屬性選擇按此屬性排序布局的副本給應用處理。在應用處理過程中,可以利用數(shù)據(jù)塊內(nèi)的索引信息過濾掉無關(guān)數(shù)據(jù),只讀取符合要求的數(shù)據(jù),從而需要載入的數(shù)據(jù)量可以大大減少,進而減少i/o操作,同時也減少了對內(nèi)存的消耗。另外,由于數(shù)據(jù)已經(jīng)在分布式存儲系統(tǒng)中經(jīng)過了過濾操作,從而無需cpu再執(zhí)行數(shù)據(jù)過濾的操作,也降低了cpu的開銷,同時數(shù)據(jù)的有序性也會減少部分有排序要求的應用對cpu資源的消耗。

本申請實施例還提供一種數(shù)據(jù)處理方法,該方法的有益效果參見上述分布式存儲方法中的說明,這里不再贅述,該數(shù)據(jù)處理方法包括:

接收對數(shù)據(jù)文件的數(shù)據(jù)訪問請求;

根據(jù)所述數(shù)據(jù)訪問請求所引用的屬性信息,確定按照該屬性信息進行數(shù)據(jù)排序的所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的副本;

調(diào)度每個所述副本所在的數(shù)據(jù)節(jié)點處理所述數(shù)據(jù)訪問請求。

可選地,根據(jù)以下步驟對所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的副本進行數(shù)據(jù)排序及存儲:

針對數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本,按照m種屬性信息對所述m個副本中的各條數(shù)據(jù)記錄分別進行排序;其中,同一數(shù)據(jù)塊的不同的副本所對應的用于排序的屬性信息不同;m為大于1的正整數(shù);

將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本存儲在m個數(shù)據(jù)節(jié)點中;其中,同一數(shù)據(jù)塊的不同的副本存儲在不同的數(shù)據(jù)節(jié)點上。

可選地,所述將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本存儲在m個數(shù)據(jù)節(jié)點中,包括:

將所述數(shù)據(jù)文件中按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中。

可選地,所述方法還包括:

為所述副本中的每個行組添加索引信息,所述索引信息包括數(shù)值范圍和/或排序方式指示位。

可選地,所述方法還包括:

按照預設的周期,統(tǒng)計每種屬性信息的引用熱度;

按照每種屬性信息的引用熱度,調(diào)整用于排序的m種屬性信息;

按照調(diào)整后的屬性信息,對所述m個數(shù)據(jù)節(jié)點中每個數(shù)據(jù)塊的各條數(shù)據(jù)記錄的排列順序進行調(diào)整。

可選地,按照每種屬性信息的引用次數(shù),調(diào)整用于排序的m種屬性信息,包括:

按照每種屬性信息的引用次數(shù),以及每種屬性信息被引用的時間點信息,調(diào)整用于排序的m種屬性信息。

本申請實施例提供一種分布式存儲裝置,包括:

排序模塊,用于針對數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本,按照m種屬性信息對所述m個副本中的各條數(shù)據(jù)記錄分別進行排序;其中,同一數(shù)據(jù)塊的不同的副本所對應的用于排序的屬性信息不同;m為大于1的正整數(shù);

存儲模塊,用于將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個由所述排序模塊排序后的副本存儲在m個數(shù)據(jù)節(jié)點中;其中,同一數(shù)據(jù)塊的不同的副本存儲在不同的數(shù)據(jù)節(jié)點中。

該裝置對數(shù)據(jù)塊中的數(shù)據(jù)按照對應的屬性進行全局排序可以縮小rcfile存儲格式中每個行組中屬性的域的取值范圍,這個范圍越小,越能快速定位到該行組中是否有符合要求的數(shù)據(jù),從而達到減少i/o次數(shù)、加速應用處理、降低應用處理開銷的目標。

可選地,存儲模塊具體用于:

將數(shù)據(jù)文件中按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中。

上述將按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中的方式,可以避免數(shù)據(jù)文件中按相同屬性信息布局的三個數(shù)據(jù)塊都集中在一個數(shù)據(jù)節(jié)點,造成該數(shù)據(jù)節(jié)點成為應用的瓶頸而造成計算負載不均衡的情 況。

可選地,存儲模塊還用于:

為所述副本中的每個行組添加索引信息,所述索引信息包括取值范圍和/或排序方式指示位;所述數(shù)值范圍包括用于排序的屬性信息對應的域的取值范圍,和/或沒有用于排序的屬性信息對應的域的取值范圍。

采用這種添加索引的方式,可以實現(xiàn)精確過濾無關(guān)數(shù)據(jù),快速定位數(shù)據(jù),減少i/o次數(shù)。

可選地,排序模塊還用于:

按照預設的時間長度,統(tǒng)計每種屬性信息的引用次數(shù);按照每種屬性信息的引用次數(shù),調(diào)整用于排序的m種屬性信息;按照調(diào)整后的屬性信息,對所述m個數(shù)據(jù)節(jié)點中每個數(shù)據(jù)塊的各條數(shù)據(jù)記錄的排列順序進行調(diào)整。

采用這種方式,在每次進行數(shù)據(jù)處理時,分布式存儲系統(tǒng)可以根據(jù)應用程序?qū)Σ煌瑢傩缘囊们闆r,選擇最佳匹配的副本進行數(shù)據(jù)處理,從而達到快速定位數(shù)據(jù)、減少i/o次數(shù)、加速應用處理、降低應用處理開銷的目標。

可選地,排序模塊具體用于:

按照每種屬性信息的引用次數(shù),以及每種屬性信息被引用的時間點信息,調(diào)整用于排序的m種屬性信息。

通過上述方式,可以識別出引用時間局部性最佳的m種屬性信息。

可選地,所述裝置還包括:

處理模塊,用于在接收到數(shù)據(jù)訪問請求后,根據(jù)所述數(shù)據(jù)訪問請求所引用的屬性信息,確定按照該屬性信息進行排序的數(shù)據(jù)塊的副本;調(diào)度所述副本所在的數(shù)據(jù)節(jié)點處理所述數(shù)據(jù)訪問請求。

本申請實施例提供一種數(shù)據(jù)處理裝置,包括:

接收模塊,用于接收對數(shù)據(jù)文件的數(shù)據(jù)訪問請求;

確定模塊,用于根據(jù)所述接收模塊接收的數(shù)據(jù)訪問請求所引用的屬性信息,確定按照該屬性信息進行數(shù)據(jù)排序的所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的副本;

調(diào)度模塊,用于調(diào)度所述確定模塊確定的每個所述副本所在的數(shù)據(jù)節(jié)點處理所述數(shù)據(jù)訪問請求。

可選地,所述裝置還包括:

排序模塊,用于針對數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本,按照m種屬性信息對所述m個副本中的各條數(shù)據(jù)記錄分別進行排序;其中,同一數(shù)據(jù)塊的不同的副本所對應的用于排序的屬性信息不同;m為大于1的正整數(shù);

存儲模塊,用于將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個由排序模塊排序后的副本存儲在m個數(shù)據(jù)節(jié)點中;其中,同一數(shù)據(jù)塊的不同的副本存儲在不同的數(shù)據(jù)節(jié)點上。

可選地,存儲模塊具體用于:

將所述數(shù)據(jù)文件中按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中。

可選地,存儲模塊還用于:

為所述副本中的每個行組添加索引信息,所述索引信息包括數(shù)值范圍和/或排序方式指示位。

可選地,排序模塊還用于:

按照預設的周期,統(tǒng)計每種屬性信息的引用熱度;

按照每種屬性信息的引用熱度,調(diào)整用于排序的m種屬性信息;

按照調(diào)整后的屬性信息,對所述m個數(shù)據(jù)節(jié)點中每個數(shù)據(jù)塊的各條數(shù)據(jù)記錄的排列順序進行調(diào)整。

可選地,排序模塊具體用于:

按照每種屬性信息的引用次數(shù),以及每種屬性信息被引用的時間點信息,調(diào)整用于排序的m種屬性信息。

相應地,本申請實施例提供一種數(shù)據(jù)處理裝置,可部署在每個數(shù)據(jù)節(jié)點中,包括:

接收模塊,用于接收包含數(shù)據(jù)位置信息的數(shù)據(jù)訪問請求處理任務;所述數(shù) 據(jù)位置信息用于指示待處理的數(shù)據(jù)塊的副本;

讀取模塊,用于根據(jù)在所述副本中按照屬性信息排序后的各個域的取值,從所述副本中讀取客戶端請求的數(shù)據(jù);

發(fā)送模塊,用于將所述讀取模塊讀取的數(shù)據(jù)發(fā)送給客戶端。

可選地,所述讀取模塊具體用于:

針對所述副本中的每個行組,根據(jù)該行組的索引信息,判斷該行組中是否存在客戶端請求的數(shù)據(jù);所述索引信息包括取值范圍和/或排序方式指示位;所述數(shù)值范圍包括用于排序的屬性信息對應的域的取值范圍;若存在,則根據(jù)在該行組中按照屬性信息排序后的各個域的取值,從該行組中讀取客戶端請求的數(shù)據(jù)。

基于本申請實施例提供的上述進行數(shù)據(jù)存儲及數(shù)據(jù)處理的裝置,在接收到客戶端的數(shù)據(jù)訪問請求后,可以識別出應用引用的屬性,然后分布式存儲系統(tǒng)根據(jù)識別出的屬性選擇按此屬性排序布局的副本給應用處理。在應用處理過程中,可以利用數(shù)據(jù)塊內(nèi)的索引信息過濾掉無關(guān)數(shù)據(jù),只讀取符合要求的數(shù)據(jù),從而需要載入的數(shù)據(jù)量可以大大減少,進而減少i/o操作,同時也減少了對內(nèi)存的消耗。另外,由于數(shù)據(jù)已經(jīng)在分布式存儲系統(tǒng)中經(jīng)過了過濾操作,從而無需cpu再執(zhí)行數(shù)據(jù)過濾的操作,也降低了cpu的開銷,同時數(shù)據(jù)的有序性也會減少部分有排序要求的應用對cpu資源的消耗。

附圖說明

圖1為rcfile存儲格式示意圖;

圖2(a)為本申請實施例提供的分布式存儲及數(shù)據(jù)處理方法流程圖;

圖2(b)為每個數(shù)據(jù)節(jié)點處理被分配的數(shù)據(jù)訪問請求處理任務的流程圖;

圖3(a)是原始的數(shù)據(jù)塊示意圖;

圖3(b)是原始數(shù)據(jù)塊按照屬性b進行升序排列后的數(shù)據(jù)塊;

圖3(c)中是將原始數(shù)據(jù)塊分別按不同屬性排序后的示意圖;

圖4(a)是node#1中數(shù)據(jù)存儲結(jié)構(gòu)示意圖;

圖4(b)是node#2中數(shù)據(jù)存儲結(jié)構(gòu)示意圖;

圖4(c)是node#3中數(shù)據(jù)存儲結(jié)構(gòu)示意圖;

圖5為在行組的元數(shù)據(jù)頭中增加索引信息的示意圖;

圖6為基于時間戳和時間窗進行屬性引用計數(shù)的示意圖;

圖7為hadoophive的原始查詢處理流程;

圖8為加入了本申請方案的hadoophive的查詢處理流程;

圖9為本申請實施例的分布式存儲裝置90結(jié)構(gòu)示意圖;

圖10為本申請實施例提供的數(shù)據(jù)處理裝置100結(jié)構(gòu)示意圖;

圖11為本申請實施例提供的一種數(shù)據(jù)處理裝置110結(jié)構(gòu)示意圖;

圖12為本申請實施例提供的分布式存儲設備120結(jié)構(gòu)示意圖;

圖13為本申請實施例提供的數(shù)據(jù)處理設備130結(jié)構(gòu)示意圖;

圖14為本申請實施例提供的數(shù)據(jù)處理設備140結(jié)構(gòu)示意圖。

具體實施方式

在傳統(tǒng)的rcfile存儲格式下,同一數(shù)據(jù)塊的多個副本是同構(gòu)的,也即同一數(shù)據(jù)塊的多個副本的內(nèi)容具有完全一致的布局。在這種存儲方式下,在對一個數(shù)據(jù)塊進行數(shù)據(jù)處理時,選擇其中任何一個副本進行處理的數(shù)據(jù)處理開銷都是相同的,不存在某個副本能夠達到降低計算處理開銷、加速應用處理的效果。

基于此,本申請實施例提出了對數(shù)據(jù)塊的副本進行異構(gòu)布局以加速數(shù)據(jù)處理的方法:在各個副本內(nèi)分別按照不同的屬性(包括獨立屬性和由兩個以上獨立屬性組成的合成屬性)進行排序(也即針對每個副本按照在某個屬性下的各個域的取值進行排序),構(gòu)成數(shù)據(jù)布局各異的副本。在部署好異構(gòu)副本后,分布式存儲系統(tǒng)可以根據(jù)應用程序?qū)Σ煌瑢傩缘囊们闆r,選擇最佳匹配的副本進行數(shù)據(jù)處理,從而達到快速定位數(shù)據(jù)、減少i/o次數(shù)、加速應用處理、降低應用處理開銷的目標。

下面結(jié)合說明書附圖對本申請實施例作進一步詳細描述。

本申請實施例的方法應用于分布式存儲系統(tǒng)中,如圖2(a)所示,為本申請實施例提供的分布式存儲及數(shù)據(jù)處理方法流程圖,包括以下步驟:

s201:針對數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本,按照m種屬性信息對所述m個副本中的各條數(shù)據(jù)記錄分別進行排序;其中,同一數(shù)據(jù)塊的不同的副本所對應的用于排序的屬性信息不同;m為大于1的正整數(shù)。

這里,將同一數(shù)據(jù)塊的不同副本分別按照在對應屬性下的各個域的取值進行排序,也即該數(shù)據(jù)塊的每個副本對應一個用于排序的屬性。

需要說明的是,本申請實施例中的屬性可以包括單一屬性(例如對于格式化數(shù)據(jù),對應原始數(shù)據(jù)的一個列,對于非格式化數(shù)據(jù),如文本的記錄中以分隔符分割的區(qū)段),也可以包括合成屬性(例如原始數(shù)據(jù)的兩個或兩個以上的列的組合)。

如圖3(a)~(c)所示,為本申請基于rcfile存儲格式的異構(gòu)副本的實現(xiàn)過程。圖3(a)是原始的數(shù)據(jù)塊,也就是未經(jīng)過任何預處理的數(shù)據(jù)塊;圖3(b)是原始數(shù)據(jù)塊按照屬性b進行升序排列后的數(shù)據(jù)塊;圖3(c)中最左側(cè)的數(shù)據(jù)塊是將圖3(b)再按照rcfile格式轉(zhuǎn)存得到的數(shù)據(jù)塊,中間及右側(cè)兩個數(shù)據(jù)塊是將原始數(shù)據(jù)塊分別按屬性c降序和屬性e升序排序后,再按照rcfile格式轉(zhuǎn)存得到的。這樣,就得到了原始數(shù)據(jù)塊的三個布局各異的副本,每個副本分別按照屬性b、屬性c、屬性e排序。

這里,在將數(shù)據(jù)按照rcfile格式轉(zhuǎn)存之前對數(shù)據(jù)塊的每個副本中的數(shù)據(jù)按照該副本對應的屬性進行全局排序的目的是進一步縮小數(shù)據(jù)塊的每個行組(rowgroup)中屬性的域的取值范圍,這個范圍越小,越能快速定位到該行組中是否有符合要求的數(shù)據(jù),從而達到減少i/o次數(shù)、加速應用處理、降低應用處理開銷的目標。

s202:將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個排序后的副本存儲在m個數(shù)據(jù)節(jié)點中;其中,同一數(shù)據(jù)塊的不同的副本存儲在不同的數(shù)據(jù)節(jié)點中。

這里,將每個數(shù)據(jù)塊的各個副本分別部署在不同的數(shù)據(jù)節(jié)點上,以實現(xiàn)負載均衡。

作為一種優(yōu)選的實施方式,s202中,將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本存儲在m個數(shù)據(jù)節(jié)點中,包括:將所述數(shù)據(jù)文件中按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中。

這里,每個數(shù)據(jù)節(jié)點中存儲有所述數(shù)據(jù)文件的n個數(shù)據(jù)塊的副本,不同數(shù)據(jù)節(jié)點存儲的n個副本對應的用于排序的屬性信息的數(shù)量相同。如圖4(a)~(c)所示,標有不同底紋的數(shù)據(jù)塊在集群中3個節(jié)點上的均勻分布。

圖4(a)~(c)中node#1、node#2、node#3分別表示集群中的3個數(shù)據(jù)節(jié)點,datablock1、datablock2、datablock3分別表示一個數(shù)據(jù)文件的3個數(shù)據(jù)塊,3個數(shù)據(jù)節(jié)點上的datablock1、datablock2和datablock3為數(shù)據(jù)文件的三個數(shù)據(jù)塊,每個數(shù)據(jù)塊分別有3個異構(gòu)的副本。從圖4(a)~(c)可見,datablock1、datablock2、和datablock3的按照相同屬性布局的副本(如按b列排序并進行rcfile格式轉(zhuǎn)存的三個數(shù)據(jù)塊的副本)均勻分分布到3個數(shù)據(jù)節(jié)點中。

上述將按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中的方式,可以避免數(shù)據(jù)文件中按相同屬性信息布局的三個數(shù)據(jù)塊都集中在一個數(shù)據(jù)節(jié)點,造成該數(shù)據(jù)節(jié)點成為應用的瓶頸而造成計算負載不均衡的情況。比如,如果不采用將按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中的方式,可能會出現(xiàn)圖4中node#1中的datablock2、node#2中的datablock1、和node#3中的datablock3存儲在一個數(shù)據(jù)節(jié)點上(比如都存儲在node#1),那么如果應用引用屬性c的話,對數(shù)據(jù)文件的3個數(shù)據(jù)塊的訪問都將集中到一個數(shù)據(jù)節(jié)點上(比如node#1),該數(shù)據(jù)節(jié)點就會成為應用的瓶頸,造成負載不均衡。

作為另一種優(yōu)選的實施方式,為了進一步快速定位到該行組中是否有符合要求的數(shù)據(jù),可以為所述副本中的每個行組添加索引信息,所述索引信息包括 取值范圍和/或排序方式指示位;所述數(shù)值范圍包括用于排序的屬性信息對應的域的取值范圍,和/或沒有用于排序的屬性信息對應的域的取值范圍。

如圖5所示,可以在行組的元數(shù)據(jù)頭(metadataheader)中增加索引信息(圖5中右側(cè)最下方的兩種信息:行組中排序的屬性信息對應的域的取值范圍與升序/降序排列指示位,比如用1表示升序排列,用0表示降序排列)。采用排序的屬性信息對應的域的取值范圍可以快速定位行組中是否有符合條件的數(shù)據(jù),而升序/降序排列指示位可以快速定位符合條件的數(shù)據(jù)在行組中的偏移。除此之外,metadataheader的索引信息還可以包括行組對應的沒有用于排序的屬性信息對應的域的取值范圍,這樣,對于一個對沒有用于排序的屬性信息的引用查詢,也能粗粒度判斷行組中是否有符合條件的數(shù)據(jù)。

可見,采用這種添加索引的方式,可以實現(xiàn)精確過濾無關(guān)數(shù)據(jù),快速定位數(shù)據(jù),減少i/o次數(shù)。

在具體實施中,初始用于排序的屬性可以是隨機選擇的。應用對數(shù)據(jù)屬性的引用可能是隨時間發(fā)生改變的,例如在第一個時間段內(nèi),應用主要引用a、b、c三個屬性,而在第二個時間段內(nèi),應用主要引用數(shù)據(jù)的b、c、d三個屬性或者e、f、g三個屬性。為了達到基于三個異構(gòu)副本的最優(yōu)化應用處理效果,就需要在第二個時間段內(nèi)將數(shù)據(jù)塊的副本按照屬性b、c、d或者e、f、g排序后重新布局。

因此,作為一種優(yōu)選的實施方式,所述方法還包括:

按照預設的時間長度,統(tǒng)計每種屬性信息的引用次數(shù);

按照每種屬性信息的引用次數(shù),調(diào)整用于排序的m種屬性信息;

按照調(diào)整后的屬性信息,對所述m個數(shù)據(jù)節(jié)點中每個數(shù)據(jù)塊的各條數(shù)據(jù)記錄的排列順序進行調(diào)整。

如圖6所示,可以基于時間戳(timestamp)和時間窗進行屬性引用計數(shù)。時間戳(圖中timestamptmin~timestamptmax)用于標記每種屬性的具體引用時刻,每個時間戳表示對應時間點有應用對該屬性進行了引用。時間窗tw是 一個可配置的預定義的時間長度,也就是最大時間戳tmax與最小時間戳tmin的時間間隔不大于時間窗tw。

本申請實施例中對屬性的引用熱度進行識別,并對副本的布局進行動態(tài)重組的具體實施過程可以為:

首先確定進行引用熱度統(tǒng)計的屬性。這里的屬性可以包括單一屬性(比如對應原始數(shù)據(jù)的一個列)和/或合成屬性(比如對應原始數(shù)據(jù)的兩個或兩個以上的列的組合)。然后,基于時間戳和時間窗對屬性引用進行計數(shù)。

在按照每種屬性信息的引用次數(shù)調(diào)整用于排序的m種屬性信息時,可以將引用次數(shù)最多的前m種屬性信息(也即按引用次數(shù)由多到少排列后的前m名)確定為調(diào)整后的用于排序的m種屬性信息。

若無法確定出引用次數(shù)最多的前m種屬性信息,比如存在引用次數(shù)最多的前k1+k2(k1+k2>m,k1<m)種屬性信息,其中k2種屬性信息的引用次數(shù)相同。針對這k2種屬性信息,此時可以按照每種屬性信息的引用次數(shù),以及每種屬性信息被引用的時間點信息,確定用于排序的m種屬性信息。比如,情況一:若在這k2種屬性信息中,存在m-k1種屬性信息在時間窗tw范圍內(nèi),位于時間窗后半段的時間戳記錄條數(shù)占比超過位于時間窗前半段的時間戳記錄條數(shù)占比,則將存在的該m-k1種屬性信息以及所述前k1種屬性信息選擇為所述m種用于排序的屬性信息?;蛘?,情況二:若存在m-k1種屬性信息在時間窗tw范圍內(nèi),位于時間窗后半段的時間戳記錄對應的時間間隔逐漸遞減,則將該m-k1種屬性信息以及所述前k1種屬性信息選擇為所述m種用于排序的屬性信息?;蛘?,結(jié)合上述兩種情況,在這k2種屬性信息中優(yōu)先選擇符合情況一的屬性信息,若選擇出來的屬性信息不足m-k1種,再選擇符合情況二的屬性信息。

除此之外,還可以在這k2種屬性信息中,隨機選擇m-k1種屬性信息,與所述前k1種屬性信息一起作為所述m種用于排序的屬性信息。

上述方式僅是識別屬性引用熱度的一些具體實現(xiàn)方式,本領(lǐng)域技術(shù)人員在 本申請思想的指導下,所實施的任何通過對數(shù)據(jù)屬性計數(shù)來識別屬性引用熱度,并基于識別結(jié)果觸發(fā)后臺進程進行副本重組的方式都在本申請保護范圍內(nèi)。

通過上述方式,就可以識別出在時間窗tw內(nèi)引用時間局部性最佳的m種屬性。如果現(xiàn)有異構(gòu)副本中用于排序的屬性不屬于當前識別出來的m種屬性中的一種,則對其進行排序重組。比如,若在當前識別出來的引用熱度最佳的m種屬性中,有l(wèi)種被用于現(xiàn)有的異構(gòu)副本的排序,有m-l種沒有被用于排序,則將現(xiàn)有的用于排序的除所述l種之外的m-l種屬性替換為調(diào)整后的m-l種屬性進行重新排序。在具體實施中,可以依次選擇現(xiàn)有布局中引用熱度最低的屬性所對應的副本,按照新識別出來的所述m-l種屬性的引用熱度從高到底的順序,啟動后臺進程對副本進行動態(tài)重組。這樣可以最大可能地保留屬性引用時間局部性最佳的m種副本。

在上述實施方式中,基于時間戳和時間窗對屬性進行引用計數(shù),識別出引用最熱的m種屬性,并基于識別結(jié)果實時對各個副本進行布局重組,一次調(diào)整排序后可以用于多次數(shù)據(jù)處理,實現(xiàn)一次計算多次服務。在每次進行數(shù)據(jù)處理時,分布式存儲系統(tǒng)可以根據(jù)應用程序?qū)Σ煌瑢傩缘囊们闆r,選擇最佳匹配的副本進行數(shù)據(jù)處理,從而達到快速定位數(shù)據(jù)、減少i/o次數(shù)、加速應用處理、降低應用處理開銷的目標。

s203:在接收到數(shù)據(jù)訪問請求后,根據(jù)所述數(shù)據(jù)訪問請求所引用的屬性信息,確定按照該屬性信息進行排序的數(shù)據(jù)塊的副本,調(diào)度所述副本所在的數(shù)據(jù)節(jié)點處理所述數(shù)據(jù)訪問請求。

如圖2(b)所示,每個數(shù)據(jù)節(jié)點可以基于以下步驟處理被分配的數(shù)據(jù)訪問請求處理任務:

s2a:接收包含數(shù)據(jù)位置信息的數(shù)據(jù)訪問請求處理任務;所述數(shù)據(jù)位置信息用于指示待處理的數(shù)據(jù)塊的副本;

s2b:根據(jù)在所述副本中按照屬性信息排序后的各個域的取值,從所述副 本中讀取客戶端請求的數(shù)據(jù);

s2c:將讀取的數(shù)據(jù)發(fā)送給客戶端。

對應在數(shù)據(jù)存儲時為每個行組添加索引信息的步驟,s2b具體可以包括:

針對所述副本中的每個行組,根據(jù)該行組的索引信息,判斷該行組中是否存在客戶端請求的數(shù)據(jù);所述索引信息包括取值范圍和/或排序方式指示位;所述數(shù)值范圍包括用于排序的屬性信息對應的域的取值范圍;

若存在,則根據(jù)在該行組中按照屬性信息排序后的各個域的取值,從該行組中讀取客戶端請求的數(shù)據(jù)。

另外,所述索引信息還可以包含沒有用于排序的屬性信息所對應的域的取值范圍。如果所述待處理的數(shù)據(jù)塊的副本沒有按照客戶端請求查詢的引用屬性進行排序,則可以按照行組的索引信息中包含的沒有用于排序的屬性信息所對應的域的取值范圍來判斷該行組中是否有需要讀取的數(shù)據(jù)。

基本申請實施例提供的上述數(shù)據(jù)存儲及數(shù)據(jù)處理方式,在接收到客戶端的數(shù)據(jù)訪問請求后,可以識別出應用引用的屬性,然后分布式存儲系統(tǒng)根據(jù)識別出的屬性選擇按此屬性排序布局的副本給應用處理。在應用處理過程中,可以利用數(shù)據(jù)塊內(nèi)的索引信息過濾掉無關(guān)數(shù)據(jù),只讀取符合要求的數(shù)據(jù),從而需要載入的數(shù)據(jù)量可以大大減少,進而減少i/o操作,同時也減少了對內(nèi)存的消耗。另外,由于數(shù)據(jù)已經(jīng)在分布式存儲系統(tǒng)中經(jīng)過了過濾操作,從而無需cpu再執(zhí)行數(shù)據(jù)過濾的操作,也降低了cpu的開銷,同時數(shù)據(jù)的有序性也會減少部分有排序要求的應用對cpu資源的消耗。

本申請方案在hadoophive查詢下的具體實現(xiàn):

準備工作:客戶端提交數(shù)據(jù)寫入請求,分布式存儲系統(tǒng)中的寫入進程將數(shù)據(jù)文件的m個副本寫入到m個數(shù)據(jù)節(jié)點中,也即每個數(shù)據(jù)節(jié)點中被寫入數(shù)據(jù)文件的一個副本(具體包括該數(shù)據(jù)文件的n個數(shù)據(jù)塊中每個數(shù)據(jù)塊的m個副本)。針對數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本,按照m種屬性信息對m個副本中的各條數(shù)據(jù)記錄分別進行排序(這里同一數(shù)據(jù)塊的不同的副本所對應的用 于排序的屬性信息不同),并將排序后的副本存儲在各自的數(shù)據(jù)節(jié)點中。

如圖7所示,為hadoophive的原始查詢處理流程,包括以下步驟:

步驟一:客戶端提交數(shù)據(jù)訪問請求(比如請求查詢“selectafromtblwhered=1”)。

步驟二:hive的驅(qū)動(driver)層解析查詢語句,轉(zhuǎn)換為mapreducejob提交給hadoop的jt/am。這里,jt全稱jobtracker,為hadoop1.0版本中job調(diào)度管理組件,am全稱applicationmaster,為hadoop2.0版本中job調(diào)度管理組件。

步驟三:jt/am向nn請求數(shù)據(jù)位置信息。這里,nn全稱namenode,為hdfs文件系統(tǒng)數(shù)據(jù)管理組件。

步驟四:nn返回數(shù)據(jù)位置信息給jt/am。

步驟五:jt/am將數(shù)據(jù)訪問請求處理任務(task)調(diào)度到所述數(shù)據(jù)位置信息對應的數(shù)據(jù)節(jié)點(datanode,dn)上執(zhí)行。圖7中,tt全稱tasktracker,為hadoop1.0版本中的task調(diào)度管理組件,nm全稱nodemanager,為hadoop2.0版本中的task調(diào)度管理組件。

如圖8所示,為加入了本申請方案的hadoophive的查詢處理流程,右側(cè)有底紋的新增模塊是本申請的核心模塊,具體地,在應用的驅(qū)動層(這里是hive的驅(qū)動層)新增一個識別查詢中的引用屬性的模塊:識別模塊(recongnition);在hdfs文件系統(tǒng)的nn中新增一個識別判斷模塊(identification),用于判斷在異構(gòu)副本中,是否有采用應用驅(qū)動層的recongition識別到的引用屬性組織布局的副本;在nn中還新增一個判斷是否要啟動后臺進程進行副本布局動態(tài)重組的模塊:動態(tài)重組模塊(dynamicreorganizition),該模塊記錄應用對數(shù)據(jù)的各個屬性的引用情況,在需要進行副本布局調(diào)整時,對副本布局進行動態(tài)重組。具體地,在采用本申請方案后,hadoophive的處理流程可以包括以下步驟:

步驟一:客戶端提交針對某個數(shù)據(jù)文件的數(shù)據(jù)訪問請求(具體為查詢請 求)。

步驟二:hive的driver層解析查詢語句,新增的recognition模塊識別查詢引用的屬性信息。

步驟三:hive將查詢語句轉(zhuǎn)換為帶有屬性引用信息的mapreducejob提交給hadoop的jt/am。

步驟四:jt/am向nn請求數(shù)據(jù)位置信息,請求中附帶查詢引用屬性。

步驟五:nn中的identification模塊根據(jù)jt/am提交的查詢引用屬性確定最終選擇的每個數(shù)據(jù)塊的副本。

步驟六:nn返回每個副本的數(shù)據(jù)位置信息給jt/am。

步驟七:jt/am將查詢?nèi)蝿照{(diào)度到每個副本的數(shù)據(jù)位置信息對應的數(shù)據(jù)節(jié)點上執(zhí)行。

步驟八(執(zhí)行順序不受限制):nn中的dynamicreorganizition模塊根據(jù)歷史查詢對各個屬性的引用情況實時觸發(fā)副本布局動態(tài)重組。

在采用本申請方案的hadoophive的查詢處理過程中,如果識別到跟應用引用屬性匹配的副本,那么對數(shù)據(jù)的處理任務就調(diào)度到匹配的副本對應的數(shù)據(jù)節(jié)點上執(zhí)行,在每個數(shù)據(jù)節(jié)點上,可以根據(jù)副本中各條數(shù)據(jù)記錄按照引用屬性的排列順序,并結(jié)合行組中的索引信息進行數(shù)據(jù)查詢,從而可以最小化i/o次數(shù),最小化資源消耗,降低數(shù)據(jù)處理開銷,提升應用處理速度。

基于同一發(fā)明構(gòu)思,本申請實施例中還提供了一種與分布式存儲及數(shù)據(jù)處理方法對應的分布式存儲裝置及數(shù)據(jù)處理裝置,由于本申請裝置解決問題的原理與上述方法實施例相似,因此裝置的實施可以參見方法的實施,重復之處不再贅述。

如圖9所示,對應上述分布式存儲方法,本申請實施例提供一種分布式存儲裝置90,包括:

排序模塊91,用于針對數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本,按照m種屬性信息對所述m個副本中的各條數(shù)據(jù)記錄分別進行排序;其中,同一數(shù)據(jù)塊 的不同的副本所對應的用于排序的屬性信息不同;m為大于1的正整數(shù);

存儲模塊92,用于將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個由排序模塊91排序后的副本存儲在m個數(shù)據(jù)節(jié)點中;其中,同一數(shù)據(jù)塊的不同的副本存儲在不同的數(shù)據(jù)節(jié)點中。

可選地,存儲模塊92具體用于:

將所述數(shù)據(jù)文件中按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中。

可選地,存儲模塊92還用于:

為所述副本中的每個行組添加索引信息,所述索引信息包括取值范圍和/或排序方式指示位;所述數(shù)值范圍包括用于排序的屬性信息對應的域的取值范圍,和/或沒有用于排序的屬性信息對應的域的取值范圍。

可選地,排序模塊91還用于:

按照預設的時間長度,統(tǒng)計每種屬性信息的引用次數(shù);按照每種屬性信息的引用次數(shù),調(diào)整用于排序的m種屬性信息;按照調(diào)整后的屬性信息,對所述m個數(shù)據(jù)節(jié)點中每個數(shù)據(jù)塊的各條數(shù)據(jù)記錄的排列順序進行調(diào)整。

可選地,排序模塊91具體用于:

按照每種屬性信息的引用次數(shù),以及每種屬性信息被引用的時間點信息,調(diào)整用于排序的m種屬性信息。

可選地,所述裝置還包括:

處理模塊93,用于在接收到數(shù)據(jù)訪問請求后,根據(jù)所述數(shù)據(jù)訪問請求所引用的屬性信息,確定按照該屬性信息進行排序的數(shù)據(jù)塊的副本;調(diào)度所述副本所在的數(shù)據(jù)節(jié)點處理所述數(shù)據(jù)訪問請求。

如圖10所示,對應上述調(diào)度數(shù)據(jù)節(jié)點進行數(shù)據(jù)處理的數(shù)據(jù)處理方法,本申請另一實施例提供一種數(shù)據(jù)處理裝置100,包括:

接收模塊101,用于接收對數(shù)據(jù)文件的數(shù)據(jù)訪問請求;

確定模塊102,用于根據(jù)接收模塊101接收的數(shù)據(jù)訪問請求所引用的屬性 信息,確定按照該屬性信息進行數(shù)據(jù)排序的所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的副本;

調(diào)度模塊103,用于調(diào)度確定模塊102確定的每個所述副本所在的數(shù)據(jù)節(jié)點處理所述數(shù)據(jù)訪問請求。

可選地,所述裝置還包括:

排序模塊104,用于針對數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本,按照m種屬性信息對所述m個副本中的各條數(shù)據(jù)記錄分別進行排序;其中,同一數(shù)據(jù)塊的不同的副本所對應的用于排序的屬性信息不同;m為大于1的正整數(shù);

存儲模塊105,用于將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個由排序模塊排序后的副本存儲在m個數(shù)據(jù)節(jié)點中;其中,同一數(shù)據(jù)塊的不同的副本存儲在不同的數(shù)據(jù)節(jié)點上。

可選地,存儲模塊105具體用于:

將所述數(shù)據(jù)文件中按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中。

可選地,存儲模塊105還用于:

為所述副本中的每個行組添加索引信息,所述索引信息包括數(shù)值范圍和/或排序方式指示位。

可選地,排序模塊104還用于:

按照預設的周期,統(tǒng)計每種屬性信息的引用熱度;

按照每種屬性信息的引用熱度,調(diào)整用于排序的m種屬性信息;

按照調(diào)整后的屬性信息,對所述m個數(shù)據(jù)節(jié)點中每個數(shù)據(jù)塊的各條數(shù)據(jù)記錄的排列順序進行調(diào)整。

可選地,排序模塊104具體用于:

按照每種屬性信息的引用次數(shù),以及每種屬性信息被引用的時間點信息,調(diào)整用于排序的m種屬性信息。

如圖11所示,對應上述每個數(shù)據(jù)節(jié)點進行數(shù)據(jù)處理的數(shù)據(jù)處理方法,本 申請另一實施例提供一種數(shù)據(jù)處理裝置110,包括:

接收模塊111,用于接收包含數(shù)據(jù)位置信息的數(shù)據(jù)訪問請求處理任務;所述數(shù)據(jù)位置信息用于指示待處理的數(shù)據(jù)塊的副本;

讀取模塊112,用于根據(jù)在所述副本中按照屬性信息排序后的各個域的取值,從所述副本中讀取客戶端請求的數(shù)據(jù);

發(fā)送模塊113,用于將讀取模塊112讀取的數(shù)據(jù)發(fā)送給客戶端。

可選地,讀取模塊112具體用于:

針對所述副本中的每個行組,根據(jù)該行組的索引信息,判斷該行組中是否存在客戶端請求的數(shù)據(jù);所述索引信息包括取值范圍和/或排序方式指示位;所述數(shù)值范圍包括用于排序的屬性信息對應的域的取值范圍;若存在,則根據(jù)在該行組中按照屬性信息排序后的各個域的取值,從該行組中讀取客戶端請求的數(shù)據(jù)。

如圖12所示,本申請實施例提供一種分布式存儲設備120,包括處理器121、存儲器122、和總線123;存儲器122用于存儲執(zhí)行指令,包括內(nèi)存122a和外部存儲器122b;這里的內(nèi)存122a也稱內(nèi)存儲器,用于暫時存放處理器121中的運算數(shù)據(jù),以及與硬盤等外部存儲器122b交換的數(shù)據(jù),處理器121通過內(nèi)存122a與外部存儲器122b進行數(shù)據(jù)交換,當所述設備120運行時,所述處理器121與所述存儲器122之間通過總線123通信,使得所述處理器121執(zhí)行以下指令:

針對數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本,按照m種屬性信息對所述m個副本中的各條數(shù)據(jù)記錄分別進行排序;其中,同一數(shù)據(jù)塊的不同的副本所對應的用于排序的屬性信息不同;m為大于1的正整數(shù);

將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個排序后的副本存儲在m個數(shù)據(jù)節(jié)點中;其中,同一數(shù)據(jù)塊的不同的副本存儲在不同的數(shù)據(jù)節(jié)點中。

可選地,處理器121執(zhí)行的指令中,將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個排序后的副本存儲在m個數(shù)據(jù)節(jié)點中,包括:

將所述數(shù)據(jù)文件中按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中。

可選地,處理器121執(zhí)行的指令還包括:

為所述副本中的每個行組添加索引信息,所述索引信息包括取值范圍和/或排序方式指示位;所述數(shù)值范圍包括用于排序的屬性信息對應的域的取值范圍,和/或沒有用于排序的屬性信息對應的域的取值范圍。

可選地,處理器121執(zhí)行的指令還包括:

按照預設的時間長度,統(tǒng)計每種屬性信息的引用次數(shù);

按照每種屬性信息的引用次數(shù),調(diào)整用于排序的m種屬性信息;

按照調(diào)整后的屬性信息,對所述m個數(shù)據(jù)節(jié)點中每個數(shù)據(jù)塊的各條數(shù)據(jù)記錄的排列順序進行調(diào)整。

可選地,處理器121執(zhí)行的指令中,按照每種屬性信息的引用次數(shù),調(diào)整用于排序的m種屬性信息,包括:

按照每種屬性信息的引用次數(shù),以及每種屬性信息被引用的時間點信息,調(diào)整用于排序的m種屬性信息。

可選地,處理器121執(zhí)行的指令還包括:

在接收到數(shù)據(jù)訪問請求后,根據(jù)所述數(shù)據(jù)訪問請求所引用的屬性信息,確定按照該屬性信息進行排序的數(shù)據(jù)塊的副本;

調(diào)度所述副本所在的數(shù)據(jù)節(jié)點處理所述數(shù)據(jù)訪問請求。

如圖13所示,本申請實施例提供一種數(shù)據(jù)處理設備130,包括處理器131、存儲器132、和總線133;存儲器132用于存儲執(zhí)行指令,包括內(nèi)存132a和外部存儲器132b;這里的內(nèi)存132a也稱內(nèi)存儲器,用于暫時存放處理器131中的運算數(shù)據(jù),以及與硬盤等外部存儲器132b交換的數(shù)據(jù),處理器131通過內(nèi)存132a與外部存儲器132b進行數(shù)據(jù)交換,當所述設備130運行時,所述處理器131與所述存儲器132之間通過總線133通信,使得所述處理器131執(zhí)行以下指令:

接收對數(shù)據(jù)文件的數(shù)據(jù)訪問請求;

根據(jù)所述數(shù)據(jù)訪問請求所引用的屬性信息,確定按照該屬性信息進行數(shù)據(jù)排序的所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的副本;

調(diào)度每個所述副本所在的數(shù)據(jù)節(jié)點處理所述數(shù)據(jù)訪問請求。

可選地,處理器131執(zhí)行的執(zhí)行指令還包括:

針對數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本,按照m種屬性信息對所述m個副本中的各條數(shù)據(jù)記錄分別進行排序;其中,同一數(shù)據(jù)塊的不同的副本所對應的用于排序的屬性信息不同;m為大于1的正整數(shù);

將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本存儲在m個數(shù)據(jù)節(jié)點中;其中,同一數(shù)據(jù)塊的不同的副本存儲在不同的數(shù)據(jù)節(jié)點上。

可選地,處理器131執(zhí)行的執(zhí)行指令中,將所述數(shù)據(jù)文件中每個數(shù)據(jù)塊的m個副本存儲在m個數(shù)據(jù)節(jié)點中,包括:

將所述數(shù)據(jù)文件中按相同屬性信息排序的不同數(shù)據(jù)塊的副本均勻存儲在不同的數(shù)據(jù)節(jié)點中。

可選地,處理器131執(zhí)行的執(zhí)行指令還包括:

為所述副本中的每個行組添加索引信息,所述索引信息包括數(shù)值范圍和/或排序方式指示位。

可選地,處理器131執(zhí)行的執(zhí)行指令還包括:

按照預設的周期,統(tǒng)計每種屬性信息的引用熱度;

按照每種屬性信息的引用熱度,調(diào)整用于排序的m種屬性信息;

按照調(diào)整后的屬性信息,對所述m個數(shù)據(jù)節(jié)點中每個數(shù)據(jù)塊的各條數(shù)據(jù)記錄的排列順序進行調(diào)整。

可選地,處理器131執(zhí)行的執(zhí)行指令中,按照每種屬性信息的引用次數(shù),調(diào)整用于排序的m種屬性信息,包括:

按照每種屬性信息的引用次數(shù),以及每種屬性信息被引用的時間點信息,調(diào)整用于排序的m種屬性信息。

如圖14所示,本申請另一實施例提供一種數(shù)據(jù)處理設備140,包括處理器141、存儲器142、和總線143;存儲器142用于存儲執(zhí)行指令,包括內(nèi)存142a和外部存儲器142b;這里的內(nèi)存142a也稱內(nèi)存儲器,用于暫時存放處理器141中的運算數(shù)據(jù),以及與硬盤等外部存儲器142b交換的數(shù)據(jù),處理器141通過內(nèi)存142a與外部存儲器142b進行數(shù)據(jù)交換,當所述設備140運行時,所述處理器141與所述存儲器142之間通過總線143通信,使得所述處理器141執(zhí)行以下指令:

接收包含數(shù)據(jù)位置信息的數(shù)據(jù)訪問請求處理任務;所述數(shù)據(jù)位置信息用于指示待處理的數(shù)據(jù)塊的副本;

根據(jù)在所述副本中按照屬性信息排序后的各個域的取值,從所述副本中讀取客戶端請求的數(shù)據(jù);

將讀取的數(shù)據(jù)發(fā)送給客戶端。

可選地,處理器141執(zhí)行的執(zhí)行指令中,根據(jù)在所述副本中按照屬性信息排序后的各個域的取值,從所述副本中讀取客戶端請求的數(shù)據(jù),包括:

針對所述副本中的每個行組,根據(jù)該行組的索引信息,判斷該行組中是否存在客戶端請求的數(shù)據(jù);所述索引信息包括取值范圍和/或排序方式指示位;所述數(shù)值范圍包括用于排序的屬性信息對應的域的取值范圍;

若存在,則根據(jù)在該行組中按照屬性信息排序后的各個域的取值,從該行組中讀取客戶端請求的數(shù)據(jù)。

本領(lǐng)域內(nèi)的技術(shù)人員應明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。

本申請是參照根據(jù)本申請實施例的方法、裝置(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和 /或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。

顯然,本領(lǐng)域的技術(shù)人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
山东| 双城市| 汾阳市| 台江县| 鱼台县| 东乡| 广汉市| 普洱| 阳曲县| 成武县| 鹤峰县| 赫章县| 龙里县| 合江县| 含山县| 齐河县| 夏邑县| 双柏县| 防城港市| 崇阳县| 商河县| 通许县| 泗洪县| 岳西县| 扎兰屯市| 乌拉特前旗| 安达市| 浑源县| 景洪市| 安徽省| 教育| 清远市| 德清县| 喀什市| 邵武市| 伽师县| 辽宁省| 饶平县| 邯郸市| 祁连县| 长岭县|