用于超大規(guī)模分布式處理應用的模塊化架構(gòu)的系統(tǒng)和方法
【專利摘要】本發(fā)明的實施例涉及用于超大規(guī)模分布式處理應用的模塊化架構(gòu)的系統(tǒng)和方法。在一個實施例中,提供了一種分布式處理節(jié)點,其包括多個子節(jié)點。每個子節(jié)點包括連接到內(nèi)存的至少一個處理器核。第一互連裝置連接多個子節(jié)點中的每一個。第二互連裝置將每一個子節(jié)點連接到存儲裝置。進程在第一子節(jié)點上運行。進程向第一子節(jié)點的內(nèi)存詢問所請求的數(shù)據(jù)。如果在第一子節(jié)點的內(nèi)存中未發(fā)現(xiàn)所請求的數(shù)據(jù),則進程經(jīng)由第一互連裝置詢問至少一個其他子節(jié)點的內(nèi)存。如果在其他子節(jié)點的內(nèi)存中發(fā)現(xiàn)所請求的數(shù)據(jù),則進程將其拷貝到第一子節(jié)點的內(nèi)存。如果在第一子節(jié)點的內(nèi)存或至少一個其他子節(jié)點的內(nèi)存中未發(fā)現(xiàn)所請求的數(shù)據(jù),則進程經(jīng)由第二互連裝置詢問存儲裝置。
【專利說明】用于超大規(guī)模分布式處理應用的模塊化架構(gòu)的系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明的實施例涉及分布式處理,并且更具體地涉及在分布式分析應用中提供高 效處理的新數(shù)據(jù)中心架構(gòu)。
【發(fā)明內(nèi)容】
[0002] 根據(jù)本發(fā)明的一個實施例,提供了一種分布式處理節(jié)點。節(jié)點包括多個子節(jié)點。每 個子節(jié)點包括可操作地連接到內(nèi)存的至少一個處理器核。第一互連裝置可操作地連接節(jié)點 內(nèi)的多個子節(jié)點中的每一個。第二互連裝置將多個子節(jié)點中的每一個可操作地連接到存儲 裝置。進程在多個子節(jié)點中的第一子節(jié)點上運行,所述進程可操作地從第一子節(jié)點的內(nèi)存 檢索數(shù)據(jù)。所述進程向第一子節(jié)點的內(nèi)存詢問所請求的數(shù)據(jù)。如果在第一子節(jié)點的內(nèi)存中 未發(fā)現(xiàn)所請求的數(shù)據(jù),則所述進程經(jīng)由第一互連裝置詢問多個子節(jié)點中的至少一個其他子 節(jié)點的內(nèi)存。如果在其他子節(jié)點的內(nèi)存中發(fā)現(xiàn)所請求的數(shù)據(jù),則所述進程將所請求的數(shù)據(jù) 拷貝到第一子節(jié)點的內(nèi)存。如果在第一子節(jié)點的內(nèi)存或多個子節(jié)點中的至少一個子節(jié)點的 內(nèi)存中未發(fā)現(xiàn)所請求的數(shù)據(jù),則所述進程經(jīng)由第二互連裝置詢問存儲裝置。
[0003] 根據(jù)本公開的另一個實施例,提供了一種用于操作分布式處理節(jié)點的方法和計算 機程序產(chǎn)品。在該實施例中,在第一分布式處理節(jié)點接收任務。將任務分配給第一分布式 處理節(jié)點的第一子節(jié)點。子節(jié)點包括可操作地連接到內(nèi)存的至少一個處理器核。確定由任 務請求的數(shù)據(jù)。向第一子節(jié)點的內(nèi)存詢問所請求的數(shù)據(jù)。如果在第一子節(jié)點的內(nèi)存中未發(fā) 現(xiàn)所請求的數(shù)據(jù),則經(jīng)由第一互連裝置詢問第一分布式處理節(jié)點的至少另一個子節(jié)點的內(nèi) 存。如果在其他子節(jié)點的內(nèi)存中發(fā)現(xiàn)所請求的數(shù)據(jù),則將所請求的數(shù)據(jù)從其他子節(jié)點的內(nèi) 存拷貝到第一子節(jié)點的內(nèi)存。如果在第一子節(jié)點的內(nèi)存或第一分布式處理節(jié)點的其他子節(jié) 點的內(nèi)存中未發(fā)現(xiàn)所請求的數(shù)據(jù),則經(jīng)由第二互連裝置詢問存儲裝置。然后在第一子節(jié)點 的至少一個處理器核上處理所述任務。
【專利附圖】
【附圖說明】
[0004] 圖1是根據(jù)本公開的實施例的分布式處理節(jié)點的示意圖。
[0005] 圖2是根據(jù)本公開的實施例的分布式處理集群的示意圖。
[0006] 圖3是根據(jù)本公開的實施例的分布式處理節(jié)點的示意圖。
[0007] 圖4是根據(jù)本公開的實施例的分布式處理節(jié)點的替代性視圖。
[0008] 圖5是根據(jù)本公開的實施例的分布式處理節(jié)點的邏輯視圖。
[0009] 圖6示出操作根據(jù)本公開的實施例的分布式處理節(jié)點的方法。
【具體實施方式】
[0010] 在"大數(shù)據(jù)"領(lǐng)域中要處理的數(shù)據(jù)量正以空前的速率增長,同時分析正變得更計算 密集。為了支持新出現(xiàn)的分布式處理應用,需要超大規(guī)模的內(nèi)存和提高的計算能力。這樣的 應用的復雜性和計算需求導致常規(guī)架構(gòu)中的性能瓶頸。為了解決該需求,單塊式的分布式 處理節(jié)點可以轉(zhuǎn)換成多個子節(jié)點,其中每個節(jié)點包括刀片服務器或其他模塊計算單元。這 些刀片服務器可以根據(jù)工作負荷需求來供應。給定節(jié)點內(nèi)的多個基于刀片的子節(jié)點可以通 過超大規(guī)模網(wǎng)絡被連接以減輕數(shù)據(jù)局部性損失。另外,分層文件系統(tǒng)可以管理分布式數(shù)據(jù), 同時協(xié)同內(nèi)存管理方案可以處理分布式處理節(jié)點內(nèi)的子節(jié)點之間的內(nèi)存。工作負荷趨勢可 以用于基于子節(jié)點的利用率配置和調(diào)諧基于刀片的子節(jié)點以實現(xiàn)高資源效率。
[0011] 現(xiàn)在參考圖1,其示出根據(jù)本公開的實施例的分布式處理節(jié)點。節(jié)點100可以是機 架、刀片機柜或支持多個處理子單元的另一計算平臺。在節(jié)點1〇〇內(nèi),是子節(jié)點101、102、 103、104。在一些實施例中,子節(jié)點101、102、103、104包括刀片機柜內(nèi)的刀片。在一些實施 例中,節(jié)點內(nèi)的子節(jié)點的數(shù)量可以根據(jù)給定應用的處理需求而更低或更高。在一些實施例 中,動態(tài)地添加或從節(jié)點中去除子節(jié)點以容納波動的需求。每個子節(jié)點包括至少一個處理 器核111,和內(nèi)存112。在一些實施例中,處理器核分布在若干離散的處理器上,而在一些實 施例中,給定子節(jié)點中的所有核都在單個多核處理器內(nèi)。具有從一個到超過一百個核的處 理器在本領(lǐng)域是已知的。在一些實施例中,子節(jié)點具有在6和12之間的數(shù)量的核。在一些 實施例中,每個子節(jié)點可以具有從1GB到超過24GB的內(nèi)存。在一些實施例中,每個內(nèi)存的 一部分被用于I/O緩沖。在其他實施例中,使用固態(tài)驅(qū)動器(SSD)來代替內(nèi)存進行I/O緩 沖,或者除了內(nèi)存之外還使用固態(tài)驅(qū)動器(SSD)進行I/O緩沖。
[0012] 每個子節(jié)點通過互連裝置105連接到每個其他子節(jié)點。每個子節(jié)點通過互連裝置 107連接到整合存儲裝置106。整合存儲裝置106可以包含任何數(shù)量的物理存儲裝置161、 162、163、164。存儲裝置161、162、163、164可以是本領(lǐng)域已知的任何物理存儲裝置,包括磁 介質(zhì)和光學介質(zhì)。在一些實施例中,存儲裝置161、162、163、164是硬盤驅(qū)動器(HDD)。在 一些實施例中,整合存儲裝置106使用RAID或另一存儲虛擬化方案。存儲裝置的數(shù)量可以 基于成本和容量需求而變化。向整合存儲裝置106添加主軸(spindle)會提供更高的吞吐 量,并且允許通常來自不同子節(jié)點的突發(fā)工作負荷的整合。節(jié)點100可以連接到附加的分 布式處理節(jié)點108以經(jīng)由互連裝置109形成分布式處理集群。
[0013] 在一些實施例中,分布式處理節(jié)點100是基于映射化簡(MapReduce)的分布式處 理系統(tǒng)(諸如Apache Hadoop)中的節(jié)點。映射化簡系統(tǒng)通過映射步驟跨越集群中的多個處 理節(jié)點分配工作。在化簡步驟中組合來自每個分布式處理節(jié)點的結(jié)果。在Apache Hadoop 中,部分地基于作業(yè)所需要的數(shù)據(jù)的位置,由作業(yè)跟蹤器在節(jié)點之間分配作業(yè)。在一些實 現(xiàn)方案中,把作業(yè)優(yōu)先地指派給具有所需數(shù)據(jù)的節(jié)點,并且在無法這樣做時,把作業(yè)指派給 與所需數(shù)據(jù)處于相同機架中的節(jié)點?;谟成浠喌南到y(tǒng)可以包括分布式文件系統(tǒng),諸如 Hadoop分布式文件系統(tǒng)(HDFS)。HDFS跨越分布式處理集群中的多個節(jié)點分布數(shù)據(jù),通過確 保在若干位置中的若干節(jié)點上存在副本而提供數(shù)據(jù)可靠性。HDFS節(jié)點彼此通信以便使數(shù)據(jù) 在節(jié)點之間重新平衡,移動副本,并且承受高可用度。通過確定所需數(shù)據(jù)在HDFS中的位置, 工作調(diào)度器(諸如Hadoop作業(yè)跟蹤器)可以把工作分配給可以在本地訪問該數(shù)據(jù)的節(jié)點。
[0014] 在圖1的節(jié)點架構(gòu)內(nèi),可以針對各種應用類型調(diào)諧硬件配置。對于1/0密集的應 用,合乎需要的是在子節(jié)點上有較低的計算能力與內(nèi)存的比率并且在子節(jié)點之間有高速網(wǎng) 絡互連裝置。對于計算密集的應用,合乎需要的是有較高的計算能力與內(nèi)存的比率并且在 子節(jié)點之間有標準的網(wǎng)絡互連裝置。對于混合型應用,被不同地配置的子節(jié)點的混合是合 乎需要的。當子節(jié)點配置的混合可用時,工作可以優(yōu)先地調(diào)度給最適合于工作的特性的那 些節(jié)點。另外,與預取高速緩存耦合的大內(nèi)存在混合型應用中是合乎需要的以便吸收I/O 關(guān)發(fā)。
[0015] 每節(jié)點的子節(jié)點數(shù)量也可以針對給定的應用進行調(diào)諧。例如,對于更大的作業(yè),每 節(jié)點有更多子節(jié)點的配置是最優(yōu)化的。對于更小的作業(yè),每節(jié)點有更少的子節(jié)點的配置是 最優(yōu)化的。資源分段可以在每節(jié)點的子節(jié)點數(shù)量升高時發(fā)生。特別地,如果對每節(jié)點添加 更多子節(jié)點,則一些子節(jié)點會保持空閑,如果作業(yè)不需要該可用資源的話。資源分段可以通 過采用節(jié)點級別的多重租用(multi-tenancy)而被最小化。
[0016] 圖2示出分布式處理集群內(nèi)的多個分布式處理節(jié)點的示例性配置。集群包含一個 或多個機架200、203、204。機架200包含一個或多個分布式處理節(jié)點201-208。分布式處 理節(jié)點208可以是諸如上面關(guān)于圖1描述的節(jié)點100之類的節(jié)點,或者是諸如下面關(guān)于圖 3描述的節(jié)點。機架內(nèi)的節(jié)點通過互連裝置210連接。各自具有其自身的駐留節(jié)點的多個 附加機架203、204通過互連裝置202連接。機架200內(nèi)和其他機架203、204內(nèi)的節(jié)點可以 是Hadoop節(jié)點。在一些實施例中,每機架200僅有一個節(jié)點208。在這樣的實施例中,互連 裝置210可以被省略,并且多個機架上的節(jié)點可以通過互連裝置202連接。在一些實施例 中,節(jié)點201-208連接到機架200中的網(wǎng)絡開關(guān),并且多個機架200、203、204形成樹形分層 結(jié)構(gòu)。在一些實施例中,通過在節(jié)點級別在所有磁盤上運行HDFS來管理數(shù)據(jù)。
[0017] 圖3示出缺少上面關(guān)于圖1描述的子節(jié)點結(jié)構(gòu)的示例性替代性節(jié)點。節(jié)點300包 括一個或多個處理核301、302、303、304,內(nèi)存305,和一個或多個物理存儲裝置306、307。當 各個單獨的分布式處理節(jié)點300上的需求增大時,每節(jié)點的內(nèi)存、每節(jié)點的核、和每節(jié)點的 磁盤必須增大以提供附加容量。另外,必須供應各種節(jié)點之間的互連裝置以容納更大的數(shù) 據(jù)吞吐量。特別地,在節(jié)點300是Hadoop節(jié)點或利用Hadoop分布式文件系統(tǒng)(HDFS)的另 一分布式處理節(jié)點的情況下,必須供應網(wǎng)絡來支持1/0密集的洗牌(shuffle)階段。其他 分布式文件系統(tǒng)具有類似的容量需求。機架間和機架內(nèi)網(wǎng)絡必須不同地供應以便在不同的 級別容納不同的等待時間/帶寬需求。在一些實施例中,分布式處理集群中的每個節(jié)點300 具有類似的內(nèi)存量、處理器數(shù)量和本地磁盤。
[0018] 新出現(xiàn)的計算和數(shù)據(jù)密集型應用要求分布式處理節(jié)點上所需的資源快速增長。圖 1中示出的節(jié)點架構(gòu)提供比圖3中示出的節(jié)點架構(gòu)更靈活的擴展。特別地,內(nèi)存使用的增長 會產(chǎn)生分布式處理系統(tǒng)(諸如Hadoop)中的瓶頸。對諸如圖3中描繪的節(jié)點分配過多內(nèi)存 也會導致不合需要的每節(jié)點的成本。圖3的節(jié)點100通過利用節(jié)點到節(jié)點帶寬和內(nèi)部網(wǎng)絡 速度最近的增大來克服這些問題。
[0019] 節(jié)點100利用快速增長的網(wǎng)絡帶寬在單個分布式處理節(jié)點(諸如Hadoop節(jié)點) 內(nèi)產(chǎn)生分布式刀片服務器。子節(jié)點101、102、103、104之間的快速互連裝置105可以用于跨 越若干子節(jié)點產(chǎn)生較大的整合內(nèi)存池,其能夠由節(jié)點100內(nèi)的子節(jié)點101、102、103、104中 的任何一個以幾乎本地內(nèi)存訪問速度訪問。通過把每個子節(jié)點101、102、103、104分配給刀 片或類似計算單元,節(jié)點100以商用硬件為基礎(chǔ)并且避免定制部件。結(jié)果是減小的成本,提 高的可維護性,和提高的靈活性。
[0020] 通過在每個模塊子節(jié)點101內(nèi)提供單獨的內(nèi)存112,可以提供比單塊式多核系統(tǒng) 更好的計算能力與內(nèi)存比?;ミB裝置107可以被過度供應(over-provision)以支持對存儲 裝置106的更快訪問?;ミB裝置105可以同樣被過度供應以支持子節(jié)點101、102、103、104 之間的快速內(nèi)存訪問。特別地,子節(jié)點可以經(jīng)由互連裝置105支持端對端內(nèi)存交互。在一 些實施例中,互連裝置105和107是相同互連裝置的分支,諸如刀片機柜或機架內(nèi)的光纖網(wǎng) 絡。
[0021] 圖1的模塊節(jié)點架構(gòu)能夠避免由諸如圖3中描繪的有限容量的節(jié)點施加的約束。 另外,當在Hadoop集群內(nèi)操作時,節(jié)點100允許分布式處理,同時利用用于作業(yè)調(diào)度的標準 映射化簡實現(xiàn)方案和標準分布式文件系統(tǒng)(諸如HDFS)。
[0022] 圖4提供根據(jù)本公開的實施例的節(jié)點100的替代性視圖。節(jié)點100包括4個子節(jié) 點(刀片或其他計算單元)101、102、103、104。每個子節(jié)點包括八個處理器核111,并且每 個子節(jié)點對于每個核包括4G字節(jié)內(nèi)存112。每個子節(jié)點的內(nèi)存112 -起形成協(xié)同高速緩 存401。每個子節(jié)點通過互連裝置107訪問磁盤161、162、163、164。在一些實施例中,磁盤 161、162、163、164上的數(shù)據(jù)被條帶化(striped)。僅僅舉例提供特定的核、內(nèi)存和磁盤數(shù) 量,并且本領(lǐng)域已知的任何計算單元(或刀片)配置可以集成到所描述的架構(gòu)中。存儲裝 置106附加地包括SSD402。SSD402具有比磁盤161、162、163、164更低的訪問時間和等待 時間,形成用于通過互連裝置107進行數(shù)據(jù)訪問的I/O高速緩存。SSD402I/0高速緩存可以 對內(nèi)存112內(nèi)的I/O高速緩存進行補充以形成多級高速緩存,或者可以替代基于內(nèi)存的高 速緩存而被使用。在多級高速緩存的情況下,通過作為緩沖器處理來自內(nèi)存的溢出而不是 作為存儲裝置,SSD被用于支持高吞吐量存儲。在一些實施例中,SSD402提供預取高速緩 存。在一些實施例中,高速緩存管理器管理SSD402上的高速緩存。高速緩存管理器可以是 在處理器111上操作的內(nèi)核模塊。在一些實施例中,高速緩存管理器應用基于模式的高速 緩存策略。在一些實施例中,高速緩存策略是在磁盤161、162、163、164上順序地保留訪問 的數(shù)據(jù),同時把訪問的數(shù)據(jù)隨機地拷貝到SSD402。節(jié)點100經(jīng)由互連裝置109與集群中的 其他節(jié)點403、404、405通信,所述互連裝置109在一些實施例中是雙lOGbps鏈路。
[0023] 圖5描述根據(jù)本公開的實施例的用于Hadoop節(jié)點的邏輯架構(gòu)?;谀J降拇鎯?子系統(tǒng)501在SSD上隨機地保存訪問的數(shù)據(jù),并且指引對HDD的掃描訪問。內(nèi)存存儲子系 統(tǒng)502在內(nèi)存中保存HDFS洗牌數(shù)據(jù)。拓撲感知Hadoop調(diào)度器503基于數(shù)據(jù)局部性和節(jié)點 之間的網(wǎng)絡拓撲,在Hadoop節(jié)點之間分配工作。在一些實施例中,拓撲感知Hadoop調(diào)度器 503是Hadoop作業(yè)跟蹤器。分層調(diào)度器504基于節(jié)點內(nèi)的數(shù)據(jù)局部性,在節(jié)點的子節(jié)點之 間分配工作。特別地,分層調(diào)度器504考慮數(shù)據(jù)在協(xié)同高速緩存或共享內(nèi)存內(nèi)的位置。
[0024] 在分布式中處理系統(tǒng)(諸如實現(xiàn)映射化簡的系統(tǒng))中,任務工作負荷可能會變得 偏斜。工作負荷的不均等分布可能會導致單獨的節(jié)點內(nèi)存變得不堪重負。通過在分布式 處理節(jié)點內(nèi)的子節(jié)點的內(nèi)存之間提供協(xié)同高速緩存,內(nèi)存被整合并且消耗被更均勻地分配 在可用資源上。為了適應該方法,通過實現(xiàn)適當?shù)木彺娌呗?,將?nèi)存內(nèi)容管理和內(nèi)存架構(gòu)分 離。一種潛在的緩存策略會是全有或全無策略,其中用于所有工作(諸如Hadoop任務)的 數(shù)據(jù)都可在內(nèi)存中獲得,這要以執(zhí)行其他工作(或其他Hadoop任務)的能力為代價。
[0025] 然而,維持過多內(nèi)存會引起復雜的故障、數(shù)據(jù)一致性和魯棒性問題、以及能量問 題,并且可能會需要昂貴的專用部件。作為替代,分層HDFS可以用于以透明的方式管理子 節(jié)點內(nèi)存并且保持網(wǎng)絡、內(nèi)存和磁盤的平衡的利用率。針對存儲1/0限制的內(nèi)存內(nèi)解決方 案諸如彈性分布式數(shù)據(jù)集(RDD)、內(nèi)存云(RamCloud)和memcached也會相當大地增大內(nèi)存 需求,導致許多相同的問題。
[0026] 在常規(guī)系統(tǒng)中對每個節(jié)點添加更多的核會導致I/O的阻塞和距存儲裝置的增大 距離。分布式處理應用可能要求每個核為lGb/s,這會使到達遠距離數(shù)據(jù)的互連裝置飽和。 這會使這樣的配置中的存儲墻(storage wall)加劇。本架構(gòu)允許在節(jié)點中添加核,同時保 持靠近存儲裝置。
[0027] 圖6示出操作根據(jù)本公開的實施例的分布式處理節(jié)點的方法。根據(jù)本公開的一個 實施例,在分布式處理節(jié)點接收任務(501)。把任務分配給分布式處理節(jié)點的子節(jié)點用于 在處理器上進行處理(502)。確定任務所請求的數(shù)據(jù)(503)。在一些實施例中,所請求的 數(shù)據(jù)由子節(jié)點在運行時確定,而在一些實施例中,關(guān)于所請求的數(shù)據(jù)的信息是預先已知的, 并且與任務一起被包括。在一些實施例中,步驟503在步驟502之前執(zhí)行,并且所請求的 數(shù)據(jù)確定任務被分配給的子節(jié)點。子節(jié)點向其內(nèi)存詢問所請求的數(shù)據(jù)(504)。如果發(fā)現(xiàn)所 請求的數(shù)據(jù)(505),則任務被子節(jié)點的處理器處理(514)。如果在子節(jié)點的內(nèi)存中未發(fā)現(xiàn) 數(shù)據(jù)(505),則詢問節(jié)點的其他子節(jié)點的內(nèi)存(506)。如果在節(jié)點的其他子節(jié)點的內(nèi)存中發(fā) 現(xiàn)數(shù)據(jù)(509),則把數(shù)據(jù)拷貝到任務被指派給的子節(jié)點(510),并且子節(jié)點的處理器處理任 務(514)。如果在其他子節(jié)點的內(nèi)存中未發(fā)現(xiàn)數(shù)據(jù)(509),則子節(jié)點詢問處于節(jié)點本地的存 儲裝置(507)。如果發(fā)現(xiàn)數(shù)據(jù),則把數(shù)據(jù)拷貝到任務被分配給的子節(jié)點的內(nèi)存(512),并且 處理器處理任務(514)。如果在本地存儲裝置中未發(fā)現(xiàn)數(shù)據(jù),則從遠程存儲裝置拷貝數(shù)據(jù) (513),并且處理器處理任務(514)。
[0028] 盡管上面討論的節(jié)點架構(gòu)適合于在分布式處理系統(tǒng)(諸如Hadoop)中使用,但是 本公開的節(jié)點架構(gòu)提供了也適合于不同范圍的額外應用的靈活且可擴展的計算/內(nèi)存/存 儲方法。例如,所公開的節(jié)點架構(gòu)可以用于:HPC工作負荷;數(shù)據(jù)后端服務;高性能虛擬化硬 件;高能效的服務器設(shè)計,其中各個單獨的子節(jié)點(刀片或其他計算單元)基于需求被選擇 性地開啟或關(guān)閉;具有混合的應用的通用計算服務器,其中不同地供應的子節(jié)點(刀片或 其他計算單元)能支持最好地適合于其需求的應用,例如通過用加速器、GPU和其他補充硬 件對各個單獨的子節(jié)點進行擴展。
[0029] 所屬領(lǐng)域的技術(shù)人員將理解的是,本發(fā)明的各個方面可以實施為系統(tǒng)、方法或計 算機程序產(chǎn)品。因此,本發(fā)明的各個方面可以采取以下形式,即:完全的硬件實施方式、完全 的軟件實施方式(包括固件、駐留軟件、微代碼等),或軟件和硬件方面結(jié)合的實施方式,這 里可以統(tǒng)稱為"電路"、"模塊"或"系統(tǒng)"。此外,本發(fā)明的各個方面還可以采取用一個或多 個計算機可讀介質(zhì)實施的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)上包含有計算機可讀 程序代碼。
[0030] 可以采用一個或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算 機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是--但不限 于--電、磁、光、電磁、紅外線或半導體的系統(tǒng)、裝置或器件,或者任意以上的適當組合。計 算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、 便攜式計算機軟盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存 儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、 或者上述的任意合適的組合。在本文件的上下文中,計算機可讀存儲介質(zhì)可以是任何包含 或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使 用。
[0031] 計算機可讀信號介質(zhì)可以包括例如在基帶中或者作為載波一部分傳播的數(shù)據(jù)信 號,其中承載了計算機可讀程序代碼。這種傳播的信號可以采用各種形式,包括但不限于電 磁信號、光信號或上述的任意合適的組合。計算機可讀信號介質(zhì)還可以是計算機可讀存儲 介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令 執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0032] 計算機可讀介質(zhì)上包含的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括但不限于無 線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0033] 可以以一種或多種程序設(shè)計語言的任意組合來編寫用于執(zhí)行本發(fā)明各方面的 操作的計算機程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言(諸如Java、 Smalltalk、C++等),還包括常規(guī)的過程式程序設(shè)計語言(諸如"C"程序設(shè)計語言或類似的 程序設(shè)計語言)。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、 作為獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程 計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng) 絡--包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計算機,或者,可以連接到外部計算 機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。
[0034] 下面將參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖 和/或框圖描述本發(fā)明的各方面。應當理解的是,流程圖和/或框圖的每個方框以及流程圖 和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提 供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器, 使得這些計算機程序指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生 實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0035] 也可以把這些計算機程序指令存儲在計算機可讀介質(zhì)中,這些指令可以使得計算 機、其它可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,使得存儲在計算機可讀介質(zhì)中 的指令產(chǎn)生包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令的 制造品°
[0036] 計算機程序指令還可以加載到計算機、其它可編程數(shù)據(jù)處理裝置或其他設(shè)備上, 以使一系列操作步驟在計算機、其它可編程裝置或其他設(shè)備上被執(zhí)行以產(chǎn)生計算機實現(xiàn)的 過程,使得在計算機或其它可編程裝置上執(zhí)行的指令提供用于實現(xiàn)流程圖和/或框圖中的 一個或多個方框中規(guī)定的功能/動作。
[0037] 附圖中的流程圖和框圖使出根據(jù)本公開的各種實施例的系統(tǒng)、方法和計算機程序 產(chǎn)品的可能實現(xiàn)的架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表模 塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī) 定的邏輯功能的可執(zhí)行指令。也應當注意的是,在有些替代性實現(xiàn)中,方框中所標注的功 能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行 地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖 和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功 能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實 現(xiàn)。
[0038] 本公開的各種實施例的描述已經(jīng)出于舉例說明的目的給出,但是并非旨在是無遺 漏的或限于所公開的實施例。在不脫離所描述的實施例的范圍和精神的情況下,許多改型 和變型對于本領(lǐng)域普通技術(shù)人員而言是顯而易見的。本文中使用的術(shù)語被選擇為最佳地解 釋實施例的原理、實際的應用或優(yōu)于市場上發(fā)現(xiàn)的技術(shù)的技術(shù)改進,或者使本領(lǐng)域普通技 術(shù)人員能夠理解本文中公開的實施例。
【權(quán)利要求】
1. 一種系統(tǒng),包括: 包括多個子節(jié)點的分布式處理節(jié)點,每個子節(jié)點包括: 至少一個處理器核,其可操作地連接到內(nèi)存; 第一互連裝置,其可操作地連接到所述多個子節(jié)點中的每一個; 第二互連裝置,其可操作地連接到所述多個子節(jié)點中的每一個并且可操作地連接到存 儲裝置; 在所述多個子節(jié)點中的第一子節(jié)點上運行的進程,所述進程可操作以從所述第一子節(jié) 點的內(nèi)存檢索數(shù)據(jù);其中: 所述進程向所述第一子節(jié)點的內(nèi)存詢問所請求的數(shù)據(jù); 如果在所述第一子節(jié)點的內(nèi)存中未發(fā)現(xiàn)所請求的數(shù)據(jù),則所述進程經(jīng)由所述第一互連 裝置詢問所述多個子節(jié)點中的至少一個其他子節(jié)點的內(nèi)存; 如果在所述其他子節(jié)點的內(nèi)存中發(fā)現(xiàn)所請求的數(shù)據(jù),則所述進程將所請求的數(shù)據(jù)拷貝 到所述第一子節(jié)點的內(nèi)存;以及 如果在所述第一子節(jié)點的內(nèi)存或者所述多個子節(jié)點的至少另一個子節(jié)點的內(nèi)存中未 發(fā)現(xiàn)所請求的數(shù)據(jù),則所述進程經(jīng)由所述第二互連裝置詢問所述存儲裝置。
2. 如權(quán)利要求1所述的系統(tǒng),其中所述分布式處理節(jié)點是形成分布式處理集群的多個 分布式處理節(jié)點中的一個,所述多個分布式處理節(jié)點中的每一個可操作地連接到第三互連 裝直。
3. 如權(quán)利要求1所述的系統(tǒng),其中所述存儲裝置包括硬盤驅(qū)動器和固態(tài)驅(qū)動器,所述 硬盤驅(qū)動器包括順序數(shù)據(jù)并且所述固態(tài)驅(qū)動器包括非順序數(shù)據(jù)。
4. 如權(quán)利要求1所述的系統(tǒng),其中所述存儲裝置包括硬盤驅(qū)動器和固態(tài)驅(qū)動器,并且 所述系統(tǒng)還包括存儲管理器,所述存儲管理器可操作以基于訪問模式在所述硬盤驅(qū)動器和 所述固態(tài)驅(qū)動器之間分配數(shù)據(jù)。
5. 如權(quán)利要求4所述的系統(tǒng),其中所述訪問模式包括順序訪問,并且所述存儲管理器 優(yōu)先地將非順序訪問的數(shù)據(jù)從所述硬盤驅(qū)動器重新放置到所述固態(tài)驅(qū)動器。
6. 如權(quán)利要求1所述的系統(tǒng),其中所述第一互連裝置具有比所述第二互連裝置更高的 帶寬。
7. 如權(quán)利要求2所述的系統(tǒng),其中所述第一互連裝置具有比所述第三互連裝置更高的 帶寬。
8. 如權(quán)利要求1所述的系統(tǒng),其中所述多個子節(jié)點中的每個子節(jié)點的內(nèi)存形成協(xié)同高 速緩存或共享內(nèi)存。
9. 如權(quán)利要求1所述的系統(tǒng),其中經(jīng)由Hadoop分布式文件系統(tǒng)訪問所述存儲裝置。
10. 如權(quán)利要求1所述的系統(tǒng),其中所述分布式處理節(jié)點是Hadoop節(jié)點。
11. 如權(quán)利要求2所述的系統(tǒng),其中所述集群是Hadoop集群。
12. 如權(quán)利要求1所述的系統(tǒng),其中所述第一互連裝置被過度供應。
13. 如權(quán)利要求1所述的系統(tǒng),其中所述多個子節(jié)點的內(nèi)存通過Memcached管理。
14. 如權(quán)利要求1所述的系統(tǒng),其中如果在所述存儲裝置中發(fā)現(xiàn)所請求的數(shù)據(jù),則所述 進程將所請求的數(shù)據(jù)拷貝到所述第一子節(jié)點的內(nèi)存。
15. 如權(quán)利要求1所述的系統(tǒng),其中所述進程還可操作以在所述多個子節(jié)點的內(nèi)存和 所述存儲裝置之間傳播變更后的數(shù)據(jù)。
16. 如權(quán)利要求1所述的系統(tǒng),還包括任務調(diào)度器,所述任務調(diào)度器可操作以將所述進 程分配給所述多個子節(jié)點中在其內(nèi)存中具有最多被請求數(shù)據(jù)的子節(jié)點。
17. -種方法,包括: 在第一分布式處理節(jié)點接收任務; 將所述任務分配給所述第一分布式處理節(jié)點的第一子節(jié)點,所述子節(jié)點包括可操作地 連接到內(nèi)存的至少一個處理器核; 確定由所述任務請求的數(shù)據(jù); 向所述第一子節(jié)點的內(nèi)存詢問所請求的數(shù)據(jù); 如果在所述第一子節(jié)點的內(nèi)存中未發(fā)現(xiàn)所請求的數(shù)據(jù),則經(jīng)由第一互連裝置詢問所述 第一分布式處理節(jié)點的至少另一個子節(jié)點的內(nèi)存; 如果在其他子節(jié)點的內(nèi)存中發(fā)現(xiàn)所請求的數(shù)據(jù),則將所請求的數(shù)據(jù)從所述其他子節(jié)點 的內(nèi)存拷貝到所述第一子節(jié)點的內(nèi)存; 如果在所述第一子節(jié)點的內(nèi)存或者所述第一分布式處理節(jié)點的至少另一個子節(jié)點的 內(nèi)存中未發(fā)現(xiàn)所請求的數(shù)據(jù),則經(jīng)由第二互連裝置詢問存儲裝置;以及 在所述第一子節(jié)點的所述至少一個處理器核上處理所述任務。
18. 如權(quán)利要求17所述的方法,其中所述第一分布式處理節(jié)點是形成分布式處理集群 的多個分布式處理節(jié)點中的一個,所述多個分布式處理節(jié)點中的每一個可操作地連接到第 三互連裝置。
【文檔編號】H04L29/08GK104219279SQ201410243420
【公開日】2014年12月17日 申請日期:2014年6月4日 優(yōu)先權(quán)日:2013年6月4日
【發(fā)明者】A·R·巴特, P·薩卡爾 申請人:國際商業(yè)機器公司