動態可配置布置引擎的制作方法【專利摘要】一種流應用可以將處理單元分配到一個或多個計算節點(或主機)以便實現期望優化目標。每個優化模式可以定義處理單元選擇準則和/或主機選擇準則。在將處理單元分配到主機時,調度器可以個別地布置每個處理單元。因此,調度器可以使用所述處理單元選擇準則來選擇流應用中的哪個處理單元來分配下一個。調度器隨后可以基于一個或多個約束確定所述處理單元可以布置在哪個主機上。如果調度器確定多個主機為用于該所述處理單元的合適的候選者,則其可以使用主機選擇準則來挑選進一步優化該流應用的所述候選主機之一。使用處理單元和主機選擇準則可以獲得的不同優化目標的實例包括優化性能、降低維持和運算成本、增加可解決性、與其他應用共享受限計算機資源等。【專利說明】動態可配置布置引擎【
技術領域:
】[0001]本發明的實施例總體涉及一些流應用。具體而言,本發明涉及基于優化目標來使用選擇準則將處理單元分派給計算節點。【
背景技術:
】[0002]隨著計算機數據庫已經變得極端復雜,置于數據庫系統上的計算要求也已經快步增加。數據庫系統通常被配置為將存儲數據處理與存取、操縱或使用存儲在數據庫中的數據的處理分開。更具體而言,數據庫使用一種模型,在該模型中,數據首先被存儲,隨后被標引(index),最后被查詢。不過,這種模型不能滿足多種實時應用的新能要求。例如,數據庫可接收和存儲輸入數據的速率限制了多少數據能夠被處理或以其他方式被評估。而這又反過來限制了數據庫應用實時處理大量的能力。[0003]因此,需要一種技術來解決上述問題。【
發明內容】[0004]本發明的實施例總體涉及一些流應用。具體而言,本發明涉及基于多個優化目標來使用選擇準則將處理單元分派給計算節點。[0005]根據第一方面,本發明提供了一種系統,包括:計算機處理器;以及包含有程序的存儲器,該程序在計算機處理器上被執行時執行用于建立流應用的操,該系統包括:選擇組件,用于基于至少一個處理單元選擇準則從所述流應用中的多個處理單元中選擇處理單元;確定組件,基于一個或多個約束,從多個計算節點中確定多個候選計算節點,所述處理單元可被分配到所述多個候選計算節點;所述選擇組件還可以操作用于基于至少一個計算節點選擇準則從所述候選計算節點中選擇計算節點,其中所述處理單元選擇準則和計算節點選擇準則中的至少一個通過用于所述流應用的當前優化模式來確定;以及分配組件,用于將所述處理單元分配給所選擇的計算節點。[0006]根據第一方面,本發明提供了一種用于建立流應用的計算機實現方法,包括:通過一個或多個計算機處理器的操作,基于至少一個處理單元選擇準則從所述流應用中的多個處理單元中選擇處理單元;基于一個或多個約束,從多個計算節點中確定多個候選計算節點,所述處理單元可被分配到所述多個候選計算節點;基于至少一個計算節點選擇準則從所述候選計算節點中選擇計算節點,其中所述處理單元選擇準則和計算節點選擇準則中的至少一個通過用于所述流應用的當前優化模式來確定;以及將所述處理單元分配給所選擇的計算節點。[0007]本發明的實施例包括一種計算機實現的方法、系統以及計算機可讀存儲介質,用于建立應用流。該方法、系統以及存儲介質包括基于至少一個處理單元選擇準則從所述流應用中的多個處理單元中選擇處理單元。該方法、系統以及存儲介質還包括基于一個或多個約束,從多個計算節點中確定多個候選計算節點,所述處理單元可被分配到所述多個候選計算節點。該方法、系統以及存儲介質包括基于至少一個計算節點選擇準則從所述候選計算節點中選擇計算節點,其中所述處理單元選擇準則和計算節點選擇準則中的至少一個通過用于所述流應用的當前優化模式來確定。該方法、系統以及存儲介質包括以及將所述處理單元分配給所選擇的計算節點。[0008]根據另一方面,本發明提供了一種系統,包括:計算機處理器;以及包含有程序的存儲器,該程序在計算機處理器上被執行時執行用于建立流應用的操作,該操作包括:基于至少一個處理單元選擇準則從所述流應用中的多個處理單元中選擇處理單元;基于一個或多個約束,從多個計算節點中確定多個候選計算節點,所述處理單元可被分配到所述多個候選計算節點;基于至少一個計算節點選擇準則從所述候選計算節點中選擇計算節點,其中所述處理單元選擇準則和計算節點選擇準則中的至少一個通過用于所述流應用的當前優化模式來確定;以及將所述處理單元分配給所選擇的計算節點。[0009]根據另一個方面,本發明提供了一種用于建立流應用的計算機程序產品,該計算機程序產品包括處理電路可讀取的計算機可讀存儲介質,并且存儲指令,該指令被處理電路執行用于進行本發明的步驟的方法。[0010]根據另一個方面,本發明提供了一種存儲在計算機可讀介質中并可加載到數字計算機的內存的計算機程序,包括軟件代碼部分,該部分在所述程序在計算機上運行時用于執行本發明的步驟。【專利附圖】【附圖說明】[0011]附圖圖釋了再次描述的原理的各種實例,并且附圖是本說明的一部分。這些實例并不都權利要求書的范圍構成限制。[0012]現在僅僅通過舉例方式參照如在下述附圖中所示的優選實施例描述本發明:[0013]圖1A-1B圖釋了根據本發明優選實施例的被配置為執行流應用的計算架構;[0014]圖2是根據本發明優選實施例的圖1A-1B中的主機的更詳細視圖;[0015]圖3是根據本發明優選實施例的圖1中管理系統的更詳細視圖;[0016]圖4A-4B圖釋了根據本發明優選實施例的詳細描述將主機分派到主機池的表;[0017]圖5是圖釋根據本發明優選實施例的建立流應用的技術的流程圖;[0018]圖6圖釋了根據本發明優選實施例的用于施加約束的約束樹;[0019]圖7是圖釋了根據本發明優選實施例的與多個優化模式相關聯的選擇準則的表;[0020]圖8A-8B是圖釋了根據本發明優選實施例的使用選擇準則建立流應用的技術的流程圖。[0021]圖9圖釋了根據本發明優選實施例的用于改變優化模式的技術;[0022]圖10圖釋了根據本發明優選實施例的用于改變優化模式的技術。【具體實施方式】[0023]基于流的計算和基于流數據庫計算正崛起為一種用于數據庫系統的發展技術。可以獲得一些使得用戶能夠創建應用的產品,這些應用在流動(streaming)數據到達數據庫文件之前處理和查詢流動數據。采用這種新興的技術,用戶可以指定處理邏輯施加到“處于飛行中”的邊界內數據記錄,因此可以在非常短的時間內,例如在幾個毫秒(ms)內獲得。構建使用這種類型的處理的應用已經開辟了一種新的程序設計范例,該程序設計范例考慮到了將被開發的范圍廣泛的各種創新應用、系統和處理以及對應用編程者和數據庫開發者的目前的新挑戰。[0024]在流應用中,一些算子(operator)連接到另一個算子,使得數據從一個算子流向下一個,形成邏輯數據流程圖。通過將應用分布在多個計算節點上以及通過創建多個較小的可執行代碼片段一即處理單元(PE)—以及在它們之間平衡的負載,可以獲得可伸縮性(scalability)。在流應用中的一個或多個算子可以被融合(fuse)在一起形成PE。這樣做使得所融合的算子可以共享統一處理空間(即,共享存儲器),這樣在算子之間獲得比采用節點間(inter-nodal)通信協議(例如,使用TCP/IP)可獲得的通訊更快的通訊。而且,成組的處理單元一即作業(job)—可以動態地被插入或從執行流動數據分析的一個或多個應用中去除。[0025]流應用的一個優點在于,它們使得用戶能夠通過該應用粒狀地(granularly)控制數據的處理流程。換句話說,用戶可以為對輸入數據執行各種運算的每個PE指定具體算子,并且可以通過修改所述算子和它們被執行的順序而動態變更所述流應用。[0026]建立流應用需要將每個PE分配給主機(即,計算節點)。但是在具有成百上千或成千上萬處理單元的流應用,首先分配哪些處理單元的選擇可能會確定所述流應用中的所有PE是否被成功分配。因此,流應用可以使用PE選擇準則來從未被分配的PE中選擇哪個PE來分配下一個。例如,流應用可以首先分配具有一些位置約束的PE,所述位置約束要求例如該PE是被分配給主機的唯一PE。如果這些PE首先被分配,則所有PE將被分配給主機的概率可能會增加。[0027]規定(dictate)PE能夠被分配到何處的約束可以與流應用的不同因素(element)有關一例如PE、算子、主機池、作業以及主機。這種分配也確定了流應用的運行時間特性——例如性能、可獲得性等等。例如,約束可以控制所述PE是否能被置于也正在執行其它PE的主機上,或者控制兩個PE是否必須被置于相同的主機上。第一約束可以增加流應用的可獲得性而第二約束可以增加其性能。[0028]不過,多個主機可以滿足該約束。例如,在評估該約束之后,主機A和B可以同時滿足與分配PEl相關聯的約束。在這種情況下,流應用可以基于主機選擇準則而選擇別的合適的主機之一。該準則可以是在其上具有當前正在執行的最小數量處理的主機或者具有最大可獲得的處理功率的主機。[0029]PE選擇準則或主機選擇準則(或兩者)可以與具體優化模式相關聯。優化模式可以定義流應用的所期望的結果并且可以代表可解決性、成本、性能、簇配置等等的不同程度。為了繼續上述實例,盡管主機A和B滿足所有約束,選擇哪一個分配到PEl在分配隨后PE時可能有結果。例如,假設PEl被分配到主機A,而在主機A不執行任何其它PE的情況下流應用隨后確定與PE2相關聯的約束需要其被分配到主機。流應用不會滿足所有的準則并且將PE分配到主機會失敗。不過,如果流應用的優化模式改變為支持(favor)可解決性(即,應用流將每個PE分配給主機的概率),則與那個優化模式相關聯的PE選擇準則可能會在不支持可解決性的PE(即,PEl)之前選擇分配具有位置約束的PE(S卩,PE2)。[0030]此外,流應用可以改變優化模式,如果所有PE都不能被分配給主機一例如約束得不到滿足或者超過閾值時限。在這種情形下,流應用可以切換到不同的優化模式,該不同優化模式可以改變所述PE或主機選擇準則。例如,流應用可以從之考慮性能準則的優化模式改變為包括在性能和可解決性之間平衡的準則的模式。[0031]在下面,會提到本發明的實施例。不過,需要理解的是,本發明并不限于具體描述的實施例。相反,下面特征和元素的任何組合,無論是否涉及到不同實施例都被認為實現和實施本發明。而且,盡管本發明的實施例可以獲得由于其他可能方案和/或現有技術的優點,但是通過所給定的實施例是否獲得具體優點并不限制本發明。因此,下面的方面、特征、實施例以及優點僅僅是說明性的,并且不應認為是對附后權利要求的元素和限制,除非在權利要求中有清楚記載。同樣,提到“本發明”是并不應被認為是此處所披露的發明性主題的廣義,并且不應被認為是對附后權利要求的元素和/或限制,除非在權利要求中有清楚記載。[0032]所屬【
技術領域:
】的技術人員知道,本發明的各個方面可以實現為系統、方法或計算機程序產品。因此,本發明的各個方面可以具體實現為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結合的實施方式,這里可以統稱為“電路”、“模塊”或“系統”。此外,在一些實施例中,本發明的各個方面還可以實現為在一個或多個計算機可讀介質中的計算機程序產品的形式,該計算機可讀介質中包含計算機可讀的程序代碼。[0033]可以采用一個或多個計算機可讀介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是一但不限于一電、磁、光、電磁、紅外線、或半導體的系統、裝置或器件,或者任意以上的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執行系統、裝置或者器件使用或者與其結合使用。[0034]計算機可讀的信號介質可以包括在基帶中或者作為載波一部分傳播的數據信號,其中承載了計算機可讀的程序代碼。這種傳播的數據信號可以采用多種形式,包括一但不限于一電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質還可以是計算機可讀存儲介質以外的任何計算機可讀介質,該計算機可讀介質可以發送、傳播或者傳輸用于由指令執行系統、裝置或者器件使用或者與其結合使用的程序。[0035]計算機可讀介質上包含的程序代碼可以用任何適當的介質傳輸,包括一但不限于一無線、有線、光纜、RF等等,或者上述的任意合適的組合。[0036]可以以一種或多種程序設計語言的任意組合來編寫用于執行本發明操作的計算機程序代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smalltalk、C++等,還包括常規的過程式程序設計語言一諸如“C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執行、部分地在用戶計算機上執行、作為一個獨立的軟件包執行、部分在用戶計算機上部分在遠程計算機上執行、或者完全在遠程計算機或服務器上執行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡一包括局域網(LAN)或廣域網(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網服務提供商來通過因特網連接)。Java以及所有基于Java的商標及標識都是Oracle公司和/或其關聯公司的商標或注冊商標。[0037]下面將參照根據本發明實施例的方法、裝置(系統)和計算機程序產品的流程圖和/或框圖描述本發明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數據處理裝置的處理器,從而生產出一種機器,使得這些計算機程序指令在通過計算機或其它可編程數據處理裝置的處理器執行時,產生了實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作的裝置。[0038]也可以把這些計算機程序指令存儲在計算機可讀介質中,這些指令使得計算機、其它可編程數據處理裝置、或其他設備以特定方式工作,從而,存儲在計算機可讀介質中的指令就產生出包括實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作的指令的制造品(articleofmanufacture)。[0039]計算機程序指令也可以加載到計算機或其他可編程數據處理裝置,以便使得一系列操作步驟能在計算機或其他可編程數據處理裝置上執行的操作步驟能夠產生一種計算機實施例的處理,以便指令在計算機、其他可編程數據處理裝置或其他設備上執行,用于實現流程圖和/或方塊圖的一個或多個方塊中執行的功能/動作。[0040]本發明的實施例可以通過云計算架構提供給終端用戶。與計算通常指的是在網絡上作為一種服務提供可縮放的計算資源。更正式而言,與計算可以定義為一種計算能力,其提供了在計算資源和其底層計算構架(例如,服務器、存儲器、網絡)之間的抽象(abstraction),其用于對共享的可配置計算資源池進行方便、按需的網絡訪問,可配置計算資源是能夠以最小的管理成本或與服務提供者進行最少的交互就能快速部署和釋放的資源。因此,不管被用于提供計算資源的底層物理系統(或那些細絨的位置)如何,云計算使得用戶能夠訪問所述“云”中的虛擬計算資源(例如存儲、數據、應用以及甚至完全虛擬化的計算系統)。[0041]通常,云計算資源基于預付費而提供給用戶,其中僅僅對實際使用的資源(例如用戶所使用的存儲空間量或用戶所具體列舉的虛擬系統的數量)向用戶收費。用戶可以在任何時間在英特網上從任何地方訪問駐留在云中的任何資源。在本發明的上下文中,用戶可以訪問云中可獲得的應用或相關數據。例如,被用于創建流應用的計算節點或主機可以是云服務提供者所保持的虛擬或實際機器。這樣做可以使得用戶能夠從連接到與所述云相連的網絡(例如,英特網)的任何計算系統將數據發送到流應用。[0042]圖1A-1B圖釋了根據本發明一個實施例的被配置來執行流應用的計算架構。如圖所示,計算架構100包括管理系統105以及多個主機130卜4一即,計算節點一其使用一個或多個通訊設備120可通訊地彼此連接.通訊設備120可以是服務器、網絡、或數據庫,并且可以使用具體通訊協議來在主機13(V4之間傳送數據。盡管未示出,主機13(V4以具有內部通訊設別用于在位于同一主機130上的PE之間傳送數據。而且,管理系統105包括算子圖表132和調度器134(即,流管理器)。如下面將詳細描述的,算子圖表132代表從一個或多個源算子開始直到一個或多個宿算子的流應用。從源到宿的流程通常也被稱之為執行路徑。通常處理單元從所述流接收N-元組(tuple)數據屬性以及將N-元組(tuple)數據屬性發射到所述流(除了流終止的宿算子或流開始的源算子)。當然,處理單元所接收的N-元組不必是向下游發送的相同N-元組。此外,所述處理單元可以被配置為以元組之外的其他格式接收或發射數據(例如,所述處理單元可以交換標記為XML文檔的數據)。而且,每個處理單元可以被配置為對所接收的元組執行任何形式的數據處理功能,包括例如對數據庫表進行寫入或執行其他數據庫操作,諸如數據結合、分離、讀取等等,以及執行其他數據分析功能或操作。[0043]調度器134可以配置為監視在主機13(V4,上運行的流應用以及改變算子圖表132的部署。調度器134例如可以將PE從一個主機130移動到另一個以便管理計算架構100中主機130卜4的處理載荷。[0044]圖1B圖釋了包括運行在主機13(V4上的十個處理單元(標記為PEl_Ε10)的示例算子圖表132。處理單元由一個或多個算子構成,其被融合在一起成為獨立運行的處理,具有其自己的處理ID(PID)以及存儲空間。在兩個(或多個)處理單元正獨立運行的情況下,節點間通信可以使用網絡接口(例如,TCP/IP接口)來進行。不過,當算子被融合在一起時,所融合的算子可以使用更快速的節點內通訊協議,諸如共享存儲器,用于在所融合的處理單元內的結合算子之間傳遞元組。[0045]如圖所示,算子圖表132開始與源135(其流進標記為PEl的所述處理單元)并且結束于宿14(V2(其從標記為ΡΕ6和PElO的所述處理單元流來)。主機UO1包括所述處理單元PE1、PE2以及PE3。源135流進所述處理單元PEl,其反過來發射PE2和PE3所接收的元組。例如,PEl可以分拆在元組中接收的數據屬性并將一些數據屬性傳遞到PE2,同時將其他數據屬性傳遞到PE3。向PE2的數據被包含在PE2中的算子處理,并且所獲得的元組隨后被發射到主機1302上的PE4。同樣,PE4所發射的數據元組流向宿PE6140lt)類似地,從PE3流向PE5的數據元組也到達宿PE6140lt)因此,除了作為該實例算子圖表132的宿,PE6可以被配置為執行聯合運算,組合從PE4和PE5所接收的元組。該實例算子圖表132還在主機1303上顯示從PE3流向PE7的數據元組,其本身顯示流向PE8以及循環回到PE7的數據元組。從PE8發射的數據元組流線位于主機1304上的PE9,其反過來發射將被宿PElOHO2處理的元組。[0046]而且,盡管在流應用的上下文中描述了本發明的實施例,這并不是與本公開相關的上下文。相反,這種描述并不是限制性的并且僅僅是為了說明性目的。當然,本領域普通技術人員將認識到,本發明的實施例可以被配置為采用能夠執行此處所描述的功能的任何計算機系統或應用來操作。例如,本發明的實施例可以配置為在具有標準數據庫處理應用的簇環境中操作。[0047]圖2是根據本發明一個實施例的圖1A-1B中的主機130的更詳細視圖。如圖所示,主機130在不受限制的情況下包括:至少一個CPU205、通信適配器215、互聯部件220、內存225以及存儲器230。主機130還可以包括I/O設備接口210,用于將I/O設備212(例如,鍵盤、顯示器和鼠標)連接到主機130。[0048]每個CPU205檢索和執行存儲在存儲器225中的編程指令。類似地,CPU205存儲和檢索駐留在內存225中的應用數據。互聯部件220被用于在每個CPU205、I/O設備結構210、存儲器230、通信適配器215以及內存225之間傳輸編程指令和應用數據。CPU205代表單一CPU、多個CPU、具有多個處理核的單一CPU等。內存225通常包括為代表隨機存取存儲器(例如DRAM或閃存)。存儲器230,諸如硬盤驅動器、固態器件(SSD)、或閃存存儲驅動器,可以存儲非易失性數據。所述通信適配器215(例如網絡適配器或查詢引擎)與使用諸如TCP/IP、RDMA協議、共享文件系統協議等的具體通信協議的一個或多個通信設備120進行通信。[0049]在該實例中,內存225包括多個處理單元235。每個PE235包括所融合算子240的匯集。如上所述,每個算子240可以提供一小程序塊(chunk)的可執行代碼,其被配飾為處理流進處理單元(例如PE235)的數據以及將數據發射到PE235中的其他算子240或流應用中的其他處理單元。一些PE235可以被分配到相同的主機130或被置于其他主機130上,并且經由通信設備120進行通信。在一個實施例中,PE235可以僅僅被分配到一個主機130。[0050]PE235還可以包括約束255,其至少部分管理(govern)調度器134如何確定PE235的“候選主機”一即,滿足將PE分配到具體主機130所必需的約束255的主機130。例如,與PE235或算子240相關聯的約束255可以包括:“隔絕”,其規定相關聯算子240不能與其他PE235共享主機130;“共位(co-location)”,其規定在一組中的多個PE235必需在相同主機130上執行;“異位(ex-location)”,其規定在一組中的多個PE235不能在相同主機130上執行;“明示(explicit)主機”,其規定PE235必需位于具體主機130(例如,主機OO1)上;“非可再定位(non-relocatable)”其規定PE235在被分配到主機130之后不能被再定位;“超越(override)”,其規定主機130必需被分配到哪個PE235并超越任何先前約束;“標引主機池(hostpool)”,其規定將基于所述主機池的標引值執行PE235的主機130,等等。其它約束255可以與主機130而不是PE235或算子240相關,諸如“過載主機”,其規定可以被分配到主機130的PE235的最大數量;或“調度狀態”,其規定主機130是否處于支持擁有新PE235的狀態。不過,約束255并不限于上述所討論的元素,而是可以與流應用的其它元素相關聯,這些元素可以在將PE235分配給主機130時由調度器134來考慮。[0051]而且,以上所列出的示例性約束255并不是所有可能約束255的一種窮盡列表。相反,本領域普通技術人員將認識到,此處所披露的實施方式可以與指定哪個主機130將被分配到具體PE235或算子240的多個不同技術一起被使用。圖3是根據本發明的一個實施例的圖1的管理系統105的更詳細視圖。如圖所示,管理系統105在不受限制的情況下包括:至少一個CPU305、通信適配器315、互聯部件320、內存325以及存儲器330。客戶系統130還可以包括1/0設備接口310,用于將1/0設備312(例如,鍵盤、顯示器和鼠標)連接到管理系統105。[0052]與圖2中的CPU205—樣,CPU305被配置為檢索和執行存儲在存儲器325中的編程指令。類似地,CPU305被配置為存儲和檢索駐留在內存325中的應用數據。互聯部件320被配置為用于在CPU305、1/0設備結構310、存儲器330、通信適配器315以及內存35之間移動諸如編程指令和應用數據的數據。與CPU205—樣,所包括的CPU305代表單一CPU、多個CPU、具有多個處理核的單一CPU等。通常所包括的內存325代表隨機存取存儲器。所述通信適配器315被配置為將數據經由通信設備120傳輸到使用任意數量通信協議的主機130。這可以是與PE235所用來傳輸數據的通信協議相同或不同。盡管所示的是單一單元,但是存儲器330可以是固定和/或可去除存儲設備的組合,諸如固定盤驅動器、可去除存儲開、光學存儲器、SSD或閃存設備、連接網絡的存儲器(NAS)、或到存儲區域網絡(SAN)設備的連接部件。所述存儲器包括主算子圖表335。該主算子圖表335,與圖1B中的算子圖表一樣,限定所述處理單元的排列以及處理單元235用來與下游處理單元235進行通信的執行路徑。[0053]內存325可以包括調度器134,其管理一個或多個主機池327優化模式350。主機池327可以與具體PE235、算子240、或更通常的作業相關聯。例如,應用開發者可以為每個作業委派主機池327,由此將該作業中的每個PE235關聯到主機池327。或者,開發者或調度器134可以個別地將每個PE235或算子240委派給主機池327。在一個實施例中,PE235可以與一個或多個主機池327相關聯,但是PE235中的每個算子240可以僅被委派給一個主機池327。主機池327也可以具有預定尺寸,其規定了多少主機130可以被“釘到(pinned)”或被委派到該主機池。這防止調度器134將太多主機130釘到主機池327以至于損害可能正共享著同一計算機架構100的其他作業。而且,在一個實施例中,主機池327可以被標引更像陣列。例如,主機130丨和主機1302被釘到Hostpool_A,Hostpool_A[0]可以引用主機130!而H0stp00l_A[l]引用1302。基于所述主機130卜2以何順序被釘到主機池327或者通過開發者或編譯者指定具體PE的主機應該位于一個具體標引值,主機130"可以被釘到具體標引值一即,“標引主機池”約束225。[0054]其他約束255可以與主機池327相關聯,諸如“最大尺寸”,其限制了可以被分派到主機池327的主機130的數量;“被標簽需求”,其在圖4A-4B中討論;“排除主機池”,其規定主機池327中的主機130不可以被在其他作業等中的其他PE235所使用。[0055]優化模式350可以包括PE選擇準則352和/或主機選擇準則354。而且,調度器134可以具有多個優化模式350。通常,優化模式350使用PE和主機選擇準則352、354來根據理想目標優化流應用,諸如性能、可解決性、運算成本、維護成本、與其他應用共享主機或其這些(或其他)目標的組合。例如,流應用用戶或開發者可能想要優化所述流,以便PE235被分配到主機130,從而在流應用的性能和與其他應用共享主機130之間進行平衡一SP,留下一些計算資源以便其它應用可以使用它們。采用這種具體優化模式350,主機選擇準則可以包括選擇具有最有可能獲得的處理功率的主機130(即,聚焦于性能)以及選擇具有當前正在執行的最大數量處理的主機130(即,留下其他計算節點可用于其他應用)。[0056]如此處所使用的,“準則”不同于約束255。如果主機130不滿足約束255,則PE不能被分配給該主機。不過,調度器134可以使用選擇準則352、354來在滿足約束255的多個主機之間進行選擇。例如,調度器134可以使用這樣的準則,諸如,如果存在滿足所述約束255的多個主機130—即,存在多個候選主機,選擇具有最有可能獲得的處理功率的主機130以便釘到主機池327。[0057]可以通過改變、添加、重新排序或消除選擇準則352、254來實現不同優化模式。例如,聚焦于性能的優化模式350可以具有PE選擇準則352,其選擇具有最大被估計資源需求的PE。不過,不同優化模式350可以包括其他PE選擇準則352,諸如,選擇具有最嚴格(stringent)位置約束255(例如,共位、異位等等)的PE。該優化模式350因此將會更多聚焦于可解決性一g卩,調度器134將能夠將每個PE235分配給主機130的可能性。因此,通過優化模式350實施的聚焦或優先選擇通過與模式350相關聯的準則352、354的特性來定義。不同準則352、354以及該準則可以被組合來形成不同優化模式350的途徑將在下面參照圖8進行闡述。[0058]圖4A-4B圖釋了根據本發明實施例的詳細說明將主機分派給主機池的表。具體而言,圖4A圖釋了一些表,其標識用于主機池327的候選主機。表405列出了流應用可獲得的主機130(主機A-F)。這些主機130中的每一個被賦予一個特性標簽。該標簽代表了主機130的特性,諸如,主機130是否具有較高存儲器、多個處理核、是否兼容于高速通信協議、近來是否被更新、處理器的具體類型、具體操作系統等等。而且,該標簽可以通過使用簡單代碼字或編號對一個或多個特性進行抽象表達。例如,紅色可以表示高存儲器主機130,而律師為進來被更新過并且具有具體類型處理器的主機130。而且,如果主機130具有一個以上被標簽的特性,其可以具有多個標簽。例如,主機C和D都具有兩個標簽。此外,如果主機130不具有任何被標簽特性,其可以不被賦予任何標簽或不被賦予默認標簽。[0059]表410列舉了三個主機池327(主機池1-3),其具有預定尺寸和標簽。該尺寸表示了可以被釘到主機池327的主機130的最大數量。在一個實施例中,標簽可以用于標識主機130有資格被包括到主機池327中。例如,開發者可以規定PE235必須被告存儲器主機130執行一即,PE235必須被分配到具有某一特性的主機130。因此,開發者或調度器134可以將PE235與具有與高存儲器特性對應的標簽的主機池327關聯起來。當確定用于PE235的候選主機時,調度器134可以將在表410中的主機池327的標簽與表405中的主機130的標簽相匹配。[0060]表415列出了通過匹配標簽約束而與每個主機池327匹配的可能主機130。主機A、B或C可以被釘到主機池1,主機C、E或F可以釘到主機2,并且主機D可以釘到主機3。[0061]圖4B描述了一些表,其圖釋了在將具有約束的PE賦予主機時產生的一些問題。表420將合格的主機130釘到主機池327。在這種情況下,主機130基于與主機池327相關聯的至少兩個約束255被釘住,這兩個約束為:其是否具有匹配調遣以及主機池327的尺寸是否滿足。[0062]因為有可以滿足約束255的多個主機130,可以使用準則在連個主機之間進行選擇。為了簡單起見,在表420中用來在多個主機130之間進行選擇的準則時主機標記(label)的字母順序。采用這種方式,主機A和B被釘到主機池1,主機C、D以及E被釘到主機2,而主機D被釘到主機池3。注意,主機130可以被釘到多個主機池327,要其可以與主機池的標簽匹配。[0063]表425列出了可以與PE235相關聯的可能的約束255。如圖所示,每個PE235被單個地分派到也與至少一個約束255相關聯的具體主機池327。不過,在一個實施例中,PE235可以不具有任何約束255或者可以具有多個約束255。因為PEl和PE2與同一共位群相關聯,他們必須被分配到相同主機130。PE2-5與同一異位群相關聯并因此不能共享相同主機130。也就是說,PE2-5必須被分配到彼此不同主機130,但是可以被分配以便與不在異位組I中的PE235共享主機。[0064]將表425的約束255應用到主機池以及表420中被釘住的主機標識其是一個無效分派。具體而言,PEl和2必須位于相同的主機130上,但是被分派到不具有任何共同被釘住的主機130的兩個不同的主機池327。為了解決(fix)該問題,主機池中的主機B可以被主機C所替代,因為主機C具有對主機池I和2都合格的必要標簽。采用這種方式,PEl和PE2可以被分配給同一主機130—即主機C。[0065]不過,這并不能解決(solve)所有約束255。PE2-5必須分配到單獨主機130。具體而言,PE2、4以及5在主機2中并且每個必須使用單獨主機130;不過,因為主機D在主機池2,因此PE2、4或5之一必須分配到也被分配釘到PE3的主機D。為了解決該問題,主機池2中的主機D可以被主機F替換。表430列出了一種方案,其同時滿足兩個約束255—即,主機池327所需要的標簽特性以及與PE235相關聯的異味或共位群。[0066]圖5是根據本發明實施例的流程圖,圖釋了將一個或多個主機分派到主機池。圖5所述的技術500使用優化模式350和選擇準則352、354來定制和幫助圖4A-4B中所示的PE235、主機130以及主機池327的分配。具體而言,在一個實施例中,在塊505和525中,調度器134可以分別使用PE和主機選擇準則352、354來影響分配處理。[0067]在塊505處,調度器134確定用于PE235的候選主機集合。在一個實施例中,調度器134重復地(iteratively)在流應用中分配PE235—即,一次一個。不過PE235可以不必被連續分配或者以任何具體順序分配。因此,調度器134可以使用具有其相關聯的PE選擇準則352的優化模式350來選擇哪個未被分配的PE235進行下一次分配。通常,調度器134或用戶選擇與所需目標或關注點對應的優化模式350—所需目標或關注點例如,性能、成本、可解決性等等。例如關注于可解決性的優化模式350具有PE選擇準則352,該準則增加所有PE都將被分配的概率一即,所有約束255都得到滿足。換句話說,選擇準則352、354允許用戶添加比包含在流應用本身中的約束255更多的用于分配PE235的要求。盡管流應用在執行前可以必須滿足所有約束255,但是在多個這些流元素滿足約束255時選擇準則352、354確定哪些PE235或主機130來選擇。例如,為性能被優化的相同流應用可以滿足所有相同約束255,與為成本被優化的應用的另一個實例一樣一S卩,約束255對兩者是共同的而選擇準則352、354不是共同的。[0068]在塊510,調度器134確定是否至少一個主機130滿足流應用的所有約束255。即,是否存在用于所選擇PE235的至少一個候選主機。[0069]盡管執行本發明并不是必須的,但是,在一個實施例中,調度器134可以使用約束樹來標識滿足與構成流應用的流應用元素相關聯的約束255的主機。約束255可以與不同流應用元素中的一個或組合相關聯。下面將參照圖6闡述約束樹的實例。[0070]在塊515中,調度器134確定是否存在至少一個候選主機。在一個實施例中,調度器134還可以區分滿足所有約束255的主機130和不滿足每個約束255的主機130—SP,如果所選擇PE235被分配到主機,至少一個約束255被違反(violated)。該處理在同一發明人的共同待審申請中進行了描述,該申請當前申請標題為“具有用戶建立的候選集合解決器(CANDIDATESETSOLVERWITHUSERADVICE”)”,美國申請號為13/308881,其描述了追蹤不滿足每個約束255的主機130,喲牛股克服缺陷或用于幫助用戶創建定制流應用。這披露了一種計算機實現的方法,用于將從多個處理單元中選擇的處理單元分配到計算節點,包括:比較計算節點和與約束樹的第一級別相關聯的第一約束,第一約束確定所述計算節點是否能夠被分配到所述處理單元;如果所述計算節點不滿足第一約束,則確定所述計算節點是否滿足所述約束樹的第二約束;如果所述計算節點不滿足第二約束,則傳輸用于顯示改變條件使得所述計算節點滿足第一約束以及(ii)指令第一約束被忽略中的至少一個的用戶行為;以及在用戶行為被執行之后,通過一個或多個計算機處理器的運算而將所述處理單元分配到所述計算節點。[0071]如果在施加所有約束255之后所述調度器134不能夠標識至少一個候選主機,則在塊545處調度器134可以報告故障。故障可以包括通知所述流應用的用戶調度器134不能將所述流應用的每個PE235分配到主機130并且還滿足當前約束255。所述流應用可以立即通知用戶PE235何時不能被分配的故障,或者,調度器134可以在指示該PE分派處理失敗之前繼續分配這些PE235的其余部分。在一個實施例中,所述調度器134可以使用I/O設備接口310來發送故障消息到顯示設備。[0072]如果所述調度器134能夠標識至少一個候選主機,則所述技術500前進到塊520以便確定是否存在多個候選主機。如早前所闡述的,所述調度器134可以使用與所選擇的優化模式350相關聯的主機選擇準則354來在塊525處從所述候選主機集合中選擇主機130。如果當前優化模式350關注與性能目標,則主機選擇準則354可以包括選擇具有最可獲得處理功率剩余(remaining)的主機130。如果所述優化模式350聚焦于成本,則主機選擇準則354可以選擇每個計算周期使用最少能源量的主機。與在塊505中所闡述的PE選擇準則352—樣,所述主機選擇準則354使得用戶或調度器134能夠除了優化約束255之外進一步優化流應用。[0073]不過,如果僅有一個候選主機,則所述調度器134可以在塊530處自動將所選擇的PE235分配到該候選主機。或者,調度器134可以將所選擇PE235分配到使用主機選擇準則354從候選主機集合中所選擇的主機130。[0074]在塊535處,所述調度器134將候選主機釘到與被分配到所述候選主機的PE235相關聯的主機池327。在一個實施例中,在將所述候選主機釘到與所述PE235相關聯的主機池327之前,所述調度器134可以首先確定所述候選主機是否已經被釘到所述主機池327。如果沒有,則所述調度器134可以將所述候選主機釘到(或賦予)所述主機池327。該處理的部件(Part)可以要求將標引值賦予所述主機池327中的所述候選主機,盡管這不是必須的。賦予標引值以及將主機130與主機池327相關聯在同一發明人的一件共同待審申請中有更詳細闡述,該申請標題俄日“靈敏的主機池分配器(AGILEHOSTPOOLALLOCATOR)”,美國申請號為13/308841。該申請披露了一種計算機實現的方法,用于將從多個處理單元中選擇的處理單元分配到計算節點,包括:通過一個或多個計算機處理器的操作確定能夠被分派給與所述處理單元相關聯的主機池的合格的計算節點,其中所述主機池限定了一個或多個計算節點的集合;基于與所述處理單元相關聯的約束,從所述合格的計算節點中選擇合適的計算節點;將所述處理單元分配給合適計算節點;以及將所述合適計算節點分派給所述主機池,其中所述多個處理單元建立所述多個處理單元的算子圖表,所述算子圖表定義了至少一個執行路徑并且所述算子圖表的所述處理單元的至少一個被配置為從至少一個上游處理單元接收數據以及將數據發送到至少一個下游處理單元。[0075]在釘住合適的主機或確定所述合適的主機已經包含在主機池327中之后,在塊525處,技術500可以被重復直到流應用中的PE235中的每一個被分配或技術500檢測到故障為止。[0076]圖6圖釋了根據本發明一個實施例的用于施加約束的一種約束樹。需要注意的是,約束樹600僅僅是一種確定主機130是否滿足所有約束255的技術。該.約束樹600將流應用中的不同結構劃分成多個級別,以便形成層級(hierarchical)關系。頂級一級別A—代表PE之間的關系。級別B包括可以被分派到單個PE235的約束。如前面所提到的,PE235可以有由所述樹600的級別C所代表的一個或多個受關注的算子240。[0077]在一個實施例中,與PE235相關聯的每個算子240只被分派到一個主機池327,而PE235可以與一個或多個主機池327相關聯。級別D顯示了PEN相關聯的算子240每個只與一個主機池327相關聯。不過,算子240可以與同一主機池327相關聯。最后,每個主機池327可以包括一個或多個主機130—S卩,級別E。為了清楚起見,不同級別的層級關系中的很多,諸如與PEl和PE2相關聯的算子,從圖中省略。[0078]在一個實施例中,調度器134可以使用約束樹600來確定候選主機集合一即,滿足級別A-E約束的主機130。約束樹600是可以用來將所選擇PE235分配到主機130的不同類型約束的一種圖形化表示。也就是說,針對每個PE235,每個約束樹600可以看起來不同。每個級別代表可以由調度器134來校驗(check)的不同類型約束。對于當前被選擇的PE235,調度器134可以施加級別E約束一S卩,與主機130相關聯的約束255。級別E約束可以包括前面論及的過載約束或調度(scheduling)約束。例如,調度器134可以確定在級別E中的每個主機130是否過載或者主機130是否正被與包含當前被選擇PE235的作業不同的作業過度使用。在確定了哪個主機130滿足級別E約束之后,調度器134可以返回到級別D以便應用級別D約束一即,與主機池327相關聯的約束一諸如從級別E選擇的主機130是否具有與級別D主機池327相同的標簽或者主機池327的尺寸要求是否得到滿足。在施加級別D約束之后,調度器134使得滿足級別D和E約束的主機130返回到級別C。[0079]對于在所選PE235中的每個算子240,調度器134可以應用與算子240相關聯的級別C約束,諸如算子240是否必須運行在具體主機130或者算子240之一是否應該是運行在主機130上的唯一算子240。調度器134相對于從級別D返回的候選主機校驗用于每個算子240的級別C約束。對于至少一個算子240滿足所有約束255的主機130被返回到級別B,在該級別下施加級別B約束。例如,調度器134可以執行交集(Intersect)函數以便確定是否有滿足級別C的至少一個算子240的素有約束的任何主機130也滿足在所選擇PE235中的所有算子240的所有約束255。此外或者可選地,級別B約束可以包括確定PE235是否是不可再分配的或者是否存在超越任何級別C-E約束的約束255。[0080]在確定哪個主機或主機130滿足級別B-E的約束之后,調度器134確定這些主機130是否也滿足級別A的約束,諸如異位或共位。也就是說,如果PEl(例如當前被選擇PE)以及PE2必須共位,那么在級別A處,調度器134可以執行交集函數以便確定這兩個PE235是否具有至少一個共同滿足用于各個PE235的所有級別B-D約束的。如果有,則該主機或主機130成為用于PEl的候選主機一S卩,圖5中的塊520。采用這種方式,調度器134可以使用約束樹600來確保所有約束255都得到滿足,由此挑選候選主機集合以便僅僅包括滿足級別A-E約束的主機130。調度器134隨后可以使用主機選擇準則354來確定哪個候選主機來放置所選擇PE235。[0081]圖7是根據本發明的一個實施例的表700,圖釋了與多個優化模式相關聯的選擇準則。具體而言,圖7圖釋了可以在圖5中的塊505和525中應用的PE和主機選擇準則352,354的實例。例如,包含在表700中的信息可以以存儲器325中的數據結構存儲。[0082]第一列包括可以被調度器134或流應用的用戶選擇的不同優化模式350。如圖所述,第一列中的每行描述了優化模式350,其優化PE235的分配以便實現不同目標或目標的組合。用于第一行的所述優化模式350僅僅基于性能進行優化,第二行基于性能和可解決性的混合進行優化,而第三行僅僅基于可解決性進行優化。在一個實施例中,在第一列中的行可以表示兩個優化目標之間的滑動標尺(slidingscale)。如圖所示,表700包括在僅僅考慮性能和僅僅考慮可解決性之間的滑動標尺。在第二行中的優化模式350代表這些目標的組合;不過,表700可以包括多個兩個目標的組合以便增加粒度(granularity)。[0083]盡管表700包括在兩個性能目標之間的滑動標尺,優化模式350可以包括在三個或更多目標之間的滑動標尺。可選地,表700可以包括沒有在目標之間的滑動標尺的目標列表一例如,用于優化性能的優化模式350和用于優化成本的優化模式350。而且,表700可以包括不同程度的優化模式250或相同優化目標的級別。例如相對于用于優化性能的第二優化模式350,用于優化性能的一個優化模式350可以包括更積極地優化性能的PE選擇準則352。[0084]當調度器134確定當前優化模式350時,其重復(iterate)擇準則352、354,以便從未被分配的PE235中選擇單一PE235(即,圖5的塊505)或者從候選主機集合中選擇主機130(SP,圖5的塊525)。[0085]圖8A圖釋了一種使用PE選擇準則選擇未被分配PE的技術800。具體而言,圖8A是圖5的塊505的一個實施例。在塊805處,調度器134確定流應用中的還沒有被分配的PE235。在塊510處,調度器134比較所述未被分配的PE235與第一PE選擇準則352。例如,假設調度器134正在使用表700的第二行的優化模式350,調度器134將標識最滿足第一準則352的未被分配PE235—即,具有最大被估計資源要求的PE235。在塊815處,調度器134確定,當與其他未被分配PE235對比時,是否至少兩個PE235結合(tie)—S卩,多于一個PE235,共同具有最大估計資源需求。如果沒有結合,在塊820處,調度器134選擇最滿足用于分配的準則352的PE235。[0086]不過,如果有結合(tie),那么,在塊825處,調度器比較結合到第二準則的PE235—S卩,調度器134選擇具有最多放置錯誤的PE235。該處理一直持續知道不再有結合(tie)—即“最好”PE235被標識一或者沒有更多PE選擇準則352來評估。在后一種情況下,調度器134可以隨機選擇PE235來分配或選擇在算子圖表132中連接到已經被分配的PE235的PE235。本發明并不限于在所有選擇準則已經被評估時斷開結合的任何具體技術。[0087]圖8B圖釋了一種使用主機選擇準則354從候選主機集合選擇主機130的技術801。具體而言,圖8B是圖5的塊525的一個實施例。在塊850處,調度器134標識候選主機集合一即,滿足流應用中用于分配所選擇的PE235的約束255的多個主機130。在塊855處,候選主機集合中的每個主機130與第一主機選擇準則354比較。假設調度器134正在使用表700的第二行的優化模式350,具有最可獲得處理功率剩余(remaining)的主機或主機130被標識。如果在與候選主機集合中的所有其他主機130比較時,候選主機集合中的一個主機130具有最可獲得處理功率剩余,則在塊865處,調度器134可以將所選擇PE235分配給該主機130。[0088]不過,如果調度器134在塊860處確定一個以上的主機130共同具有最可獲得處理功率,則在塊870處,調度器134迭代(iterate)到下一個主機選擇準則354。在該實例中,第二準則354指令該調度器134執行隨機選擇。在一個實施例中,該隨機選擇準則720指令該調度器134或者選擇在前一步驟中結合的主機130之一,或者前進到下一個主機選擇準則354。如果隨機選擇準則720選擇主機130,那么該主機將會被用于放置所選擇PE。該處理可以一直繼續直到選擇單一主機130或者該選擇準則354被耗盡為止。[0089]應該注意的是,隨機選擇準則720也可以被用作PE選擇準則352。[0090]返回到圖7的表700,優化模式350的關注點或目標,以及該目標的不同級別或程度,可以根據(i)類型、(ii)排序以及(iii)與該優化模式350相關聯的選擇準則352、354的數量來確定。也就是說,在第一行中的優化模式350由于性能,因為其和對性能進行優化的PE和主機選擇準則352、354相關聯。通過改變該準則354、352,優化模式350的目標也可以改變。因此,第二行的優化模式350是性能和可解決性的組合,因為其包括基于性能和可解決性選擇PE235的PE選擇準則352的組合。[0091]選擇準則352、354的類型包括按照性能、成本、可解決性等區別PE235和主機130的準則。因此,流應用的用戶或開發者可以從不同類型中選擇不同準則以便定制滿足她所期望目標的優化模式350。[0092]對選擇準則352、354的排序也可以改變優化模式350的目標。例如,如果表700中的第一行的主機選擇準則354被應用到具有25%可獲得處理功率和四個處理器的主機A以及具有15%可獲得處理功率和三個處理器的主機B,則選擇主機A。不過,如果用戶切換準則,則選擇主機B。[0093]選擇準則352、354的總數量也可以影響優化模式350的目標,即使該準則352、354是相同類型。例如,如果用戶想更主動定制該流應用以便考慮性能,則用戶可以創建具有多個選擇準則352、354的優化模式350,這些準則包括選擇具有最可獲得處理功率的主機以及關注具體性能問題。這可以比選擇具有最可獲得處理功率的主機更簡單定制流應用。[0094]圖9圖釋了根據本發明一個實施例的改變優化模式的技術900。如果PE235不能被分配到各個主機130,則調度器134可以改變優化模式350。例如,在塊905處,調度器134可以檢測故障,例如在圖5的塊545中討論的故障。作為響應,調度器134可以在塊910處改變到不同優化模式350。在圖7的表700中,優化模式350從基于性能進行優化被安排到基于解決性進行優化。調度器134可以使用僅僅關注性能的優化模式350開始,但是在檢測到故障之后,可以改變為包括性能和可解決性選擇準則352、354的組合的優化模式350。在塊915處,調度器134可以在流應用中重新啟動PE的分配。[0095]在一個實施例中,如果調度器134依然不能使用該優化模式350分配所有PE235,其可以再次改變為具有被選擇用來改善流應用的可解決性的選擇準則352、354的優化模式350—S卩,調度器134通過優化模式350對滑動標尺迭代地前進。有利的是,使用滑動標尺容許調度器134確定分配所有PE也在兩個目標之間進行最好平衡的優化模式一例如,使得成本最小化對(versus)與其他應用共享計算機資源。而且滑動標尺的顆粒度越大一即,據期望的目標組合準則的優化模式350的數量越大一則調度器134在所期望的目標之間進行平衡的能力就越好。[0096]或者,調度器134可以從用戶處接收一組偏好,諸如在基于性能進行優化的同時要求調度器134首先試圖分配PE235,但是如果不行,則試著基于成本進行優化,如果還不行,則基于可解決性進行優化。因此,調度器134可以在不使用兩個目標之間的滑動標尺而是使用與每種目標相關的偏好來改變優化模式350本領域。普通技術人員認識到用于確定不同優化模式的多種不同技術。[0097]在一個實施例中,調度器134可以不改變為不同預定的優化模式350,而是替代地,向當前優化模式350添加一個或多個選擇準則352、354或從當前優化模式350中去除一個或多個選擇準則352、354,或者對當前選擇準則352、354重新排序。該技術改變了優化模式350的所期望的目標,但是可以使得調度器134能夠分配所有PE。在檢測到故障時,不是改變模式350,而是調度器134可添加改變當前優化模式350的PE選擇準則352—例如,首先分配具有最有害副作用PE235。[0098]在另一個實施例中,調度器134可以在分配處理失敗之前基于有多少個總的PE235被布置來確定將附加選擇準則352、354布置在何處。即,因為在一個實施例中,調度器134以預定順序評估選擇準則352、354,該準則被布置在何處可能會影響其改變流應用的可解決性的能力。例如,如果80%的PE235被布置,則調度器134可以添加該準則將優化模式350變更為選擇準則352、354中的較低優先級一例如,在PE或主機選擇準則352、354中的第三或第四準則。不過,如果僅有25%的PE235被布置,則調度器134可以添加額外準則作為PE或主機選擇準則352、354中的第一或第二準則。[0099]類似地,在一個實施例中,調度器134可以向用于當前優化模式350的準則中添加一個或多個隨機選擇準則720。例如,如果調度器134在失敗之前在流應用中布置了98%的PE,則添加隨機選擇準則720可能足以改變PE分配以便在重新啟動該處理之后,所有PE235都被成功布置。有利的是,添加隨機選擇準則720到PE或主機選擇準則352、354中可以導致一種可執行流應用但是對與如前所討論的更實質的準則相關的優化模式350的期望的目標僅有最小影響。[0100]圖10圖釋了一種根據本發明一個實施例的用于改變優化模式的技術1000。調度器134可以基于分配PE235所花費的時間改變優化模式350。在塊1005處,調度器134可以包括定時器,其在調度器134首先開始分配PE235時跟蹤已經流逝的時間量。如果在塊1010處,調度器134確定所流逝的時間已經超過了預定閾值一例如超過了三分鐘一則在塊1015處調度器134可以停止分配并且改變為不同優化模式350。優化模式350可以根據按照圖9所討論的任何實施例而被改變或變更。在塊1020處,調度器134可以使用不同優化模式350重新啟動PE的分配。[0101]在一個實施例中,調度器134可以基于流應用的復雜性調節該閾值時間按,例如,基于PE的數量、約束255的數量、可獲得主機130的數量、PE/主機比率等等。例如,調度器134可以包括查詢表或加權算法,其基于其各自的值來設置適當的閾值時間。[0102]在一個實施例中,調度器134可以在開始分配PE235之前對流應用執行預分析,以便確定優化模式。具體而言,調度器134可以考慮與流應用相關的約束255的數量和類型以及主機130的當前簇配置。約束255的類型通過與流應用元素相關聯的約束來定義,這些元素諸如PE235、算子240、主機130、主機池327或作業。例如具有高百分比的作業約束255的流應用(即,異位或共位)可能比具有相同數量的總約束255但是具有低百分比的作業約束255的流應用更難以分配。調度器134能夠識別流應用的這種特性并且選擇關注與可解決性的優化模式。也就是說,替代開始于采用聚焦于性能的優化模式350,調度器134可以選擇將性能準則與可解決性準則混合起來的優化模式350—S卩,從模式350的滑動標尺中選擇優化模式350。可替換地,如果難以得到滿足的約束255很少或者某種類型的約束的百分比很低,調度器134可以選擇以聚焦于性能的優化模式350開始或者甚至將更多選擇準則352、354添加到優化模式350以便更積極聚焦于期望的目標。[0103]在類似實施例中,調度器134可以基于就執行流應用的預分析而在上述討論的相同準則構建一種定制的優化模式350。例如,該調度器可以考慮與流應用相關聯的約束255的數量和類型以及主機130的當前簇的配置。與選擇預先定義優化模式350相反,調度器134可以基于預先定義的選擇準則352、354構建優化模式350。調度器134可以存取例如表700所示的選擇準則,其隨后可以用于構建定制模式350。如果所述作業具有要求約束255以及僅有一小撮可獲得主機130,調度器134可以選擇與可解決性相關聯的準則。也就是說,每個選擇準則可以與具體類型的優化(例如,可解決性、性能等等)相關聯以及可以具有在每個類型內的排序。也就是說,在優化類型內的某種選擇準則相對其他準則具有較高的執行優化的能力。例如,“選擇具有最可獲得處理功率剩余的主機”的準則可能比“選擇具有最少數量處理器的主機”的準則在優化性能方面更好。調度器134可以使用一種獲取流環境的特性以及確定所需選擇準則的優化類型以及強度的算法。例如,調度器134可以從性能優化中選擇排名第三的準則和在可解決性優化中排名第二的準則來構建定制優化模式。而且,該調度器可以將隨機準則插入定制模式。因此,通過考慮約束的數量和類型以及所述簇配置,調度器134可以從不同類型優化中選擇準則以便創建定制優化模式350。[0104]主機130的簇配置可以包括可以獲得的主機130的數量。調度器134可以對所述簇配置以及將被布置的PE235的數量進行平衡一即PE/主機比率。如果該比率高,則調度器134可以使用聚焦于可解決性的優化模式350,但是如果該比率低,調度器134可以使用聚焦于一些其他目標的優化模式350,這些其他目標諸如:成本、性能、共享資源等等。[0105]結論[0106]流應用可以將處理單元分配到一個或多個計算節點(或主機)以便實現期望的優化目標。每個優化模式可以定義PE選擇準則和/或主機選擇準則。在將PE分配到主機時,調度器可以單個地布置每個PE。因此,調度器可以使用所述PE選擇準則用于選擇流應用中的哪個以便分配下一個。該調度器隨后可以基于一個或多個約束確定該PE可以布置在哪個主機上。如果調度器確定多個主機為用于該PE的合適的候選者,則其可以使用主機選擇準則來挑選進一步優化該流應用的所述候選主機之一。使用PE和主機選擇準則可以獲得不同優化目標的實例包括優化性能、降低維持和運算成本、增加可解決性、與其他應用共孚受限計算機資源等等。[0107]附圖中的流程圖和框圖顯示了根據本發明的多個實施例的系統、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發生。例如,兩個連續的方框實際上可以基本并行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或動作的專用的基于硬件的系統來實現,或者可以用專用硬件與計算機指令的組合來實現。[0108]盡管前面所述涉及本發明的實施例,但是在不脫離本發明的基本范圍的情況下也可以想到本發明的其他以及近一步實施例,并且其范圍也由隨后的權利要求書確定。【權利要求】1.一種系統,包括:計算機處理器;以及包含有程序的存儲器,該程序在計算機處理器上被執行時執行用于建立流應用的操作,該系統包括:選擇組件,用于基于至少一個處理單元選擇準則從所述流應用中的多個處理單元中選擇處理單元;確定組件,基于一個或多個約束,從多個計算節點中確定多個候選計算節點,所述處理單元可被分配到所述多個候選計算節點;所述選擇組件還可以操作用于基于至少一個計算節點選擇準則從所述候選計算節點中選擇計算節點,其中所述處理單元選擇準則和計算節點選擇準則中的至少一個通過用于所述流應用的當前優化模式來確定;以及分配組件,用于將所述處理單元分配給所選擇的計算節點。2.根據權利要求1所述的系統,其中所述多個處理單元可操作用于建立所述多個處理單元的算子圖表,所述算子圖表限定至少一個執行路徑,并且其中所述算子圖表的所述處理單元的至少一個被配置為從至少一個上游處理單元接收數據以及將數據發送到至少一個下游處理單元。3.根據權利要求1或2之一所述的系統,還包括:檢測組件,用于檢測將所述多個處理單元的至少一個分配給所述多個計算節點的至少一個的故障;改變組件,在檢測到所述故障時,用于將所述當前優化模式改變為從多個優化模式中選擇的不同優化模式;以及重啟組件,用于重啟所述多個處理單元在所述流應用中的分配。4.根據權利要求1或2之一所述的系統,還包括:檢測組件,用于檢測將所述多個處理單元的至少一個分配給所述多個計算節點的至少一個的故障;添加組件,在檢測到所述故障時,將隨機準則添加到所述處理單元選擇準則和所述計算節點選擇準則中的至少一個中,所述隨機準則確定(i)來自所述候選計算機節點的計算機節點或者(ii)評價不同準則;以及重啟組件,用于在所述流應用中重啟所述多個處理單元的分配。5.根據任意前述權利要求所述的系統,還包括:選擇組件,用于在從所述多個處理單元選擇所述處理單元之前,基于多個約束中的至少一個、每個約束的類型以及所述多個計算節點的數量,從多個優化模式中選擇當前優化模式,其中所述當前優化模式優化所述流應用的可解性、所述流應用的新能、執行所述流應用的成本以及所述流應用的簇配置至少之一O6.根據任意前述權利要求所述的系統,還包括:分配組件用于在所述流應用中分配每個所述多個處理單元;改變組件,響應于分配每個所述多個處理單元所花費的時間超過閾值時間,用于將所述當前優化模式改變為從多個優化模式中選擇的不同優化模式;以及重啟組件,用于重啟所述多個處理單元在所述流應用中的分配。7.一種用于建立流應用的計算機實現方法,包括:通過一個或多個計算機處理器的操作,基于至少一個處理單元選擇準則從所述流應用中的多個處理單元中選擇處理單元;基于一個或多個約束,從多個計算節點中確定多個候選計算節點,所述處理單元可被分配到所述多個候選計算節點;基于至少一個計算節點選擇準則從所述候選計算節點中選擇計算節點,其中所述處理單元選擇準則和計算節點選擇準則中的至少一個通過用于所述流應用的當前優化模式來確定;以及將所述處理單元分配給所選擇的計算節點。8.根據權利要求7所述的方法,其中所述多個處理單元建立所述多個處理單元的算子圖表,所述算子圖表限定至少一個執行路徑,并且其中所述算子圖表的所述處理單元的至少一個被配置為接收來自至少一個上游處理單元的數據以及將數據發送到至少一個下游處理單元。9.根據權利要求7或8之一所述的方法,還包括:檢測將所述多個處理單元的至少一個分配給所述多個計算節點的至少一個的故在檢測到所述故障時,將所述當前優化模式改變為從多個優化模式中選擇的不同優化模式;以及重啟所述多個處理單元在所述流應用中的分配。10.根據權利要求7或8之一所述的方法,還包括:檢測將所述多個處理單元的至少一個分配給所述多個計算節點的至少一個的故障;在檢測到所述故障時,將隨機準則添加到所述處理單元選擇準則和所述計算節點選擇準則中的至少一個中,所述隨機準則確定(i)來自所述候選計算機節點的計算機節點或者(?)評價不同準則;以及在所述流應用中重啟所述多個處理單元的分配。11.根據權利要求7-10任意一個所述的方法,還包括:在從所述多個處理單元選擇所述處理單元之前,基于多個約束中的至少一個、每個約束的類型以及所述多個計算節點的數量,從多個優化模式中選擇當前優化模式,其中所述當前優化模式優化所述流應用的可解性、所述流應用的新能、執行所述流應用的成本以及所述流應用的簇配置至少之一。12.根據權利要求7-11任意一個所述的方法,還包括:在所述流應用中分配每個所述多個處理單元;如果分配每個所述多個處理單元所花費的時間超過閾值時間,將所述當前優化模式改變為從多個優化模式中選擇的不同優化模式;以及重啟所述多個處理單元在所述流應用中的分配。13.根據權利要求7-12任意一個所述的方法,還包括:在從所述多個處理單元選擇所述處理單元之前,基于(i)多個約束中的至少一個、每個約束的類型以及所述多個計算節點的數量,以及(ii)預定單元選擇準則和計算節點選擇準則中至少一個的集合,生成當前優化模式。14.一種計算機程序產品,用于建立流應用,該計算機程序產品包括:計算機可讀存儲介質,可由處理電路讀取并存儲用于由處理電路執行的指令,該指令用于執行根據權利要求7-13中任意一個的方法。15.一種計算機程序,存儲在計算機刻度介質中,并且可以加載到數字計算機的內存,包括軟件代碼部分,所述承載在計算機上運行時,用于執行根據權利要求7-13中任意一個的方法。【文檔編號】G06F15/16GK103988194SQ201280059069【公開日】2014年8月13日申請日期:2012年11月29日優先權日:2011年12月1日【發明者】B.W.福塞特申請人:國際商業機器公司