數(shù)據(jù)存儲(chǔ)計(jì)算方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及信息處理領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)計(jì)算方法和系統(tǒng)。
【背景技術(shù)】
[0002] 在網(wǎng)絡(luò)信息服務(wù)產(chǎn)業(yè)領(lǐng)域,數(shù)據(jù)已成為各大網(wǎng)絡(luò)機(jī)構(gòu)的產(chǎn)品發(fā)展中不可或缺的元 素。各大互聯(lián)網(wǎng)公司都基于通過(guò)各種途徑收集到的海量數(shù)據(jù)的分析結(jié)果上,更新自身的服 務(wù)模式,營(yíng)銷策略及產(chǎn)品規(guī)格,所以,大數(shù)據(jù)的處理及分析已經(jīng)成為企業(yè)發(fā)展中亟待解決的 問(wèn)題。為了有效應(yīng)對(duì)大數(shù)據(jù)帶來(lái)的挑戰(zhàn),同時(shí)充分利用大數(shù)據(jù)帶來(lái)的機(jī)遇,國(guó)內(nèi)外的產(chǎn)業(yè)界 與科技界、甚至各國(guó)政府部門都在積極布局、制定戰(zhàn)略規(guī)劃,研究高效率以及高準(zhǔn)確率的數(shù) 據(jù)處理技術(shù)方案。
[0003] 目前現(xiàn)有的處理海量數(shù)據(jù)的方法一般都是基于已有的r-tree算法進(jìn)行多維的數(shù) 據(jù)組織,再將海量數(shù)據(jù)存入分布式文件系統(tǒng),利用分布式集群來(lái)進(jìn)行數(shù)據(jù)的分析和運(yùn)算。
[0004] 但是現(xiàn)有的r-tree算法對(duì)數(shù)據(jù)進(jìn)行組織時(shí),不能將葉節(jié)點(diǎn)的文件大小控制在一 定范圍之內(nèi),導(dǎo)致葉節(jié)點(diǎn)在分布式系統(tǒng)中分布極不均勻,一個(gè)葉節(jié)點(diǎn)可能橫跨幾個(gè)block (分布式文件系統(tǒng)的最小存儲(chǔ)單位),造成集群中單臺(tái)服務(wù)器計(jì)算資源的浪費(fèi)。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)計(jì)算方法和系統(tǒng),解決了資源浪費(fèi)的問(wèn)題。
[0006] 一種數(shù)據(jù)存儲(chǔ)計(jì)算方法,包括:
[0007] 對(duì)海量數(shù)據(jù)進(jìn)行日志收集并預(yù)處理;
[0008] 對(duì)預(yù)處理后的日志進(jìn)行多維度日志分類;
[0009] 根據(jù)分布式系統(tǒng)Block的大小,將分類后的日志數(shù)據(jù)打包,所述Block為分布式文 件系統(tǒng)的最小存儲(chǔ)單位;
[0010] 在所述Block上存儲(chǔ)數(shù)據(jù),建立數(shù)據(jù)空間索引;
[0011] 利用所述數(shù)據(jù)空間索引,維護(hù)分布式集群計(jì)算資源的負(fù)載均衡。
[0012] 優(yōu)選的,所述對(duì)海量數(shù)據(jù)進(jìn)行日志收集并預(yù)處理包括:
[0013] 對(duì)存儲(chǔ)在服務(wù)器中的海量數(shù)據(jù)進(jìn)行日志收集,所述海量數(shù)據(jù)指的是用戶的網(wǎng)絡(luò)行 為數(shù)據(jù);
[0014] 分析日志格式,獲取日志中的維度;
[0015] 從所述日志中的維度中選取多個(gè)維度建立空間坐標(biāo),其中,每一個(gè)維度代表一種 數(shù)據(jù)類型。
[0016] 優(yōu)選的,從所述日志中的維度中選取多個(gè)維度建立空間坐標(biāo)包括:
[0017] 接收用戶指令,所述用戶指令中攜帶有多個(gè)維度的標(biāo)識(shí);
[0018] 根據(jù)所述維度的標(biāo)識(shí),從所述日志中的維度中選擇相應(yīng)的維度建立空間坐標(biāo)。
[0019] 優(yōu)選的,對(duì)預(yù)處理后的日志進(jìn)行多維度日志分類包括:
[0020] 根據(jù)所述空間坐標(biāo)的范圍和各維度劃分塊的數(shù)目,采用均值劃分法確定各個(gè)維度 上的劃分范圍,逐條分析日志;
[0021] 將每條日志寫入對(duì)應(yīng)的空間坐標(biāo)的范圍中,并生成新的日志文件;
[0022] 將新生成的文件進(jìn)行壓縮,并記錄每個(gè)文件對(duì)應(yīng)的空間范圍以及壓縮后的文件大 小。
[0023] 優(yōu)選的,根據(jù)分布式系統(tǒng)Block的大小,將分類后的日志數(shù)據(jù)打包包括:
[0024] 將壓縮后的文件的元信息依次寫入內(nèi)存中;
[0025] 根據(jù)每個(gè)文件所對(duì)應(yīng)的空間范圍,將文件的元信息映射到空間坐標(biāo)系中;
[0026] 根據(jù)文件的空間信息,建立r-tree數(shù)據(jù)結(jié)構(gòu),所述r-tree的每個(gè)葉子節(jié)點(diǎn)的數(shù)據(jù) 將作為一個(gè)數(shù)據(jù)包,每個(gè)數(shù)據(jù)包里包含多個(gè)文件,同時(shí)保證葉子節(jié)點(diǎn)存放的整體文件大小 大于l/2block的值,同時(shí)小于Iblock值。
[0027] 優(yōu)選的,在所述Block上存儲(chǔ)數(shù)據(jù),建立數(shù)據(jù)空間索引包括:
[0028] 調(diào)用分布式文件系統(tǒng)的文件讀寫函數(shù),將所述r-tree的每個(gè)葉子節(jié)點(diǎn)里的文件 寫入分布式系統(tǒng)的一個(gè)文件中,并記錄文件的空間范圍;
[0029] 通過(guò)與分布式系統(tǒng)的文件管理器進(jìn)行交互,獲得每個(gè)文件所對(duì)應(yīng)的block的id和 相應(yīng)復(fù)本的block的id,得到每個(gè)block對(duì)應(yīng)的文件空間范圍;
[0030] 將文件的空間范圍映射到空間坐標(biāo)系中,對(duì)文件建立空間索引,通過(guò)文件與新產(chǎn) 生的所有的block進(jìn)行關(guān)聯(lián),以建立基于block的空間索引,在內(nèi)存中維持一個(gè)動(dòng)態(tài)的索引 數(shù)據(jù)。
[0031] 優(yōu)選的,所述對(duì)所述block進(jìn)行分布式數(shù)據(jù)包存儲(chǔ),建立數(shù)據(jù)空間索引的步驟之 后,還包括:
[0032] 建立新的計(jì)算模式,實(shí)現(xiàn)計(jì)算時(shí)集群的負(fù)載均衡。
[0033] 優(yōu)選的,利用所述數(shù)據(jù)空間索引,維護(hù)分布式集群計(jì)算資源的負(fù)載均衡包括:
[0034] 用戶向分布式系統(tǒng)提交運(yùn)行程序請(qǐng)求,所述請(qǐng)求中包括需求數(shù)據(jù)的維度空間范 圍;
[0035] 分布式系統(tǒng)通過(guò)系統(tǒng)中的空間索引系統(tǒng)獲取需要執(zhí)行的空間區(qū)域所對(duì)應(yīng)的所有 block原文件及block復(fù)本文件;
[0036] 分布式系統(tǒng)中的存儲(chǔ)管理器與集群進(jìn)行交互得到集群中各個(gè)服務(wù)器的負(fù)載狀況, 并返回給系統(tǒng)中的計(jì)算管理器,計(jì)算管理器根據(jù)不同服務(wù)器的負(fù)載情況,計(jì)算最優(yōu)的block 的id,并返回給程序請(qǐng)求的對(duì)應(yīng)的block的id,運(yùn)行程序。
[0037] 本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)計(jì)算系統(tǒng),包括:
[0038] 數(shù)據(jù)收集模塊,用于對(duì)海量數(shù)據(jù)進(jìn)行日志收集并預(yù)處理;
[0039] 日志分類模塊,用于對(duì)預(yù)處理后的日志進(jìn)行多維度日志分類;
[0040] 數(shù)據(jù)打包模塊,用于根據(jù)分布式系統(tǒng)Block的大小,將分類后的日志數(shù)據(jù)打包,所 述Block為分布式文件系統(tǒng)的最小存儲(chǔ)單位;
[0041] 索引建立模塊,用于在所述Block上存儲(chǔ)數(shù)據(jù),建立數(shù)據(jù)空間索引;
[0042] 負(fù)載均衡模塊,用于利用所述數(shù)據(jù)空間索引,維護(hù)分布式集群計(jì)算資源的負(fù)載均 衡。
[0043] 優(yōu)選的,所述負(fù)載均衡模塊包括:
[0044] 請(qǐng)求接收單元,用于接收用戶向分布式系統(tǒng)提交運(yùn)行程序請(qǐng)求,所述請(qǐng)求中包括 需求數(shù)據(jù)的維度空間范圍;
[0045] 索引單元,用于分布式系統(tǒng)通過(guò)系統(tǒng)中的空間索引系統(tǒng)獲取需要執(zhí)行的空間區(qū)域 所對(duì)應(yīng)的所有block原文件及block復(fù)本文件;
[0046] 存儲(chǔ)管理器,用于集群進(jìn)行交互得到集群中各個(gè)服務(wù)器的負(fù)載狀況,并返回給系 統(tǒng)中的計(jì)算管理器;
[0047] 計(jì)算管理器,用于根據(jù)不同服務(wù)器的負(fù)載情況,計(jì)算最優(yōu)的block的id,并返回給 程序請(qǐng)求的對(duì)應(yīng)的block的id,運(yùn)行程序。
[0048] 本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)計(jì)算方法和系統(tǒng),對(duì)海量數(shù)據(jù)進(jìn)行日志收集并預(yù)處 理,對(duì)預(yù)處理后的日志進(jìn)行多維度日志分類,根據(jù)分布式系統(tǒng)Block的大小,將分類后的日 志數(shù)據(jù)打包,所述Block為分布式文件系統(tǒng)的最小存儲(chǔ)單位,在所述Block上存儲(chǔ)數(shù)據(jù),建 立數(shù)據(jù)空間索引,利用所述數(shù)據(jù)空間索引,維護(hù)分布式集群計(jì)算資源的負(fù)載均衡,實(shí)現(xiàn)了數(shù) 據(jù)存儲(chǔ)過(guò)程中的負(fù)載均衡,解決了資源浪費(fèi)的問(wèn)題。
【附圖說(shuō)明】
[0049] 圖1是本發(fā)明的實(shí)施例一提供的一種數(shù)據(jù)存儲(chǔ)計(jì)算方法的流程圖;
[0050] 圖2是圖1中步驟101的具體流程圖;
[0051] 圖3是圖1中步驟102的具體流程圖;
[0052] 圖4是圖1中步驟103的具體流程圖;
[0053] 圖5是圖1中步驟104的具體流程圖;
[0054] 圖6是圖1中步驟105的具體流程圖;
[0055] 圖7是本發(fā)明的實(shí)施例二提供的一種數(shù)據(jù)存儲(chǔ)計(jì)算系統(tǒng)的結(jié)構(gòu)示意圖;
[0056] 圖8是本發(fā)明的實(shí)施例二提供的數(shù)據(jù)存儲(chǔ)計(jì)算系統(tǒng)工作流程示意圖;
[0057] 圖9是本發(fā)明的實(shí)施例三提供的一種數(shù)據(jù)存儲(chǔ)計(jì)算方法的流程圖;
[0058] 圖10是本發(fā)明的實(shí)施例四提供的一種數(shù)據(jù)存儲(chǔ)計(jì)算系統(tǒng)的結(jié)構(gòu)示意圖;
[0059] 圖11是圖10中負(fù)載均衡模塊1005的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0060] 現(xiàn)有的r-tree算法對(duì)數(shù)據(jù)進(jìn)行組織時(shí),不能將葉節(jié)點(diǎn)的文件大小控制在一定范 圍之內(nèi),導(dǎo)致葉節(jié)點(diǎn)在分布式系統(tǒng)中分布極不均勻,一個(gè)葉節(jié)點(diǎn)可能橫跨幾個(gè)block (分布 式文件系統(tǒng)的最小存儲(chǔ)單位),造成集群中單臺(tái)服務(wù)器計(jì)算資源的浪費(fèi);再者,分布式系統(tǒng) 的數(shù)據(jù)復(fù)本也是以block為單位的,橫跨多個(gè)block的葉節(jié)點(diǎn)也對(duì)在分布式系統(tǒng)中利用冗 余資源建立多維的數(shù)據(jù)索引造成了困難;此外,現(xiàn)有的分布式系統(tǒng)中,無(wú)法在計(jì)算時(shí)利用冗 余資源實(shí)現(xiàn)集群之內(nèi)不同服務(wù)器間的負(fù)載均衡。
[0061] 為了解決上述問(wèn)題,本發(fā)明的實(shí)施例提供了一種數(shù)據(jù)存儲(chǔ)計(jì)算方法和系統(tǒng)。下文 中將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說(shuō)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng) 中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。
[0062] 首先結(jié)合附圖,對(duì)本發(fā)明的實(shí)施例一進(jìn)行說(shuō)明。
[0063] 本發(fā)明實(shí)施例提出了一種基于分片的數(shù)據(jù)存儲(chǔ)計(jì)算方法,使用該方法完成數(shù)據(jù)存 儲(chǔ)的過(guò)程如圖1所示,包括:
[0064] 步驟101、對(duì)海量數(shù)據(jù)進(jìn)行日志收集并預(yù)處理;
[0065] 本步驟具體如圖2所示,包括:
[0066] 步驟1011、對(duì)存儲(chǔ)在服務(wù)器中的海量數(shù)據(jù)進(jìn)行日志收集,所述海量數(shù)據(jù)指的是用 戶的網(wǎng)絡(luò)行為數(shù)據(jù);
[0067] 本步驟中,對(duì)存儲(chǔ)在服務(wù)器中的海量數(shù)據(jù)進(jìn)行日志收集,所述海量數(shù)據(jù)指的是用 戶的網(wǎng)絡(luò)行為數(shù)據(jù)。例如,用戶的IP地址,唯一 ID等。
[0068] 步驟1012、分析日志格式,獲取日志中的維度;
[0069] 本步驟中,分析日志格式后,得到日志中包含的多個(gè)維度及各個(gè)維度的代表內(nèi)容。
[0070] 步驟1013、從所述日志中的維度中選取多個(gè)維度建立空間坐標(biāo);
[0071] 本步驟中,每一個(gè)維度代表一種數(shù)據(jù)類型。維度選擇可根據(jù)用戶指令完成,即用戶 發(fā)出指令,在指令中攜帶所選擇的多個(gè)維度的標(biāo)識(shí),根據(jù)該用戶指令選擇相應(yīng)的維度建立 空間坐標(biāo);也可以隨機(jī)的從日志的維度中選擇規(guī)定個(gè)數(shù)的維度以建立空間坐標(biāo)。
[0072] 步驟102、對(duì)預(yù)處理后的日志進(jìn)行多維度日志分類;
[0073] 本步驟具體如圖3所示,包括:
[0074] 步驟1021、根據(jù)所述空間坐標(biāo)的范圍和各維度劃分塊的數(shù)目,采用均值劃分法確 定各個(gè)維度上的劃分范圍,逐條分析日志;
[0075] 本步驟中所采用的均值劃分法,即通過(guò)"空間坐標(biāo)的范圍/劃分塊數(shù)"得到每塊的 范圍。如空間坐標(biāo)范圍為100,劃分快數(shù)為10,得到每塊的范圍為100/10=10。根據(jù)日志量 的大小以及分布式系統(tǒng)中block的值確定日志在各個(gè)維度上的劃分方法,逐條分析日志, 例如,可以將ip地址在20至80之間的日志為一個(gè)空間進(jìn)行劃分。
[0076] 步驟1022、將每條日志寫入對(duì)應(yīng)的空間坐標(biāo)的范圍中,并生成新的日志文件;
[0077] 每條日志均有一個(gè)空間坐標(biāo)點(diǎn),本步驟中,具體的,將該空間坐標(biāo)點(diǎn)的日志寫入對(duì) 應(yīng)的空間坐標(biāo)的范圍中。
[0078] 步驟1023、將新生成的文件進(jìn)行壓縮,并記錄每個(gè)文件對(duì)應(yīng)的空間范圍以及壓縮 后的文件大小