分布式處理系統、分布式處理設備、分布式處理方法和分布式處理程序的制作方法
【技術領域】
[0001]本發明涉及分布式處理系統、分布式處理設備、分布式處理方法和分布式處理程序。更具體地講,本發明涉及能夠通過減小通信量高速執行處理的分布式處理系統等。
【背景技術】
[0002]需要由計算機實現的處理已經變得越來越復雜且大規模。然而,僅僅作為硬件的性能(計算能力、存儲量等)的提高已經達到極限。因此,近來,已經特別開發出借助網絡相互連接的多個計算機以分配方式協作執行處理所采用的分布式處理的技術(分布式數據庫、分布式高速緩存、分布式共享存儲器、分布器批處理等)。
[0003]近來,特別地,變得可以在個人計算機領域中以低價獲得容量是4GB級別的RAM(主存儲單元)、容量是1TB級別的硬盤(外部存儲器設備)、通信速度是lGbps級別的NIC(網卡)等并且可以容易地借助高速網絡將設置有它們的計算機設備相互連接。因此,變得常見的是,連接多個這種節點(服務器設備)并且針對各節點采用分布式處理中間件以使其執行分布式處理。
[0004]中間件是典型地設置在操作系統(0S)和應用軟件之間并且執行0S功能和應用軟件的多用途功能的擴展形式的軟件。在這些之中,分布式處理中間件提供分布式處理(多個節點之間的數據同步、應用的分布/配置、進程的開始/結束、錯誤處理等)中需要的功能。近來,特別地,用大量節點以協作方式執行處理的所謂云計算變得發達,使得分布式處理中間件的重要性尤其愈發增大。
[0005]作為使用分布式處理中間件的分布式處理系統可執行的分布式處理方法,存在諸如MapReduce、BSP和MPI的多種方法。在這些之中,主-從型分布式處理方法也是典型方法。
[0006]主-從型是被稱為主的控制組件或節點控制其他節點所采用的處理模式中的一種,并且處理所謂的從。當在節點之間或者在進程之間創建主-從關系時,一直由主對從進行控制。
[0007]圖20是示出現有分布式處理系統900的結構的說明圖。分布式處理系統900是通過借助網絡930將多個計算機設備相互連接而構成的。計算機設備中的一個是主節點910,其他是從節點920a、920b—(—般來講,被稱為從節點920)。
[0008]分布式處理中間件912安裝在主節點910的OS911(操作系統)上。類似地,分布式處理中間件922安裝在從節點920的0S 921上。
[0009]主節點910將分布式應用分布于從節點920,使其執行必要處理。然而,通過從節點處理的部分與通過主節點處理的部分并不完全相同,而是常常可以是處理的部分或數據的部分。通過在各節點執行不同處理或者處理不同數據,可分布式并行進行多種處理。因此,可高速執行處理。
[0010]圖21是示出通過圖20中示出的分布式處理系統900執行的分布式應用950的結構的說明圖。分布式應用950是通過組合處理模塊、公共模塊、配置文件、二進制數據(圖像文件等)等的多個集合而構成的。
[0011]模塊中的每個是執行格式文件、公共庫文件等。在Windows(注冊商標)的情況下,例如,它是ΕΧΕ文件、DLL文件等。在Linux(注冊商標)的情況下,它是外殼腳本、執行文件、庫文件等。在Java(注冊商標)的情況下,它是Jar文件、Class文件等。
[0012]在任何情況下,模塊中的每個由“元數據”和“執行區域”構成。元數據是諸如模塊名稱、簽名(方法名稱和參數的集合)、域、常數等關于模塊的數據。執行區域是諸如實際操作方法的執行代碼。
[0013]另外,各模塊包括在執行時進行的初始化處理。更具體地講,Windows的DLL初始化是DllMainO,Linux的庫初始化是_init(),Java的初始化是例如<clinit>、〈init>。
[0014]當分布式應用950啟動時,加載首先在各節點中啟動的處理模塊的元數據以分析元數據,在能夠實際執行處理的存儲器中設置常數和執行區域。如果其中包括對于另一個模塊的依賴關系,則重復進行加載該模塊并且解決該依賴關系以成為可進行模塊之間的調用(稱為“聯系”)的狀態的動作。
[0015]一般,各模塊具有用于初始化處理的部分。通過在鏈接之后執行初始化處理,有關的應用成為可執行狀態。也就是說,通過重復“讀出必要文件(加載)—解決各模塊的依賴關系(聯系)—執行初始化處理(初始化)”的動作,分布式應用950變得可執行。
[0016]然而,各模塊的加載時機取決于各設備的實現方式,存在在啟動時加載全部必要模塊的情況和在實際涉及模塊之前一直不加載模塊的情況。
[0017]作為其相關技術文獻,存在以下文獻。專利文獻2中描繪了基于設定規則選擇對象數據并且提高使用它進行處理的效率的分布式處理系統。專利文獻2中描繪了通過使用圖形用戶界面執行對分布式處理的管理的技術。
[0018]專利文獻4中描繪了使用設置有專用于特定處理的子處理器的處理設備的分布式處理系統。專利文獻5中描繪了網絡服務在網絡上的部署。專利文獻6中描繪了如果在自身設備中沒有提供必要信息則從其他設備獲取分布式處理設備中需要的信息以在所有設備之間進行信息共享的技術。
[0019]專利文獻7中描繪了關于多層軟件的元數據的布局的技術。非專利文獻1中描繪了作為典型分布式處理中間件的Hadoop的概況。
[0020]專利文獻1:日本未經審查的專利公開2012-063832
[0021]專利文獻2:日本未經審查的專利公開2011-034137
[0022]專利文獻3:日本未經審查的專利公開2008-171277
[0023]專利文獻4:日本未經審查的專利公開2006-155187
[0024]專利文獻5:日本未經審查的專利公開2004-533687
[0025]專利文獻6:日本未經審查的專利公開2004-342042
[0026]專利文獻7:日本未經審查的專利公開2003-505750
[0027]非專利文獻1: “Let ’ s Try Distributed Processing”(嘗試進行分布式處理),Takeshi ffakimot0.,2010年9月29 日(2013年5月 14 日搜索),Pasona TECH,〈URL:http://www.pasonatech.c0.jp/techlab/rdtrend/rep7.jsp>
[0028]在當前的描述中,假設在諸如上述非專利文獻1中描繪的Hadoop的Java環境下運行的分布式操作系統900,使得要注意將處理模塊和公共模塊中的每個編寫為類(.class)文件。然而,要注意,本發明不一定限于Java環境。
[0029]圖21中示出的分布式應用950包括第一步至第三步的處理模塊951至953(stepOl.class至step03.class)、用于各步的第一公共模塊954至第三公共模塊956(sharedOl.class至shared03.class)、其他配置文件、二進制數據等。
[0030]另外,分布式應用950還包括第二步的從節點方的處理模塊952a(step02_slave.class),因為在僅僅由主節點910執行第一步和第三步的同時,主節點919和從節點920中的每個通過以協作方式執行分布式處理來執行第二步。上述文件中的每個被置于文件名為諸如“distributed batch applicat1n l.jar”等的一個文件中。
[0031]圖22是示出通過圖20中示出的現有分布式處理系統900執行圖21中示出的分布式應用950的情況的動作的說明圖。主節點910在從用戶接收到執行命令時將分布式應用950的文件(distributed batch applicat1n 1.jar)分布于各從節點920。在各節點中,各分布式處理中間件912(922)啟動處理,擴展分布式應用950的文件,加載類文件并且執行它。
[0032]然而,如圖21中所示,并非分布式應用950的所有步驟都執行分布式處理。因此,如果僅僅分布式應用950的文件(distributed batch applicat1n 1.jar)被分布于各節點,則分布式處理中未使用的文件被另外傳遞。這顯然是無用傳遞。尤其是,當包含諸如圖像、移動圖片、音頻等大尺寸文件時,除非使用此文件,否則是浪費。
[0033]另外,當在執行時傳遞文件時,從節點920出現啟動處理延遲的問題。參照圖21中示出的情況,在第二步中執行分布式處理。當在完成第一步并且開始第二步的時間點,主節點910將分布式應用950的文件分布于各從節點920時,在分布處理中和擴展“distributedbatch applicat1n 1.jar”文件并且加載類文件的階段執行的處理中,產生延遲。
[0034]為了不造成延遲,考慮分布分布式應用950的文件并且將在僅僅主節點910執行第一步的同時在各從節點920方完成類文件的擴展和加載所采用的方法。然而,這會造成其他問題。
[0035]在分布式處理中,從節點920的數量經常會變成數千個、數萬個,或者可以是比這些大的規模。另外,分布式處理中間件912(922)—般在實際要執行分布處理的時間點檢查各節點的資源(計算器資源)的狀況之后將處理分配給設定數量的從節點。也就是說,在該時間點之前,一直不可得知哪些從節點執行分布式處理。
[0036]因此,如果分布式應用950的文件被預先無條件地分布于各從節點920,則文件甚至可預先分布于實際沒有被分配處理的從節點920。這也是無用傳遞。也就是說,并不認為為了不造成從節點920的啟動處理延遲而預先分布分布式應用950的文件是適宜的。
[0037]另外,執行在許多情況下各節點(主節點910和從節點920中的每個)以協作方式執行的分布式處理,以對不同的目標數據執行相同處理,使得在各節點中啟動時執行的啟動處理常常是公共處理。
[0038]無視于此,從節點920中的每個的分布式處理中間件922—般通過操作步驟中的每個來產生和刪除進程。因此,節點中的每個針對操作步驟中的每個每次都執行相同的啟動處理。這也是作為延遲成因的無用處理。
[0039]在上述的專利文獻1至7和非專利文獻1中沒有描繪能夠克服上述問題并且既實現減少在執行時將傳遞到各從節點的數據量又實現開始高速進行分布式處理的技術。
[0040]因此,本發明的目的是提供能夠減少在執行時將傳遞到各從節點的數據量并且開始高速進行分布式處理的分布式處理系統、分布式處理設備、分布式處理方法和分布式處理程序。
【發明內容】
[0041]為了實現以上目的,根據本發明的分布式處理系統是一種以下的分布式處理系統,所述分布式處理系統包括以協作分布式方式執行分布式批處理應用的多個相互連接的計算機,其中:所述計算機中的每個包括模塊加載器、元數據管理單元、文件管理單元和執行容器,所述模塊加載器通過加載構成所述分布式批處理應用的各模塊來執行初始化處理,所述元數據管理單元從預先設置的存儲模塊或者從其他計算機獲取包含各模塊之間的所述初始化處理的命令的元數據,所述文件管理單元讀取所述存儲模塊或其他計算機中的文件/將文件寫入所述存儲模塊或其他計算機中,所述執行容器執行所述分布式批處理應用;以及所述文件管理單元包括以下功能:在所述模塊加載器用所述元數據執行所述初始化處理之后,檢查在所述存儲模塊中是否存在包含所述模塊的執行代碼的執行區域,并且當不存在所述執行區域時,從其他計算機加載所述執行代碼并且將它作為所述執行區域寫入。
[0042]為了實現以上目的,根據本發明的分布式處理設備是以下的一種分布式處理設備,多個所述分布式處理設備相互連接以構成以協作分布式方式執行分布式批處理應用的分布式處理系統,所述分布式處理設備包括:模塊加載器,其通過加載構成所述分布式批處理應用的各模塊來執行初始化處理;元數據管理單元,其從預先設置的存儲模塊或者從其他計算機獲取包含各模塊之間的所述初始化處理的命令的元數據;文件管理單元,其讀取所述存儲模塊或其他計算機中的文件/將文件寫入所述存儲模塊或其他計算機中;以及執行容器,其執行所述分布式批處理應用;其中,所述文件管理單元包括以下功能:在所述模塊加載器用所述元數據執行所述初始化處理之后,檢查在所述存儲模塊中是否存