本發(fā)明涉及一種分布式多維離散數(shù)據(jù)的計算方法,屬于計算機數(shù)據(jù)處理
技術(shù)領(lǐng)域:
。
背景技術(shù):
:維度是描述現(xiàn)實世界事物的參數(shù)個數(shù),隨著對物理世界認知的加深,人們不再僅僅使用一個維度來描述現(xiàn)實事物,而是采用多個維度來詳盡的對事物進行描述。多維離散數(shù)據(jù)是指以某些維度為基準對數(shù)據(jù)進行離散化劃分存儲的數(shù)據(jù)集合,以這種數(shù)據(jù)為基礎(chǔ)的應(yīng)用廣泛存在,例如,在氣象預(yù)報系統(tǒng)中,用戶需要使用預(yù)報模式、物理量類型、預(yù)報時刻、預(yù)報時效、地理高度等5個維度共同刻畫一個氣象預(yù)報數(shù)據(jù),通過物理量類型和地理高度兩個維度的組合為基準對數(shù)據(jù)進行離散化劃分,并在多臺計算機以這兩個維度為鍵進行分布式存儲,最終同一個鍵的數(shù)據(jù)將會被存儲在同一臺機器上。新興的分布式計算系統(tǒng)采用多臺計算機對數(shù)據(jù)進行并行的處理,在處理海量數(shù)據(jù)方面有較強的優(yōu)勢,以mapreduce,spark等為代表的分布式計算系統(tǒng)已經(jīng)被廣泛的應(yīng)用于大數(shù)據(jù)場景。分布式計算其實質(zhì)是將大的任務(wù)分解成若干個小任務(wù),將這些小任務(wù)分配給多臺機器,每個小任務(wù)從存儲系統(tǒng)中讀取本任務(wù)的數(shù)據(jù)進行處理,這樣可以節(jié)約運行時間,大大提高計算效率。相對于集中式計算,有些任務(wù)可能需要大量的計算能力才能完成,如果采用集中式將會使得計算的時間特別長,特別是在任務(wù)資源(內(nèi)存)要求比較大的情況下,單機往往無法計算。面對新興的分布式計算系統(tǒng),以及現(xiàn)有的分布式存儲系統(tǒng),多維離散數(shù)據(jù)的計算帶來了存儲層和計算層之間數(shù)據(jù)對接的問題,即每個小任務(wù)應(yīng)該分配到哪臺計算機上,基于此提出了存儲層和計算層之間跨層優(yōu)化的概念,并給出了解決任務(wù)和數(shù)據(jù)對接的方案。目前工業(yè)界在對于分布式計算和分布式存儲系統(tǒng)之間的對接主要在于粗粒度的任務(wù)本地化計算。以分布式計算系統(tǒng)spark和分布式存儲系統(tǒng)cassandra為例,cassandra對數(shù)據(jù)表中的每條記錄按照記錄的分區(qū)鍵計算一個哈希碼,并按照哈希碼將這條記錄存儲到某一臺計算機上。spark在對cassandra的整個表進行處理時,spark可以通過cassandra提供的函數(shù)得到每個節(jié)點上的哈希碼分布范圍,在spark做任務(wù)分配時,為每個哈希碼分布范圍生成一個任務(wù),并將該任務(wù)分配到哈希碼分布范圍所處的機器上,將這種分配方式稱為粗粒度的任務(wù)分配。然而對于離散的數(shù)據(jù)(即cassandra表中離散選取的一些行列對應(yīng)的值),由于spark只能得到每個離散數(shù)據(jù)的分區(qū)鍵值,無法得到分區(qū)鍵值對應(yīng)的哈希碼,所以不知道離散數(shù)據(jù)所在的機器。因此在任務(wù)分配時將這種離散數(shù)據(jù)的任務(wù)分配到集群中多臺計算機中的任意一臺,使任務(wù)在計算時無法保證和數(shù)據(jù)在同一臺機器上,從而帶來數(shù)據(jù)在集群中傳輸?shù)木W(wǎng)絡(luò)開銷,導(dǎo)致系統(tǒng)性能大大降低。因此對離散數(shù)據(jù)在計算層和存儲層之間的跨層優(yōu)化將對分布式計算性能的提升大有裨益。技術(shù)實現(xiàn)要素:本發(fā)明的目的是提出一種分布式多維離散數(shù)據(jù)的計算方法,對分布式計算系統(tǒng)和存儲系統(tǒng)源碼的深入剖析,分析存儲系統(tǒng)中數(shù)據(jù)和機器的分布規(guī)律,并將此規(guī)律應(yīng)用于分布式計算系統(tǒng),達到跨層優(yōu)化的目的。本發(fā)明提出的分布式多維離散數(shù)據(jù)的計算方法,包括以下步驟:(1)根據(jù)分布式存儲系統(tǒng)的數(shù)據(jù)劃分規(guī)則,在分布式計算系統(tǒng)中建立一個多維離散數(shù)據(jù)的分區(qū)鍵值ki與哈希碼的映射函數(shù)fhash;(2)分布式計算系統(tǒng)從分布式存儲系統(tǒng)獲取包含有多維離散數(shù)據(jù)信息的元數(shù)據(jù),元數(shù)據(jù)為多維離散數(shù)據(jù)在分布式存儲系統(tǒng)中所有主機的哈希碼區(qū)間,將獲取的所有元數(shù)據(jù)的哈希碼區(qū)間的起始哈希碼集合記為m,m={m1,m2,m3,...,mi,...,mn},其中mi為第i個哈希碼區(qū)間的起始哈希碼,將集合m中的起始哈希碼按照從小到大排列,將集合m的元素個數(shù)記為|m|;將所有與起始哈希碼相對應(yīng)的主機集合記為h,h={h1,h2,h3,...,hz,...,hn},其中hz表示第z個起始哈希碼所在的主機;(3)在分布式計算系統(tǒng)中建立一個上述步驟(1)的分區(qū)鍵值ki與步驟(2)的主機集合的鍵機映射表,記作fstatic,fstatic:分區(qū)鍵值→主機集合;設(shè)定一個描述分區(qū)鍵值固定性的參數(shù)wstatic,根據(jù)參數(shù)wstatic,對上述步驟(1)的分布式存儲系統(tǒng)中多維離散數(shù)據(jù)的分區(qū)鍵值的固定性進行判斷,若wstatic為假,則進行步驟(5),若參數(shù)wstatic為真,則進行步驟(4);(4)對分布式計算系統(tǒng)的鍵機映射表fstatic進行更新,具體過程如下:(4-1)判斷在分布式計算系統(tǒng)的指定路徑上是否存在鍵機映射表的記錄文件,若存在記錄文件,則將鍵機映射表的記錄文件加載到分布式計算系統(tǒng)的內(nèi)存中用于對步驟(3)的鍵機映射表fstatic進行初始化,進行步驟(5);若不存在記錄文件,則進行步驟(4-2);(4-2)對分布式存儲系統(tǒng)中的分區(qū)鍵值集合k={k1,k2,k3,...,ki,...ks}的每一個分區(qū)鍵值計算對應(yīng)的主機位置。具體步驟如下:(4-2-1)設(shè)置變量i=1,將分區(qū)鍵值集合k的第i個分區(qū)鍵值記作ki,分區(qū)鍵值集合k的分區(qū)鍵值個數(shù)記作|k|;(4-2-2)根據(jù)上述步驟(1)的映射函數(shù)fhash,得到ki的哈希碼fhash(ki),在上述步驟(2)的哈希碼區(qū)間的起始哈希碼集合m中從左到右查找第一個大于哈希碼fhash(ki)的哈希碼區(qū)間起始值所在的位置p,p∈[1,|m|],若在集合m中查找到滿足條件的哈希碼區(qū)間起始值的位置j,則使p=j(luò),若在集合m中未查找到滿足條件的哈希碼區(qū)間起始值,則使p=1;(4-2-3)將第i個分區(qū)鍵值ki和上述步驟(2)的集合h中的第p個主機hp存儲到步驟(3)的fstatic,并使i=i+1,對i進行判斷,若i≤|m|,則返回步驟(4-2-2),若i>|m|,則進行步驟(4-4);(4-4)將fstatic存儲到分布式計算系統(tǒng)的指定路徑,以便下次分布式計算系統(tǒng)啟動時快速加載,進行步驟(5);(5)分布式計算系統(tǒng)進行任務(wù)分配和計算,包括以下步驟:(5-1)在上述步驟(3)的鍵機映射表fstatic中查找任務(wù)分配處理的多維離散數(shù)據(jù)的分區(qū)鍵值k,若分區(qū)鍵值k在鍵機映射表fstatic中,則根據(jù)上述步驟(3)的鍵機映射表fstatic,從主機集合中找出與任務(wù)分配處理的多維離散數(shù)據(jù)的分區(qū)鍵值相對應(yīng)的主機,并將任務(wù)分配到該主機,進行分布式多維離散數(shù)據(jù)的計算;若k不在鍵機映射表fstatic中,則進行步驟(5-2);(5-2)在上述步驟(2)的哈希碼區(qū)間的起始哈希碼集合m中從左到右查找第一個大于哈希碼fhash(k)的哈希碼區(qū)間起始值所在的位置p,p∈[1,|m|],若在集合m中查找到滿足條件的哈希碼區(qū)間起始值的位置j,則使p=j(luò),若在集合m中未查找到滿足條件的哈希碼區(qū)間起始值,則使p=1;(5-3)將上述步驟(2)集合h中的第p個主機hp作為該任務(wù)所處理數(shù)據(jù)的主機,將該任務(wù)分配到主機hp上,進行分布式多維離散數(shù)據(jù)的計算,并將分區(qū)鍵值k和hp存儲到fstatic,以便下次快速從fstatic中查找分區(qū)鍵值對應(yīng)的主機。本發(fā)明提出的分布式多維離散數(shù)據(jù)的計算方法,其優(yōu)點是:1、本發(fā)明的分布式多維離散數(shù)據(jù)的計算方法,大大提高了分布式計算系統(tǒng)的多維離散數(shù)據(jù)處理能力。通過解決多維離散數(shù)據(jù)存儲層和計算層之間的跨層優(yōu)化問題,有效地降低了分布式計算系統(tǒng)在處理多維離散數(shù)據(jù)時,由于任務(wù)和數(shù)據(jù)無法在同一臺機器上而帶來的網(wǎng)絡(luò)開銷,從而大大提高分布式計算系統(tǒng)的多維離散數(shù)據(jù)處理能力。在使用分布式計算系統(tǒng)spark和分布式存儲系統(tǒng)cassandra處理離散氣象數(shù)據(jù)時,采用此方法后處理速度提高了將近4倍,實驗結(jié)果有力地證明了此方法的有效性。2、本發(fā)明方法簡單易用且效果顯著,通過元數(shù)據(jù)和哈希函數(shù)得到數(shù)據(jù)分區(qū)鍵值與主機之間的映射關(guān)系,計算層直接通過數(shù)據(jù)的分區(qū)鍵值即可得到數(shù)據(jù)所在主機,在任務(wù)分配時直接分配到相應(yīng)的主機即可。實現(xiàn)起來極其簡單,而且效果非常好。3、本發(fā)明方法有很強的適應(yīng)性,能夠適應(yīng)于多種分布式計算系統(tǒng)和分布式存儲系統(tǒng)。附圖說明圖1是本發(fā)明的分布式多維離散數(shù)據(jù)的計算方法的系統(tǒng)啟動流程框圖。具體實施方式本發(fā)明提出的分布式多維離散數(shù)據(jù)的計算方法,流程框圖如圖1所示,包括以下步驟:(1)根據(jù)分布式存儲系統(tǒng)的數(shù)據(jù)劃分規(guī)則,在分布式計算系統(tǒng)中建立一個多維離散數(shù)據(jù)的分區(qū)鍵值ki與哈希碼的映射函數(shù),分區(qū)鍵值決定多維離散數(shù)據(jù)在分布式存儲系統(tǒng)中的存儲位置,該映射函數(shù)可以利用已有的murmurhash3或者信息摘要(md5)哈希算法得到。將分區(qū)鍵值與哈希碼的映射函數(shù)記作fhash,fhash:分區(qū)鍵值→哈希碼;(2)分布式計算系統(tǒng)從分布式存儲系統(tǒng)獲取包含有多維離散數(shù)據(jù)信息的元數(shù)據(jù),元數(shù)據(jù)為多維離散數(shù)據(jù)在分布式存儲系統(tǒng)中所有主機的哈希碼區(qū)間,將獲取的所有元數(shù)據(jù)的哈希碼區(qū)間的起始哈希碼集合記為m,m={m1,m2,m3,...,mi,...,mn},其中mi為第i個哈希碼區(qū)間的起始哈希碼,將集合m中的起始哈希碼按照從小到大排列,將集合m的元素個數(shù)記為|m|;將所有與起始哈希碼相對應(yīng)的主機集合記為h,h={h1,h2,h3,...,hz,...,hn},其中hz表示第z個起始哈希碼所在的主機;(3)在分布式計算系統(tǒng)中建立一個上述步驟(1)的分區(qū)鍵值ki與步驟(2)的主機集合的鍵機映射表,記作fstatic,分區(qū)鍵值→主機集合;設(shè)定一個描述分區(qū)鍵值固定性的參數(shù)wstatic,根據(jù)參數(shù)wstatic,對上述步驟(1)的分布式存儲系統(tǒng)中多維離散數(shù)據(jù)的分區(qū)鍵值的固定性進行判斷,若wstatic為假,則進行步驟(5),若參數(shù)wstatic為真,則進行步驟(4);(4)對分布式計算系統(tǒng)的鍵機映射表fstatic進行更新,具體過程如下:(4-1)判斷在分布式計算系統(tǒng)的指定路徑上是否存在鍵機映射表的記錄文件,若存在記錄文件,則將鍵機映射表的記錄文件加載到分布式計算系統(tǒng)的內(nèi)存中用于對步驟(3)的鍵機映射表fstatic進行初始化,進行步驟(5);若不存在記錄文件,則進行步驟(4-2);(4-2)對分布式存儲系統(tǒng)中的分區(qū)鍵值集合k={k1,k2,k3,...,ki,...ks}的每一個分區(qū)鍵值計算對應(yīng)的主機位置。具體步驟如下:(4-2-1)設(shè)置變量i=1,將分區(qū)鍵值集合k的第i個分區(qū)鍵值記作ki,分區(qū)鍵值集合k的分區(qū)鍵值個數(shù)記作|k|;(4-2-2)根據(jù)上述步驟(1)的映射函數(shù)fhash,得到ki的哈希碼fhash(ki),在上述步驟(2)的哈希碼區(qū)間的起始哈希碼集合m中從左到右查找第一個大于哈希碼fhash(ki)的哈希碼區(qū)間起始值所在的位置p,p∈[1,|m|],若在集合m中查找到滿足條件的哈希碼區(qū)間起始值的位置j,則使p=j(luò),若在集合m中未查找到滿足條件的哈希碼區(qū)間起始值,則使p=1;(4-2-3)將第i個分區(qū)鍵值ki和上述步驟(2)的集合h中的第p個主機hp存儲到步驟(3)的fstatic,并使i=i+1,對i進行判斷,若i≤|m|,則返回步驟(4-2-2),若i>|m|,則進行步驟(4-4);(4-4)將fstatic存儲到分布式計算系統(tǒng)的指定路徑,以便下次分布式計算系統(tǒng)啟動時快速加載,進行步驟(5);(5)分布式計算系統(tǒng)進行任務(wù)分配和計算,包括以下步驟:(5-1)在上述步驟(3)的鍵機映射表fstatic中查找任務(wù)分配處理的多維離散數(shù)據(jù)的分區(qū)鍵值k,若分區(qū)鍵值k在鍵機映射表fstatic中,則根據(jù)上述步驟(3)的鍵機映射表fstatic,從主機集合中找出與任務(wù)分配處理的多維離散數(shù)據(jù)的分區(qū)鍵值相對應(yīng)的主機,并將任務(wù)分配到該主機,進行分布式多維離散數(shù)據(jù)的計算;若k不在鍵機映射表fstatic中,則進行步驟(5-2);(5-2)在上述步驟(2)的哈希碼區(qū)間的起始哈希碼集合m中從左到右查找第一個大于哈希碼fhash(k)的哈希碼區(qū)間起始值所在的位置p,p∈[1,|m|],若在集合m中查找到滿足條件的哈希碼區(qū)間起始值的位置j,則使p=j(luò),若在集合m中未查找到滿足條件的哈希碼區(qū)間起始值,則使p=1;(5-3)將上述步驟(2)集合h中的第p個主機hp作為該任務(wù)所處理數(shù)據(jù)的主機,將該任務(wù)分配到主機hp上,進行分布式多維離散數(shù)據(jù)的計算,并將分區(qū)鍵值k和hp存儲到fstatic,以便下次快速從fstatic中查找分區(qū)鍵值對應(yīng)的主機。下面以業(yè)界使用比較廣泛的分布式計算系統(tǒng)spark和分布式存儲系統(tǒng)cassandra為代表,并結(jié)合附圖和具體實施例進一步詳細說明如下。定義cassandra表結(jié)構(gòu)以及數(shù)據(jù)在集群中的分布情況,本步驟不屬于本發(fā)明提出的跨層優(yōu)化方法,但為了方便說明本發(fā)明的具體實施例,需要先定義數(shù)據(jù)以及集群狀況。本發(fā)明以氣象預(yù)報數(shù)據(jù)為例進行說明,該氣象數(shù)據(jù)在cassandra中的存儲如表1所示:表1數(shù)據(jù)表格式數(shù)據(jù)以(分區(qū)鍵,列名)->griddata的形式進行索引,例如griddata32需要通過(wind/800pa,2015021808/06)進行查找。cassandra通過該分區(qū)鍵來確定此條數(shù)據(jù)應(yīng)該存儲在哪臺機器上,在氣象數(shù)據(jù)的存儲中,分區(qū)鍵設(shè)計成物理量和層次組合的形式,例如temper/800pa表示氣壓為800pa的高空的溫度,列名設(shè)計成天氣預(yù)報起報時間和預(yù)報時效的組合,例如2015021808/06表示2015年02月18日08點預(yù)測的未來6小時時的情況。griddata表示在地球經(jīng)緯度網(wǎng)格(以一定的距離切分經(jīng)緯線)上每個經(jīng)緯線交點的物理量值,可以理解成一個二維矩陣,行表示緯線對應(yīng)的值,列表示經(jīng)線對應(yīng)的值。最后以(temper/200pa,2015021808/06)->griddata32為例,本映射表示在2015年02月18日08點預(yù)測的未來6小時時在200pa高空中溫度的分布網(wǎng)格。表2集群機器和數(shù)據(jù)分布情況主機名主機地址哈希碼區(qū)間pc1192.168.3.10~85pc2192.168.3.286~171pc3192.168.3.3172~256集群機器和數(shù)據(jù)分布情況如表2所示,假定spark集群和cassandra集群部署都部署在pc1~pc3這三臺機器上,數(shù)據(jù)以單副本的形式存儲。每臺機器的哈希碼范圍如表所示,例如“0~85”表示哈希碼范圍在[0,85]的數(shù)據(jù)全部存儲在pc1上。(1)根據(jù)分布式存儲系統(tǒng)的數(shù)據(jù)劃分規(guī)則,在分布式計算系統(tǒng)中建立一個多維離散數(shù)據(jù)的分區(qū)鍵值與哈希碼的映射函數(shù),分區(qū)鍵值決定多維離散數(shù)據(jù)在分布式存儲系統(tǒng)中的存儲位置,該映射函數(shù)可以利用已有的murmurhash3或者信息摘要(md5)哈希算法得到。將分區(qū)鍵值與哈希碼的映射函數(shù)記作fhash,fhash:分區(qū)鍵值→哈希碼,分區(qū)鍵值記為ki;通過這步得到分區(qū)鍵值到哈希碼的對應(yīng)關(guān)系如表3所示(為簡單起見,這里的token計算并不是真正的md5值,而是采用0到255的一個整數(shù)代替);表3分區(qū)鍵哈希碼temper/800pa71temper/200pa156wind/800pa23wind/200pa234rain/1000pa134rain/200pa255(2)分布式計算系統(tǒng)從分布式存儲系統(tǒng)獲取包含有多維離散數(shù)據(jù)信息的元數(shù)據(jù),元數(shù)據(jù)為多維離散數(shù)據(jù)在分布式存儲系統(tǒng)中所有主機的哈希碼區(qū)間,將獲取的所有元數(shù)據(jù)的哈希碼區(qū)間的起始哈希碼集合記為m,m={m1,m2,m3,...,mi,...,mn},其中mi為第i個哈希碼區(qū)間的起始哈希碼,集合m中的起始哈希碼按照從小到大排列,將所有與起始哈希碼相對應(yīng)的主機集合記為h,h={h1,h2,h3,...,hz,...,hn},其中hz表示第z個起始哈希碼所在的主機;具體地,通過調(diào)用cassandra的storageservice對外提供的getallranges方法得到類似表2的文本數(shù)據(jù)。通過解析主機地址和哈希碼范圍兩列可以得到m和h。(3)在分布式計算系統(tǒng)中建立一個上述步驟(1)的分區(qū)鍵值ki與步驟(2)的主機集合的鍵機映射表,記作fstatic,分區(qū)鍵值→主機集合;設(shè)定一個描述分區(qū)鍵值固定性的參數(shù)wstatic,根據(jù)參數(shù)wstatic,對上述步驟(1)的分布式存儲系統(tǒng)中多維離散數(shù)據(jù)的分區(qū)鍵值的固定性進行判斷,若wstatic為假,則進行步驟(5),若參數(shù)wstatic為真,則進行步驟(4);(4)對分布式計算系統(tǒng)的鍵機映射表fstatic進行更新,具體過程如下:(4-1)判斷在分布式計算系統(tǒng)的指定路徑上是否存在鍵機映射表的記錄文件,若存在記錄文件,則將鍵機映射表的記錄文件加載到分布式計算系統(tǒng)的內(nèi)存中用于對步驟(3)的鍵機映射表fstatic進行初始化,進行步驟(5);若不存在記錄文件,則進行步驟(4-2);(4-2)對分布式存儲系統(tǒng)中的分區(qū)鍵值集合k={k1,k2,k3,...,ki,...ks}的每一個分區(qū)鍵值計算對應(yīng)的主機位置,具體步驟如下:(4-2-1)設(shè)置變量i=1,將分區(qū)鍵值集合k的第i個分區(qū)鍵值記作ki,分區(qū)鍵值集合k的分區(qū)鍵值個數(shù)記作|k|;(4-2-2)根據(jù)上述步驟(1)的映射函數(shù)fhash,得到ki的哈希碼fhash(ki),在上述步驟(2)的哈希碼區(qū)間的起始哈希碼集合m中從左到右查找第一個大于哈希碼fhash(ki)的哈希碼區(qū)間起始值所在的位置p,p∈[1,|m|],若在集合m中查找到滿足條件的哈希碼區(qū)間起始值的位置j,則使p=j(luò),若在集合m中未查找到滿足條件的哈希碼區(qū)間起始值,則使p=1;(4-2-3)將第i個分區(qū)鍵值ki和上述步驟(2)的集合h中的第p個主機hp存儲到步驟(3)的fstatic,并使i=i+1,對i進行判斷,若i≤|m|,則返回步驟(4-2-2),若i>|m|,則進行步驟(4-4);(4-4)將fstatic存儲到分布式計算系統(tǒng)的指定路徑,以便下次分布式計算系統(tǒng)啟動時快速加載,進行步驟(5);具體地,對于分區(qū)鍵值比較固定的業(yè)務(wù),當(dāng)本系統(tǒng)第一次啟動時,可以通過cassandra提供的cql3接口查詢所有的分區(qū)鍵值,對每一個分區(qū)鍵值執(zhí)行如下操作:首先判斷是否在fstatic中,如果在則繼續(xù)計算下一個,否則調(diào)用步驟2的fhash得到該分區(qū)鍵值對應(yīng)的哈希碼,對表1的分區(qū)鍵計算哈希碼的結(jié)果如表3所示。計算完哈希碼后,根據(jù)m和h來得到分區(qū)鍵對應(yīng)的主機,結(jié)果如表4所示:表4左邊三列表示原始數(shù)據(jù),最右邊兩列表示分區(qū)鍵對應(yīng)的哈希碼和主機,這里的主機即該分區(qū)鍵對應(yīng)的數(shù)據(jù)的存儲位置。最后,我們需要將表4第一列和最右邊兩列存儲成哈希表的形式并持久化到磁盤。至此完成計算系統(tǒng)啟動時的預(yù)處理工作。(5)分布式計算系統(tǒng)進行任務(wù)分配和計算,包括以下步驟:(5-1)在上述步驟(3)的鍵機映射表fstatic中查找任務(wù)分配處理的多維離散數(shù)據(jù)的分區(qū)鍵值k,若分區(qū)鍵值k在鍵機映射表fstatic中,則根據(jù)上述步驟(3)的鍵機映射表fstatic,從主機集合中找出與任務(wù)分配處理的多維離散數(shù)據(jù)的分區(qū)鍵值相對應(yīng)的主機,并將任務(wù)分配到該主機,進行分布式多維離散數(shù)據(jù)的計算;若k不在鍵機映射表fstatic中,則進行步驟(5-2);(5-2)在上述步驟(2)的哈希碼區(qū)間的起始哈希碼集合m中從左到右查找第一個大于哈希碼fhash(k)的哈希碼區(qū)間起始值所在的位置p,p∈[1,|m|],若在集合m中查找到滿足條件的哈希碼區(qū)間起始值的位置j,則使p=j(luò),若在集合m中未查找到滿足條件的哈希碼區(qū)間起始值,則使p=1;(5-3)將上述步驟(2)集合h中的第p個主機hp作為該任務(wù)所處理數(shù)據(jù)的主機,將該任務(wù)分配到主機hp上,進行分布式多維離散數(shù)據(jù)的計算,并將分區(qū)鍵值k和hp存儲到fstatic,以便下次快速從fstatic中查找分區(qū)鍵值對應(yīng)的主機。當(dāng)前第1頁12