多進(jìn)程處理方法、裝置和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及數(shù)據(jù)處理設(shè)備的數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種多進(jìn)程處理方法、裝置和系統(tǒng)。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)業(yè)務(wù)的普及,用戶數(shù)據(jù)的增長(zhǎng),網(wǎng)絡(luò)中的設(shè)備處理幾百G或T的數(shù)據(jù)是比較常見(jiàn)的。為了能夠適應(yīng)巨量數(shù)據(jù)的處理任務(wù),目前業(yè)界通常采用分布式多進(jìn)程處理巨量數(shù)據(jù)。
[0003]如圖1為現(xiàn)有的分布式多進(jìn)程處理技術(shù)的一種處理示意圖;參見(jiàn)圖1,其中,用豎虛線來(lái)劃分不同的機(jī)器,所述豎虛線劃分出的每一個(gè)區(qū)域就是一臺(tái)機(jī)器上的部署情況,如區(qū)域101為第一臺(tái)機(jī)器上的部署情況,區(qū)域102為第二臺(tái)機(jī)器上的部署情況。每一臺(tái)機(jī)器可以啟動(dòng)多個(gè)進(jìn)程,如圖1每一臺(tái)機(jī)器對(duì)應(yīng)的區(qū)域中,所述矩形框內(nèi)每個(gè)小塊分別對(duì)應(yīng)一個(gè)進(jìn)程,每臺(tái)機(jī)器還配置有配置文件,配置文件內(nèi)包括啟動(dòng)的進(jìn)程個(gè)數(shù),每個(gè)進(jìn)程處理的數(shù)據(jù)文件的配置信息等,所述配置信息需要包括每個(gè)進(jìn)程對(duì)應(yīng)的文件名和路徑信息。在數(shù)據(jù)處理過(guò)程中,啟動(dòng)的進(jìn)程需要從所述配置文件中讀取該進(jìn)程對(duì)應(yīng)的文件名和路徑,并到該路徑下讀取該數(shù)據(jù)文件的數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行相應(yīng)業(yè)務(wù)的處理,然后導(dǎo)入到本地或遠(yuǎn)程機(jī)器的內(nèi)存提供給對(duì)外服務(wù)的互聯(lián)網(wǎng)應(yīng)用程序。
[0004]但是,現(xiàn)有技術(shù)在導(dǎo)入少數(shù)文件的情況下是適用的,而在導(dǎo)入大量文件的情況下,會(huì)存在以下缺點(diǎn):
[0005](I)由于數(shù)據(jù)文件不一樣,配置文件不一樣,需要編輯每行配置文件。如果同時(shí)有100臺(tái)機(jī)器處理,每臺(tái)機(jī)器啟動(dòng)10個(gè)進(jìn)程,需要有1000行數(shù)據(jù)進(jìn)行編輯,編輯量過(guò)大,人工成本高。
[0006](2)在實(shí)際的運(yùn)營(yíng)過(guò)程中,常常需要根據(jù)運(yùn)營(yíng)需要調(diào)整每臺(tái)機(jī)器上導(dǎo)入數(shù)據(jù)的速度,這就需要對(duì)進(jìn)程的個(gè)數(shù)和進(jìn)程對(duì)應(yīng)處理的數(shù)據(jù)文件名稱路徑等進(jìn)行修改,因此如果需要調(diào)整,則所有配置都要跟著重新調(diào)整,工作量巨大,且極易出錯(cuò)。因此,現(xiàn)有的這種技術(shù)方案的導(dǎo)入數(shù)據(jù)的速度不方便隨意更改,操作不靈活。
【發(fā)明內(nèi)容】
[0007]有鑒于此,本發(fā)明的主要目的是提供一種多進(jìn)程處理方法,可以較低的工作量實(shí)現(xiàn)靈活的速度調(diào)整,以降低人工編輯量。
[0008]本發(fā)明的另一目的是提供一種多進(jìn)程處理裝置,可以較低的工作量實(shí)現(xiàn)靈活的速度調(diào)整,以降低人工編輯量。
[0009]本發(fā)明的另一目的是提供一種多進(jìn)程處理系統(tǒng),可以較低的工作量實(shí)現(xiàn)靈活的速度調(diào)整,以降低人工編輯量。
[0010]本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0011]一種多進(jìn)程處理方法,包括:
[0012]為本地的數(shù)據(jù)文件編號(hào);
[0013]輸入每個(gè)進(jìn)程需處理的數(shù)據(jù)文件個(gè)數(shù)M ;
[0014]獲取本地的數(shù)據(jù)文件總數(shù)N ;
[0015]根據(jù)所述N與所述M的取模結(jié)果確定需要啟動(dòng)的進(jìn)程數(shù)k ;
[0016]啟動(dòng)k個(gè)進(jìn)程,為每個(gè)進(jìn)程分配至多M個(gè)數(shù)據(jù)文件編號(hào);
[0017]所述進(jìn)程根據(jù)所分配的數(shù)據(jù)文件編號(hào)加載對(duì)應(yīng)的數(shù)據(jù)文件進(jìn)行處理。
[0018]一種多進(jìn)程處理裝置,包括:
[0019]配置模塊,用于為本地的數(shù)據(jù)文件編號(hào);
[0020]輸入模塊,用于輸入每個(gè)進(jìn)程需處理的數(shù)據(jù)文件個(gè)數(shù)M ;
[0021]文件數(shù)模塊,用于獲取本地的數(shù)據(jù)文件總數(shù)N ;
[0022]進(jìn)程數(shù)模塊,用于根據(jù)所述N與所述M的取模結(jié)果確定需要啟動(dòng)的進(jìn)程數(shù)k ;
[0023]分配模塊,用于啟動(dòng)k個(gè)進(jìn)程,為每個(gè)進(jìn)程分配至多M個(gè)數(shù)據(jù)文件編號(hào);
[0024]進(jìn)程模塊,用于運(yùn)行進(jìn)程,所述進(jìn)程根據(jù)所分配的數(shù)據(jù)文件編號(hào)加載對(duì)應(yīng)的數(shù)據(jù)文件進(jìn)行處理。
[0025]一種多進(jìn)程處理系統(tǒng),包括二臺(tái)以上計(jì)算設(shè)備,其中每臺(tái)計(jì)算設(shè)備中包括所述的多進(jìn)程處理裝置。
[0026]與現(xiàn)有技術(shù)相比,本發(fā)明不必配置進(jìn)程與數(shù)據(jù)文件的固定對(duì)應(yīng)關(guān)系,而是可以實(shí)現(xiàn)進(jìn)程與所加載的數(shù)據(jù)文件之間自適應(yīng)的、動(dòng)態(tài)映射的關(guān)系,在希望對(duì)的導(dǎo)入數(shù)據(jù)的速度進(jìn)行調(diào)整時(shí),用戶只需要重新輸入每個(gè)進(jìn)程需處理的數(shù)據(jù)文件個(gè)數(shù)M即可,之后本發(fā)明的方法可以自動(dòng)確定需要啟動(dòng)的進(jìn)程個(gè)數(shù),并且根據(jù)上述分配方法將本地的數(shù)據(jù)文件分配給所啟動(dòng)的進(jìn)程,由所述進(jìn)程加載對(duì)應(yīng)的數(shù)據(jù)文件進(jìn)行處理,所調(diào)整的工作量極其微小,只需要修改一下輸入的M值即可,因此本發(fā)明可以實(shí)現(xiàn)可以較低的工作量實(shí)現(xiàn)靈活的速度調(diào)整,以降低人工編輯量。
【附圖說(shuō)明】
[0027]圖1為現(xiàn)有的分布式多進(jìn)程處理技術(shù)的一種處理示意圖;
[0028]圖2為本發(fā)明所述多進(jìn)程處理方法的一種流程圖;
[0029]圖3為本發(fā)明所述方法的一種處理示意圖;
[0030]圖4為本發(fā)明所述多進(jìn)程處理裝置的一種組成示意圖;
[0031]圖5為本發(fā)明所述多進(jìn)程處理系統(tǒng)的一種組成示意圖。
【具體實(shí)施方式】
[0032]下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說(shuō)明。
[0033]本發(fā)明中,所述本地是指本地的機(jī)器,即本機(jī),所述機(jī)器是指具有數(shù)據(jù)處理能力的計(jì)算設(shè)備,如計(jì)算機(jī),服務(wù)器,工作站等,這種機(jī)器的可以是物理上的獨(dú)立機(jī)器,也可以是邏輯劃分的機(jī)器,如邏輯劃分的計(jì)算機(jī)集群等。
[0034]本發(fā)明中,所述的進(jìn)程是計(jì)算設(shè)備的操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ);是一次程序的執(zhí)行;是一個(gè)程序及其數(shù)據(jù)在處理機(jī)上順序執(zhí)行時(shí)所發(fā)生的活動(dòng);是程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過(guò)程,它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。
[0035]圖2為本發(fā)明所述多進(jìn)程處理方法的一種流程圖。參見(jiàn)圖2,該方法包括:
[0036]步驟201、為本地的數(shù)據(jù)文件編號(hào)。
[0037]步驟202、輸入每個(gè)進(jìn)程需處理的數(shù)據(jù)文件個(gè)數(shù)M。
[0038]步驟203、獲取本地的數(shù)據(jù)文件總數(shù)N。
[0039]步驟204、根據(jù)所述N與所述M的取模結(jié)果確定需要啟動(dòng)的進(jìn)程數(shù)k。
[0040]步驟205、啟動(dòng)k個(gè)進(jìn)程,為每個(gè)進(jìn)程分配至多M個(gè)數(shù)據(jù)文件編號(hào)。這M個(gè)數(shù)據(jù)文件編號(hào)不重合,這樣就可以全覆蓋所有的數(shù)據(jù)文件。
[0041]步驟206、所述進(jìn)程根據(jù)所分配的數(shù)據(jù)文件編號(hào)加載對(duì)應(yīng)的數(shù)據(jù)文件進(jìn)行處理。
[0042]在一種具體的優(yōu)選實(shí)施例中,在上述步驟204中,所述根據(jù)所述N與所述M的取模結(jié)果確定需要啟動(dòng)的進(jìn)程數(shù)k,具體包括:
[0043]進(jìn)行取模運(yùn)算,即:N%M ;
[0044]如果N%M等于0,則所述k為:N除以M得到的商的整數(shù)部分,即N/M ;
[0045]如果N%M不等于O,則所述k為:N除以M得到的商的整數(shù)部分,再加上I,即N/M+1。
[0046]在一種具體的優(yōu)選實(shí)施例中,在所述步驟205中,所述為每個(gè)進(jìn)程分配至多M個(gè)數(shù)據(jù)文件編號(hào),具體為:按照所述本地的數(shù)據(jù)文件的編號(hào),從第一個(gè)進(jìn)程開(kāi)始,每個(gè)進(jìn)程依次分配至多M個(gè)數(shù)據(jù)文件編號(hào),直到分配完本地所有的數(shù)據(jù)文件編號(hào)為止。這樣,就可以保證這M個(gè)數(shù)據(jù)文件編號(hào)不重合,這樣就可以全覆蓋所有的數(shù)據(jù)文件。
[0047]更為具體的一種實(shí)施例中,步驟201所述為本地的數(shù)據(jù)文件編號(hào),具體為:對(duì)本地的數(shù)據(jù)文件從O開(kāi)始編號(hào)。步驟205中所述從第一個(gè)進(jìn)程開(kāi)始,每個(gè)進(jìn)程依次分配至多M個(gè)數(shù)據(jù)文件編號(hào),直到分配完本地所有的數(shù)據(jù)文件編號(hào)為止,具體包括:
[0048]設(shè)置所啟動(dòng)的進(jìn)程編號(hào),設(shè)P表示所啟動(dòng)的進(jìn)程的編號(hào),p=0,1,…,k_l,則:
[0049]若(p+1) XM-1小于最后一個(gè)數(shù)據(jù)文件編號(hào),則編號(hào)為P的進(jìn)程對(duì)應(yīng)分配的數(shù)據(jù)文件編號(hào)為:從第PXM到第(p+1) XM-1 ;
[0050]若(p+1) XM-1大于等于最后一個(gè)數(shù)據(jù)文件編號(hào),則編號(hào)為P的進(jìn)程對(duì)應(yīng)分配的數(shù)據(jù)文件編號(hào)為:從第PXM到最后一個(gè)數(shù)據(jù)文件編號(hào)。
[0051]上述實(shí)施例所述為各個(gè)進(jìn)程分配數(shù)據(jù)文件的方式為依次順序分配,這樣從第一個(gè)啟動(dòng)的進(jìn)程分配第一個(gè)數(shù)據(jù)文件編號(hào)開(kāi)始,則會(huì)依次分配完畢本地的所有的數(shù)據(jù)文件編號(hào),實(shí)現(xiàn)利用多進(jìn)程處理數(shù)據(jù)的分布式處理方法。當(dāng)然,也可以采用其它的分配方式來(lái)分配數(shù)據(jù)文件,例如可以以倒序的方式,從第一個(gè)啟動(dòng)的進(jìn)程分配最后一個(gè)數(shù)據(jù)文件編號(hào)開(kāi)始,倒序分配完畢本地的所有的數(shù)據(jù)文件;例如也可以采用其它的采樣分配方式,如采用隨機(jī)方式,為所述k個(gè)已經(jīng)啟動(dòng)的進(jìn)程依次分配M個(gè)不同的數(shù)據(jù)文件編號(hào),如果在為最后一個(gè)進(jìn)程分配數(shù)據(jù)文件時(shí),所剩余的數(shù)據(jù)文件個(gè)數(shù)小于M,則為該進(jìn)程分配所述剩余的數(shù)據(jù)文件。
[0052]通常,互聯(lián)網(wǎng)的處理系統(tǒng)往往包括大量的計(jì)算設(shè)備來(lái)協(xié)同提供數(shù)據(jù)服務(wù),那么在具有二臺(tái)以上計(jì)算設(shè)備的處理系統(tǒng)中,可以針對(duì)每臺(tái)計(jì)算設(shè)備分別執(zhí)行本發(fā)明所述的多進(jìn)程處理方法。
[0053]例如,圖3為本發(fā)明所述方法的一種處理示意圖。參見(jiàn)圖3,其中,用豎虛線來(lái)劃分不同的機(jī)器,所述豎虛線劃分出的每一個(gè)區(qū)域就是一臺(tái)機(jī)器上的部署情況,如區(qū)域301為第一臺(tái)機(jī)器上的部署情況,區(qū)域302為第二臺(tái)機(jī)器上的部署情況。每一臺(tái)機(jī)器可以啟動(dòng)多個(gè)進(jìn)程,如圖3每一臺(tái)機(jī)器對(duì)應(yīng)的區(qū)域中,所述矩形框內(nèi)每個(gè)小塊分別對(duì)應(yīng)一個(gè)進(jìn)程,每臺(tái)機(jī)器也有配置文件,只是配置文件中不配置具體進(jìn)程與具體數(shù)據(jù)文件的固定的對(duì)應(yīng)關(guān)系,而是配置數(shù)據(jù)文件的編號(hào)及數(shù)據(jù)文件的屬性信息如路徑地址等。在實(shí)際運(yùn)營(yíng)的過(guò)程中,管理人員可以根據(jù)所調(diào)整的每臺(tái)機(jī)器導(dǎo)入數(shù)據(jù)的速度,自行向每臺(tái)機(jī)器中輸入每個(gè)進(jìn)程需處理的數(shù)據(jù)文件個(gè)數(shù)M,假設(shè)此圖3中所述M=3,又假設(shè)第一臺(tái)機(jī)器中數(shù)據(jù)文件個(gè)數(shù)為N=92,由于^層不等于O,則需要啟動(dòng)的進(jìn)程數(shù)k=N/M+l=31。那么該第一臺(tái)機(jī)器同時(shí)啟動(dòng)31個(gè)進(jìn)程,進(jìn)程編號(hào)分別為O,1,-,30 ;其中,從編號(hào)為O至編號(hào)為29的進(jìn)程,每個(gè)進(jìn)程分配3個(gè)數(shù)據(jù)文件編號(hào),假設(shè)該進(jìn)程編號(hào)為P,則為其分配的數(shù)據(jù)文件為:編號(hào)從PX3到第(p+1) X3-1的數(shù)據(jù)文件。最后一個(gè)進(jìn)程即編號(hào)31的進(jìn)程分配最后兩個(gè)數(shù)據(jù)文件,即編號(hào)91和92的數(shù)據(jù)文件。
[0054]這樣,所述本地的數(shù)據(jù)文件分別被分配給31個(gè)進(jìn)程中,實(shí)現(xiàn)了分布式多進(jìn)程處理巨量數(shù)據(jù)。
[0055]然而,本發(fā)明所需要配置的信息僅僅是對(duì)本地的數(shù)據(jù)文件進(jìn)行自動(dòng)編號(hào),不必為每個(gè)進(jìn)程配置對(duì)應(yīng)的數(shù)據(jù)文件名稱,即配置編輯量大大降低;在希望對(duì)某臺(tái)機(jī)器的導(dǎo)入數(shù)據(jù)的速度進(jìn)行調(diào)整時(shí),是需要重新輸入每個(gè)進(jìn)程需處理的數(shù)據(jù)文件個(gè)數(shù)M即可,例如M修改為4,則本發(fā)明的方法可以自動(dòng)確定需要啟動(dòng)的進(jìn)程個(gè)數(shù),并且