TW201610703A - 雲端中之分散式串流處理 - Google Patents
雲端中之分散式串流處理 Download PDFInfo
- Publication number
- TW201610703A TW201610703A TW104120779A TW104120779A TW201610703A TW 201610703 A TW201610703 A TW 201610703A TW 104120779 A TW104120779 A TW 104120779A TW 104120779 A TW104120779 A TW 104120779A TW 201610703 A TW201610703 A TW 201610703A
- Authority
- TW
- Taiwan
- Prior art keywords
- event
- streaming
- vertex
- script
- vertices
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Retry When Errors Occur (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
一種低延遲雲端規模計算環境包括查詢語言、最佳化、排程、容錯和故障恢復。事件模型可用於延伸宣告查詢語言,使得事件串流的事件的時間分析可以被執行。擷取器和輸出器可以用來定義和實現延伸基於事件之查詢語言之能力的功能。以延伸查詢語言寫成之腳本可譯成最佳的平行連續執行計劃。該計劃的執行可以透過串流工作管理器進行策劃,串流工作管理器排程可用計算機器上的頂點。串流工作管理器可以監視整個工作的執行。可以透過追蹤每一頂點的執行進度和資料依賴性提供容錯。在出現故障的情況下,可排程發生故障的頂點的另一實例。可以根據檢查點和資料依賴性來決定最佳的恢復點。
Description
本發明是關於雲端中之分散式串流處理。
如今,許多企業依靠雲端規模的資料計算結果來提高服務品質、支援新特點和偵測隨著時間推移在模式上的變化。在收集將即時提供業務洞察力之資訊方面的需求增長。這種類型的分析可以涉及大規模系統日誌的處理,日誌擷取最近的處理歷史和使用者互動。
描述一種雲端規模的計算環境,其可以支援分散式低延遲串流處理。該框架包括查詢語言、最佳化、排程、容錯和故障恢復。事件模型可用於延伸宣告查詢語言,使得時間分析可以被執行。串流擷取器和串流輸出器可以用來定義和實現延伸基於事件之查詢語言之能力的功能。結構及非結構之資料集合可被轉換成時間事件串流。以延伸查詢語言寫成之腳本可譯成最佳的平行連續執行計劃。執行計劃可包含頂點的有向非循環圖(directed acyclic graph,DAG)。
計劃的執行可以透過串流工作管理器進行策劃,串流工作管理器排程可用計算機器上的頂點。串流工作管理器可以監視整個工作的執行。可同時執行全部或部
分頂點。可連續執行全部或部分頂點。可以透過追蹤每一頂點的執行進度和資料依賴性提供容錯。可透過執行週期性檢查點來追蹤執行進度。序號可用來描述和追蹤頂點的輸入、輸出與狀態之間的依賴關係。在出現故障的情況下,可排程發生故障的頂點的另一實例。偵測到頂點故障及相關的狀態漏失時,可透過重播合適的事件歷史來恢復狀態。可以透過頻繁檢查點狀態和使用序號追蹤資料依賴性來減少必須重播的歷史量。最佳的恢復點可以透過使用檢查點和序號來決定,使頂點的執行以最少的重新計算來恢復。所描述的特點可以線性擴展到雲端尺寸,也就是可以擴展到數百個計算裝置或更多,以低延遲或甚至以高事件率運作。
本「發明內容」係以簡化形式介紹一些選定概念,在下文之「實施方式」中將進一步對其進行描述。本「發明內容」並非意欲辨識申請專利之標的之關鍵特徵或基本特徵,亦非意欲用於限制申請專利之標的之範圍。
102‧‧‧計算裝置
104a‧‧‧串流擷取器
106‧‧‧串流工作管理器
108a‧‧‧串流輸出器
110‧‧‧腳本
112‧‧‧腳本處理器
114‧‧‧最佳化裝置
116a‧‧‧事件來源
120‧‧‧執行計劃
142‧‧‧處理器
144‧‧‧記憶體
158‧‧‧串流工作管理器
159‧‧‧儲存裝置
163‧‧‧輸出事件
202-218‧‧‧步驟方法
514‧‧‧處理單元
516‧‧‧系統記憶體
518‧‧‧系統匯流排
520‧‧‧揮發性
522‧‧‧非揮發性
526‧‧‧介面
528‧‧‧作業系統
530‧‧‧應用程式
532‧‧‧模組
534‧‧‧資料
536‧‧‧輸入裝置
538‧‧‧介面埠
540‧‧‧輸出裝置
542‧‧‧輸出適配器
544‧‧‧遠端電腦
546‧‧‧記憶儲存
548‧‧‧網路介面
550‧‧‧通訊連接
在附圖中:圖1a繪示根據本文所描述標的態樣之執行分散式串流處理的系統100的範例;圖1b繪示根據本文所描述標的態樣之頂點的範例,其執行是由串流工作管理者策劃;圖1c繪示根據本文所描述標的態樣之圖1b的範例,其中頂點之一者已經故障;
圖2繪示根據本文所描述標的態樣之方法200的範例,包括執行分散式串流處理的方法;及
圖3繪示根據本文所描述標的態樣之計算環境的範例的方塊圖。
一種用於處理大量資料的方式是收集日誌一段時間及運行重複的工作來處理收集的資料。這種作法本身招致從事件產生時到反映在查詢邏輯的輸出時的時間延遲。增加工作運行時的頻率可招致令人望而卻步的開銷,因為例如工作啟始和清除成為大的資源消耗者。開銷也可以令人望而卻步,因為查詢邏輯需要在更大的時間跨度處理事件。例如,為了可靠地了解使用者的行為,可能有必要分析產生在幾個小時中產生的日誌。因此每一作業循環不僅消耗新的事件而且還可讀取、更新和寫入長期的使用者特定的狀態。讀取和寫入整個使用者狀態用於每次的幾秒循環可以變成令人望而卻步的昂貴。
另一種方法依賴於串流資料庫系統。處理網際網路規模的高容量資料串流及提供高流通量可使串流處理必要性地透明擴展到大型的硬體群集。處理伴隨大型群集的必然故障而不犧牲延遲可以是有挑戰性的。基於重新計算的故障恢復並不總是適用於串流處理,因為自最初始重新載入資料是不可行的。
根據本文描述之標的,分散式和連續串流處理結合來自傳統平行資料庫和基於批次之恢復執行引擎(如MapReduce)的優點,以賦能簡便的可程式性及透過先進的最佳化提供大量的可擴展性和高性能。大規模批次程序可以支援數萬個計算機器上多種的資料分析和資料探勘應用程式。複雜的事件處理技術可以整合到支援分散式串流處理的雲端規模查詢執行平台。可使用事件模型來延伸宣告語言以執行時間分析及將用於時間運算子的實施加入分散式和連續串流處理。
圖1a繪示根據本文所描述標的態樣之執行分散式串流處理的系統100的範例。全部或部分的系統100可以常駐在一或更多電腦或計算裝置,例如參照圖3描述於下之電腦。
系統100或其部分可以包括自服務(例如雲端中)所取得的資訊或可運作於雲端計算環境。雲端計算環境可以是不擁有計算服務但在需求時提供計算服務的環境。例如,資訊可常駐於網路雲端中的多個裝置及/或資料可以儲存在雲端中的多個裝置。
系統100可以包括一或更多計算裝置,例如計算裝置102。所考慮的計算裝置包括但不限於桌上型電腦、平板電腦、膝上型電腦、筆記型電腦、個人數位助理、智慧型手機、蜂巢式電話、行動電話等等。諸如計算裝置102之計算裝置可以包括諸如處理器142之一或更多處理
器,以及諸如記憶體144之記憶體,該記憶體與一或更多處理器進行通訊。
系統100可以包括以下任何組合:諸如腳本處理器112之腳本處理器、諸如最佳化裝置114之最佳化裝置及/或諸如串流工作管理器106之串流工作管理器。腳本處理器112可以編譯腳本,如腳本110。由系統100接收之腳本可以包括指令序列。指令可以是資料操作運算子,資料操作運算子將一或更多事件串流作為輸入、對資料執行一些操作及輸出事件串流。使用者可以命名輸出事件串流。這種能力可以使得輸出串流更容易被後續操作消耗。腳本處理器112可包括或可與諸如最佳化裝置114之最佳化裝置相關聯。最佳化裝置114可建立諸如執行計劃120之最佳化執行計劃。執行計劃120可以是最佳的平行連續執行計劃。最佳的平行連續執行計劃可以在多個計算裝置上執行。執行計劃可以包括頂點的有向非循環圖(DAG)。頂點是圖中的節點。
諸如串流工作管理器106之串流工作管理器可以接收最佳化的執行計劃及可策劃一或更多計算裝置上的查詢執行。串流工作管理器可以建立和監視需要實行執行計劃的頂點。相對於視需求而在不同時間排程頂點的批次導向之工作管理器,串流工作管理器106可以在執行開始時排程DAG中的所有頂點。
每一頂點可執行於個別的計算裝置。多個頂點可排程於相同的計算裝置上。系統100的頂點可以是串流
擷取器,例如串流擷取器104a至串流擷取104n,消耗來自一或更多事件來源的事件,例如事件來源116a至事件來源116n。系統100的頂點可以是串流輸出器,例如串流輸出器108a至串流輸出器108n。
每一串流擷取器頂點可連續等待它的輸入串流及對資料執行計算。可透過網路將結果傳送到下游頂點。該結果也可異步地緩衝於區域儲存(未圖示)。因此,可實施串流擷取器以自連續產生事件的各種來源(如事件來源116a至事件來源116n)產生事件。來自輸入來源的事件可以標示單調遞增的序號。連續地產生事件的來源包括但不限於感測器、執行即時日誌的來源等。串流擷取器可自以具有時間運算子之查詢語言寫成之查詢或腳本調用(例如腳本110)。串流擷取器可指示每一事件的時間資訊。時間資訊可包括事件開始時間(例如STARTTIME)和事件結束時間(例如ENDTIME)。時間資訊可包括在此期間事件是有效的時間區段(例如期間),及/或指示時間或序列資訊等的任何其他資訊。
系統100的頂點可以是串流輸出器。諸如串流輸出器108a至串流輸出器108n之串流輸出器可賦能使用者定義之動作以建立輸出事件串流。串流輸出器可自查詢或腳本調用(例如腳本110),腳本是以具有時間運作的查詢語言寫成。來自輸出來源的事件可以標示單調遞增的序號。
系統100可以支援窗口。窗口是指定義時間窗口的功能,因此可以使用多個窗口來定義事件的子集合。基於時間的可被支援窗口包括但不限於跳躍、翻滾和快照窗口。跳躍窗口是指在時間上以預定大小向前跳躍的窗口。窗口可以由兩個參數來控制:跳躍大小(例如在本文中稱為「H」)和窗口大小(例如在本文中稱為「S」)。以窗口大小參數S指示之大小的新窗口可以時間單位H建立。翻滾窗口是跳躍窗口H=S的特定案例,表示一序列的無間隙和無重疊窗口。快照窗口的邊界是以事件所定義。每當新事件來到或現有的事件到期,會產生新的窗口邊界。
本文所描述的範例腳本如下:
上述範例腳本執行連續的系統診斷,雖然熟悉本領域技術人員將理解腳本可用於執行各種功能,而不限於系統診斷。在上面的腳本中,在串流處理工作執行期間繼續附加的系統日誌是輸入。在範例中使用VertexStarted和VertexEnded日誌(即“FROM“VertexStarted.log“”、“FROM“VertexEnded.log“”)。VertexStarted在頂點程序開始執行時記錄資訊。當頂點開始時,該資訊包括但不限於頂點Guid和時間戳(即“TEMPORALSTREAM VertexGuid:string,CurrentTimeStamp:DateTime”)。類似地,當頂點程序終止時,VertexEnded記錄資訊。該腳本計算在任何時間點為每一使用者群組執行多少頂點。在任何時間點執行的頂點數目預測每一使用者群組所使用的系統資源。
使用串流擷取器將日誌轉換成事件後,VertexStarted和VertexEnded事件串流可相關聯以決定每一頂點可存活多久。編寫查詢的查詢語言可以提供修改串流中事件的時間間隔的能力。例如,根據本文所描述
標的之一些態樣,可修改事件的開始時間。例如,下述指令:ALTERTIME<stream>QWITH STARTTIME=S,DURATION=D其中S是指定事件的新開始時間的日期/時間表達式及D是指定事件期間的時間跨度表達式,可以改變事件的開始時間和持續時間。上面的示例腳本利用了以下事實,在示例性系統中,頂點不執行超過6小時。VertexStarted事件的壽命延長至最多6小時(即ALTERTIME VertexStartRawEvents WITH DURATION=TimeSpan.FromHours(6))。VertexStarted事件可以與對應的VertexEnded事件連接(即VertexEvents=SELECT UserGroup FROM VertexStartEvents CLIP JOIN VertexEndEvents ON VertextStart.VertexGuid==VertexEnd.VertexGuid)。結果事件具有自VertexStarted事件的開始時間及自VertexEnded事件的結束時間(其結束時間是由VertexEnded事件剪輯)。最終時間群組可以在快照窗口計算每一使用者群組的頂點數量。每當群組的聚集數值改變時,快照聚集可以產生事件(即ResultEvents=SELECT UserGroup,COUNT()AS VertexCount FROM VertexEvents GROUP BY UserGroup WITH SNAPSHOTWINDOW)。在上述的例子中,每當使用者
群組中的頂點開始或結束時,產生一事件。結果可以用來預測過去一段時間中每一使用者群組的資源消耗。在上面的例子中,結果可以被連續地寫入到磁碟(即OUTPUT ResultEvents USING StreamEventOutputter(...))。
查詢語言可以包括關係運算子的綜合集合,包括但不限於預測、過濾、分群、連接等,並且可以針對事件的時間態樣進行處理。例如,時間連接可能能夠評估隱性時間預測,使得可以評估具有重疊時間間隔的事件。
如上所述,查詢或腳本可以由諸如腳本處理器112之腳本處理器接收。腳本處理器112可以編譯腳本110。諸如最佳化裝置114之最佳化裝置可接收已編譯的腳本,並且可以評估替代的執行計劃。例如,最佳化裝置可以基於以下任意組合選擇執行計劃:根據可用資源的最低預測成本、資料統計及/或內部成本模型。最佳化可以包括考慮進來的時間資料的資料速率。最佳化裝置可以選擇最終執行計劃(例如執行計劃120)。時間資料可以由使用者串流擷取器進行註解。最終執行計劃可以包括串流頂點的DAG,其中各個頂點可以執行如本文所述的一系列的執行時間運算子,包括時間連接、窗口聚集體等。頂點計算可以是決定性的,使得故障處理和恢復可正確地繼續進行,更充分描述於下。類似地,事件消耗的順序可以是決定性的。根據本文所描述標的之一些態樣,使用者可以定義處理事件串流的動作。這些動作可能包括寫入磁碟,由
特定的應用消耗輸出事件串流等。因為使用者可以定義串流擷取器,提供了更大的靈活度以多種格式消耗輸入事件串流。因為使用者可以定義串流輸出器,提供了更大的靈活度以多種格式產生不同形式的輸出事件串流。
執行計劃可以透過串流工作管理器106接收。串流工作管理器106可以策劃執行查詢。串流工作管理器106可以在一或更多計算裝置上建立頂點並可監視頂點執行。在執行期間,來自輸入或輸出串流的事件可以標示單調遞增的序號。每一頂點的進展可以透過週期性地通知與來自每一串流的最後消耗或最後產生事件相關聯的序號的串流工作管理器。每一頂點可週期性地傳送檢查點至儲存裝置檢查其內部狀態。進展和檢查點資訊可以對使用者透明。
圖1b繪示頂點的執行的範例149a。DAG 150a代表簡化的執行圖形,包括7個頂點、頂點v1 151、頂點v2 152、頂點v3 153、頂點v4 154、頂點v5 155、頂點v6 156和頂點v7 157。當工作開始時,為簡單起見讓我們假設該串流工作管理器158調度各個頂點到不同的計算機器。熟習本領域技術人員將理解到將多個頂點調度到單一計算機器是可能的。在DAG 150a中,邊緣160表示從頂點v1 151到頂點V3 153的輸出串流及從頂點v1 151到頂點v3 153的輸入串流。當頂點v1 151處理事件時,頂點v1 151可以發送事件的輸出至v2 152和v3 153。頂點v2 152和v3 153可以接著發送它們的輸出以
由下游頂點v4 154、v5 155和v6 156等處理。因為事件是串流事件,該程序是連續的。頂點可以發送資訊給串流工作管理器以使用指派的序號通知串流工作管理器它的進度。例如,頂點V4 154可以發送依賴性訊息161至串流工作管理器158。箭頭161a表示頂點V4 154發送依賴性訊息161至串流工作管理器158。訊息可以包括序號或一系列的序號,指示該頂點已處理的事件。例如,由串流工作管理器158所收到來自頂點V4 154的訊息{(2,3)}可以指示頂點v4 154已經處理了來自頂點v2 152的第二輸入事件和來自頂點v3 153的第三輸入事件。接收自頂點v4 154的訊息{(2,3),(2)}可以指示頂點v4 154亦已產生頂點v4 154發送到頂點v7 157的輸出事件2(輸出事件2163)。箭頭163a表示頂點v4 154發送輸出事件到頂點v7 157。
頂點可傳送檢查點至儲存裝置檢查其內部狀態。例如,在圖1b中,頂點v4 154已發送檢查點162至檢查點儲存裝置159,如圖1b中箭頭162a所示。頂點可以通知檢查點的串流工作管理器,並且可將事件序號與檢查點相關聯。使用者定義之運算子的檢查點也可以在頂點檢查點時支援。例如,假設頂點v4 154發送兩個訊息至串流工作管理器。第一訊息例如{(2,3),(2)}可以表示頂點v4 154消耗來自頂點v2 152的事件2及消耗來自頂點v3 153的事件3,及頂點v4 154產生輸出事件2。第二訊息{(5,6),(4),st}可指示進度資訊,頂點v4 154處理
來自頂點v2 152的事件5及來自頂點v3 153的事件6,及頂點v4 154產生輸出事件4。訊息還可以包括元資料資訊,指示頂點v4 154在此點產生檢查點st。因此,如果頂點v4 154在此點失敗,串流工作管理器158可決定哪些事件是由頂點v4 154成功處理及在頂點執行進度中哪個檢查點與此點相關聯。
回應於偵測到頂點故障,串流工作管理器可以在不同的計算機器上重新啟動故障的頂點。串流工作管理器可以透過檢查所有直接連接的下游頂點已進展多少,並可以計算新頂點應該自其重播的事件的最小序號,所以沒有事件因為故障而錯過。
圖1c繪示可以如何處理頂點故障之範例149b。DAG 150b代表簡化的執行圖,包括七個頂點,圖1b的頂點v1 151、頂點v2 152、頂點v3 153、頂點v4 154、頂點v5 155、頂點v6 156和頂點v7 157。
提供給串流工作管理器158及儲存裝置159的進度及檢查點資訊可用於追蹤資料依賴性,其可用於有效地識別從其開始重新計算的恢復點。在故障恢復時,串流工作管理器158可以例如自檢查點st讀取以於另一計算機器上重新產生故障前的狀態。串流工作管理器可於不同的計算機器上重新啟動故障的頂點並重新配置其計算狀態。如圖1c所示,假設例如頂點v2 152在處理過程中出現故障。串流工作管理器可以在不同的計算機器上重新啟動頂點2,如圖1c的新頂點v2 152a。新頂點v2 152a的內部
狀態必須設定為最後已知良好的狀態,使得頂點v2 152a可以繼續進行而不需要重新啟動整個工作。串流工作管理器可以檢查所有直接連接的下游頂點的進展,並可以計算新頂點應該自其重播的事件的最低序號。在這個例子中,檢查頂點v4 154、v5 155和v6 156的進展。
假設頂點v4 154透過事件5繼續進行,頂點v5透過事件8繼續進行及頂點v6透過事件4繼續進行。為了讓程序在頂點v4 154、v5 155和v6 156上繼續進行,頂點v2 152在事件4之後的輸出必須重新產生。然後串流工作管理器使用此資訊從哪個檢查點重新運行,以使頂點v2確保下游頂點不會由於故障錯過任何事件。例如,當頂點v2 152故障時,v4 154、v5 155和v6 156各自回報已處理事件5、8和4。v2 152a的新實例必須從事件5開始重新產生事件。然後串流工作管理器可以使用該資訊來選擇頂點應自其恢復以重新產生輸出事件4的最近可用檢查點,如圖1c中箭頭164所示。除了從檢查點重建其內部狀態,新頂點需要從與檢查點相關聯的點重新處理輸入,如圖1c中箭頭165所示。應該理解的是,每一頂點可以異步將其輸出寫入到區域儲存,其可用於透過其序號來定位事件。如果輸入事件不能重新產生(例如因為儲存緩衝結果的計算機器也故障時),串流工作管理器可以觸發在上游頂點的連鎖故障,其可以如上所述進行處理。
因為新頂點可能會回到較早的檢查點,可能會出現複製事件。每一頂點可以使用區域追蹤的輸入序號透
明地刪除任何重複的事件。也可以執行重複刪除於最終輸出。可執行垃圾收集的程序以安全地移除過時的追蹤資訊、檢查點、及區域緩衝的中間事件。工作的輸出被消耗或儲存之後,到特定序號之前,保證不會要求重新計算輸出事件。透過以相反拓撲順序遍歷DAG,可以為每一頂點計算需要執行任何可能重新計算的事件的最小輸入序號。具有小於最小值序號的任何事件可以被垃圾收集。當程序到達串流擷取器時,可以終止程序。
圖2繪示根據本文所描述標的態樣之方法200的範例,方法200是用於執行分散式串流處理的方法。圖2中描述的方法可透過系統來實施,例如但不限於圖1a、1b和1c中所描述。雖然方法200描述以序列執行的一系列操作,應當理解,方法200不被所描述的序列順序所限制。例如,一些操作可以不同於所描述之順序運作。此外,一操作可以與另一操作同時發生。在一些情況下,不是所有描述的操作都會執行。
如上之更充分描述,在操作202,可接收以延伸以支援時間分析之查詢語言寫成之腳本。在操作204,腳本可以翻譯成平行連續執行計劃。平行連續執行計劃可以是最佳方案,其中最佳方案包括基於因素的某種組合而選擇的方案,包括以下一或更多者:平行連續執行計劃可以包括頂點的指向非循環圖(DAG)。在操作206,執行計劃可以透過串流工作管理器策劃。串流工作管理器可排程計算機器上的頂點。在操作208,頂點可以同時並連續
執行。在操作210,串流工作管理器可以監視工作的執行。可追蹤每一頂點執行的進度。可追蹤每一頂點的資料依賴性。在操作212,可以由頂點儲存週期性檢查點。在操作214,回應於偵測到頂點故障,可在216執行恢復操作。否則,可在208繼續處理。在操作216,可排程故障頂點的另一實例。在操作218,如更充分描述於上,可計算最佳恢復點。在操作220,可以恢復頂點執行。
為了提供用於在此揭示標的之各種態樣之情境,圖3和以下的討論旨在提供合適計算環境510的簡要概括描述,其中可以實施本文所揭示標的之各種實施例。儘管本文所揭示標的是以諸如程式模組之電腦可執行指令的一般情境描述,由一或更多電腦或其他計算裝置執行,本領域的技術人員將認識到本文所揭示之部分標的也可以結合其他程式模組及/或硬體和軟體的組合來實現。一般而言,程式模組包括常式、程式、物件、實體人工製品、資料結構等,執行特定任務或實現特定資料類型。通常,在不同的實施例中,可視所欲組合或分散程式模組的功能。計算環境510只是合適操作環境的示例,並不旨在限制本文所揭示標的之使用或功能性的範圍。
參考圖3,描述電腦512形式的計算裝置。電腦512可以包括至少一處理單元514、系統記憶體516、以及系統匯流排518。至少一處理單元514可以執行儲存在記憶體中的指令,例如但不限於系統記憶體516。處理單元514
可以是任何各種可用的處理器。例如,處理單元514可以是圖形處理單元(GPU)。指令可以是用於實現由上面討論的一或更多元件或模組所執行的功能的指令,或用於實現上面討論的一或更多方法的指令。也可使用雙微處理器和其他多處理器架構作為處理單元514。電腦512可用於支援顯示螢幕上的圖形的系統。在另一範例中,計算裝置的至少一部分可用於包括圖形處理單元的系統中。系統記憶體516可以包括揮發性記憶體520和非揮發性記憶體522。非揮發性記憶體522可以包括唯讀記憶體(ROM)、可程式化ROM(PROM)、電子可程式化ROM(EPROM)或快閃記憶體。揮發性記憶體520可以包括隨機存取記憶體(RAM),其可以充當外部快取記憶體。系統匯流排518耦合系統實體製品,包括耦合系統記憶體516至處理單元514。系統匯流排518可以是若干類型的任何一種,包括記憶體匯流排、記憶體控制器、周邊匯流排、外部匯流排或區域匯流排,並且可以使用任何各種可用的匯流排架構。電腦512可包括可由處理單元514經由系統匯流排518存取的資料儲存裝置。資料儲存裝置可包括用於圖形呈現的可執行指令、3D模型、材料、質感等。
電腦512通常包括各種電腦可讀取媒體,如揮發性和非揮發性媒體、可移除和非可移除媒體。電腦可讀取媒體可以任何方法或技術實施用於諸如電腦可讀取指令、資料結構、程式模組或其他資料之資訊儲存。電腦可讀取媒體包括電腦可讀取儲存媒體(亦稱電腦儲存媒體)
及通訊媒體。電腦儲存媒體包括實體(有形)媒體,例如但不限於RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、DVD或其他光碟儲存、磁卡帶、磁帶、磁碟儲存或其他磁性儲存裝置、或可以用來儲存所欲資料並可以透過電腦512存取之任何其他裝置。通訊媒體包括媒體,例如但不限於通訊訊號、經調制載波或可以用來通訊所欲資訊並可以透過電腦512存取之任何其他無形媒體。
應該理解的是,圖3描述可以作為使用者與電腦資源之間的中介的軟體。軟體可包括作業系統528,其可以儲存於磁碟儲存524並可以分配電腦512的資源。磁碟儲存524可以是透過諸如介面526之非可移除記憶體介面而連接到系統匯流排518的硬碟機。系統應用程式530透過儲存於系統記憶體516或光碟儲存524的程式模組532和程式資料534利用作業系統528管理資源。應該理解的是,可以使用各種作業系統或作業系統的組合來實現電腦。
使用者可以透過輸入裝置536輸入指令或資訊到電腦512。輸入裝置536包括但不限於指向裝置,例如滑鼠、軌跡球、指示筆、觸控墊、鍵盤、麥克風、語音識別和手勢識別系統等。這些和其他輸入裝置透過系統匯流排518經由介面埠538連接到處理單元514。介面埠538可表示串行埠、平行埠、通用串行匯流排(USB)等。輸出裝置540可以使用與輸入裝置相同類型的埠。輸出適配器542是提供以說明諸如需要特定適配器之監視器、揚聲器、以
及印表機之一些輸出裝置540。輸出適配器542包括但不限於視頻和聲卡,提供輸出裝置540與系統匯流排518之間的連接。諸如遠端電腦544之其他裝置及/或系統或裝置可以提供輸入和輸出能力。
電腦512可使用邏輯連接到諸如遠端電腦544之一或更多遠端電腦而在網路環境中運作。遠端電腦544可以是個人電腦、伺服器、路由器、網路PC、同級裝置或其他公共網路節點,並且通常包括許多或所有相對於電腦512描述於上的元件,儘管只有記憶體儲存裝置546已繪示於圖3。遠端電腦544可以經由通訊連接550在邏輯上連接。網路介面548包括通訊網路,例如區域網路(LAN)和廣域網路(WAN),但也可以包括其他網路。通訊連接550指的是硬體/軟體,將網路介面548連接到匯流排518。通訊連接550可以是在電腦512的內部或外部,並且包括內部和外部技術,例如調制解調器(電話、電纜、DSL和無線)和ISDN適配器、乙太網卡等等。
應當理解,所示的網路連接僅是範例,可以使用其他方式建立電腦之間的通訊鏈路。本領域的一般技術人員可以理解,電腦512或其他客戶端裝置可以被部署為電腦網路的一部分。在這方面,本文所揭示標的可以涉及具有任意數量的記憶體或儲存單元的任何電腦系統,且跨任意數量的儲存單元或容量發生任意數量的應用程式和程序。本文所揭示標的之態樣可應用於具有部署於網路環境的伺服器電腦及客戶端電腦的環境,其具有遠端或區域儲
存。本文所揭示標的之態樣也可應用於獨立的計算裝置,具有程式化語言功能、解釋和執行能力。
本文中所描述的各種技術可結合硬體或軟體或在適當處以兩者的組合。因此,本文中所描述之方法和裝置或某些態樣或部分可採用實施於有形媒體的程式代碼(即指令)的形式,有形媒體例如軟碟、CD-ROM、硬碟機或任何其他機器可讀取儲存媒體,其中當程式代碼由諸如電腦之機器載入並執行時,該機器成為用於實施本文所揭示標的之態樣的裝置。如本文所使用的,可使用術語「機器可讀取儲存媒體」排除提供(即儲存及/或發送)任何形式的傳播訊號的任何機制。在可程式電腦上執行程式代碼的情況下,計算裝置通常包括處理器、可由處理器讀取的儲存媒體(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、以及至少一輸出裝置。一或更多程式可利用特定域(domain-specific)程式化模型態樣的建立及/或實現,例如透過使用資料處理API或類似者之使用,該一或更多程式可以高階程序或物件導向的程式語言實施以與電腦系統通訊。但是,如果需要的話,程式可以組合或機器語言來實現。在任何情況下,語言可以是編譯的或解釋的語言,並與硬體實施組合。
雖然已經以結構特徵及/或方法步驟的特定語言來描述標的,應了解到,定義於後附請求項之標的並非必須限制於上述之特定特徵或步驟。確切而言,上述之特定特徵或步驟係揭示作為實施請求項的範例形式。
102‧‧‧計算裝置
104a‧‧‧串流擷取器
106‧‧‧串流工作管理器
108a‧‧‧串流輸出器
110‧‧‧腳本
112‧‧‧腳本處理器
114‧‧‧最佳化裝置
116a‧‧‧事件來源
120‧‧‧執行計劃
142‧‧‧處理器
144‧‧‧記憶體
Claims (20)
- 一種系統,包括:至少一處理器;一記憶體,連接至該至少一處理器:及至少一程式模組,包括一串流工作管理器,該串流工作管理器監視與串流工作相關的執行資訊,該等串流工作係由在複數個計算裝置上執行的複數個頂點執行,該串流工作管理器接收該等複數個頂點的執行進度資訊和資料依賴性。
- 如請求項1所述之系統,該串流工作管理器回應於偵測到該等複數個頂點之一故障頂點而排程一新頂點,該串流工作管理器決定一最接近檢查點,自該最接近檢查點恢復在該新頂點的程序。
- 如請求項2所述之系統,該串流工作管理器計算事件序號的一最小序號,該新頂點自該最小序號恢復處理。
- 如請求項1所述之系統,還包括至少一程式模組,包括一腳本處理器,該腳本處理器接收以一宣告查詢語言寫成之一腳本,該宣告查詢語言透過輸入事件串流的時間分析來支援分散式串流處理。
- 如請求項1所述之系統,還包括至少一程式模組,該至少一程式模組包括一串流執行計劃最佳化裝 置,該串流執行計劃最佳化裝置接收以一宣告查詢語言寫成之一經編譯腳本,該宣告查詢語言具有接收使用者定義之功能以消耗事件串流之一能力。
- 如請求項1所述之系統,還包括至少一程式模組,該至少一程式模組將一單調遞增的序號指派給一事件串流中複數個事件之一事件。
- 如請求項1所述之系統,還包括至少一程式模組,該至少一程式模組將一序號指派給一事件串流中之一事件以追蹤一頂點之輸入、輸出與狀態之間的依賴性。
- 一種方法,包含以下步驟:由一計算裝置之一處理器接收與串流工作相關聯的執行進度資訊,該等串流工作係由在複數個計算裝置上執行的複數個頂點所執行;回應於在該等複數個頂點偵測到一頂點故障,排程一新頂點;及決定一最近檢查點,自該最近檢查點自指派給一事件串流中之事件之單調遞增的序號恢復在該新頂點上的程序。
- 如請求項8所述之方法,進一步包含以下步驟:透過計算事件序號的一最小序號,執行故障恢復,其中該新頂點自該最小序號恢復程序。
- 如請求項8所述之方法,進一步包含以下步 驟:以一查詢語言接收一腳本,該查詢語言係延伸以透過事件串流的時間分析來支援分散式串流處理;及自該腳本產生一最佳化串流執行計劃,該腳本包括一串流擷取器,該串流擷取器將資訊自一連續輸入來源轉換成事件串流。
- 如請求項8所述之方法,進一步包含以下步驟:以一查詢語言接收一腳本,該查詢語言係延伸以透過事件串流的時間分析來支援分散式串流處理;及自該腳本產生一最佳化串流執行計劃,該腳本包括一串流輸出器,該串流輸出器執行處理串流輸出事件的使用者定義之操作。
- 如請求項8所述之方法,進一步包含以下步驟:自該等複數個頂點之一頂點接收與一最後消耗或一最後產生事件相關聯的一序號。
- 如請求項8所述之方法,進一步包含以下步驟:接收與複數個執行串流工作相關的依賴性資訊。
- 一種電腦可讀取儲存媒體,包括電腦可讀取指令,當被執行時,致使一計算裝置之至少一處理器執 行以下步驟:接收與串流工作相關聯的資料依賴性資訊,該等串流工作係由在複數個計算裝置上執行的複數個頂點所執行;回應於在該等頂點偵測到一頂點故障,透過排程一新頂點來執行作業恢復;及決定一最近檢查點,自該最近檢查點使用指派給一事件串流中之事件之單調遞增的序號恢復在該新頂點上的程序。
- 如請求項14所述之電腦可讀取儲存媒體,進一步包含電腦可讀取指令,當被執行時,致使該至少一處理器執行以下步驟:計算事件序號的一最低序號,該新頂點基於所儲存之檢查點資料自該最低序號恢復處理。
- 如請求項15所述之電腦可讀取儲存媒體,進一步包含電腦可讀取指令,當被執行時,致使該至少一處理器執行以下步驟:自一腳本產生一最佳化串流執行計劃,該腳本係以透過輸入事件串流的時間分析而延伸以支援分散式串流處理之一查詢語言寫成。
- 如請求項14所述之電腦可讀取儲存媒體,進一步包含電腦可讀取指令,當被執行時,致使該至少一 處理器執行以下步驟:自一腳本產生一最佳化串流執行計劃,該腳本係以一查詢語言寫成,該宣告查詢語言具有接收使用者定義之功能以消耗事件串流之一能力。
- 如請求項14所述之電腦可讀取儲存媒體,進一步包含電腦可讀取指令,當被執行時,致使該至少一處理器執行以下步驟:自一腳本產生一最佳化串流執行計劃,該腳本係以一查詢語言寫成,該宣告查詢語言具有接收使用者定義之功能以產生事件串流之一能力。
- 如請求項14所述之電腦可讀取儲存媒體,進一步包含電腦可讀取指令,當被執行時,致使該至少一處理器執行以下步驟:接收執行進度資訊,包括經處理之最後事件及自複數個頂點之一頂點產生之最後事件。
- 如請求項19所述之電腦可讀取儲存媒體,進一步包含電腦可讀取指令,當被執行時,致使該至少一處理器執行以下步驟:將一單調遞增的序號指派給一事件串流中的每一事件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/320,706 US9641580B2 (en) | 2014-07-01 | 2014-07-01 | Distributed stream processing in the cloud |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201610703A true TW201610703A (zh) | 2016-03-16 |
Family
ID=53674327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104120779A TW201610703A (zh) | 2014-07-01 | 2015-06-26 | 雲端中之分散式串流處理 |
Country Status (5)
Country | Link |
---|---|
US (3) | US9641580B2 (zh) |
EP (1) | EP3164801A1 (zh) |
CN (1) | CN106462484B (zh) |
TW (1) | TW201610703A (zh) |
WO (1) | WO2016003951A1 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9946809B2 (en) * | 2014-04-09 | 2018-04-17 | Introspective Systems LLC | Executable graph framework for the management of complex systems |
US10685064B2 (en) | 2014-04-09 | 2020-06-16 | Introspective Systems LLC | Executable graph framework for the management of complex systems |
US9686338B1 (en) * | 2014-10-24 | 2017-06-20 | Amazon Technologies, Inc. | Streaming content adjustment based on camera feedback |
US10657136B2 (en) * | 2015-12-02 | 2020-05-19 | International Business Machines Corporation | Searching data on a synchronization data stream |
US10601890B2 (en) | 2016-01-14 | 2020-03-24 | Ab Initio Technology Llc | Recoverable stream processing |
WO2017156184A1 (en) * | 2016-03-09 | 2017-09-14 | Alibaba Group Holding Limited | Cross-regional data transmission |
US10366084B2 (en) * | 2016-09-15 | 2019-07-30 | Microsoft Technology Licensing, Llc | Optimizing pipelining result sets with fault tolerance in distributed query execution |
US11657056B2 (en) * | 2016-09-15 | 2023-05-23 | Oracle International Corporation | Data serialization in a distributed event processing system |
US9678837B1 (en) | 2016-10-14 | 2017-06-13 | International Business Machines Corporation | Variable checkpointing in a streaming application with one or more consistent regions |
US9720785B1 (en) * | 2016-10-14 | 2017-08-01 | International Business Machines Corporation | Variable checkpointing in a streaming application that includes tuple windows |
US10439917B2 (en) * | 2016-11-15 | 2019-10-08 | At&T Intellectual Property I, L.P. | Recovering a replica in an operator in a data streaming processing system |
US10331479B2 (en) * | 2017-01-13 | 2019-06-25 | Microsoft Technology Licensing, Llc | Computing on transient resources |
US10713088B2 (en) * | 2017-03-23 | 2020-07-14 | Amazon Technologies, Inc. | Event-driven scheduling using directed acyclic graphs |
US10379968B2 (en) * | 2017-05-05 | 2019-08-13 | Pivotal Software, Inc. | Backup and restore framework for distributed computing systems |
US11150973B2 (en) * | 2017-06-16 | 2021-10-19 | Cisco Technology, Inc. | Self diagnosing distributed appliance |
US10642648B2 (en) | 2017-08-24 | 2020-05-05 | Futurewei Technologies, Inc. | Auto-adaptive serverless function management |
US10416974B2 (en) * | 2017-10-06 | 2019-09-17 | Chicago Mercantile Exchange Inc. | Dynamic tracer message logging based on bottleneck detection |
CN108228356B (zh) * | 2017-12-29 | 2021-01-15 | 华中科技大学 | 一种流数据的分布式动态处理方法 |
US10776247B2 (en) | 2018-05-11 | 2020-09-15 | International Business Machines Corporation | Eliminating runtime errors in a stream processing environment |
CN110968327B (zh) * | 2018-09-29 | 2023-07-18 | 中国电信股份有限公司 | 服务系统及其部署方法 |
US10936367B2 (en) * | 2018-10-28 | 2021-03-02 | Microsoft Technology Licensing, Llc | Provenance driven job relevance assessment |
US11334575B2 (en) | 2019-01-30 | 2022-05-17 | International Business Machines Corporation | Integrating relational database temporal tables with a distributed programming environment |
US11360983B2 (en) * | 2019-03-01 | 2022-06-14 | Hitachi Vantara Llc | Techniques for processing of data in motion |
US11537446B2 (en) * | 2019-08-14 | 2022-12-27 | Microsoft Technology Licensing, Llc | Orchestration and scheduling of services |
US11080109B1 (en) * | 2020-02-27 | 2021-08-03 | Forcepoint Llc | Dynamically reweighting distributions of event observations |
US11126414B1 (en) | 2020-03-13 | 2021-09-21 | RedLore | Method and system for changing the behavior of a connected field device |
US11693926B2 (en) * | 2020-05-22 | 2023-07-04 | Accenture Global Solutions Limited | Neuromorphic experiential system |
WO2022267062A1 (en) * | 2021-06-25 | 2022-12-29 | Microsoft Technology Licensing, Llc | Click-to-scipt reflection |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030149717A1 (en) * | 2002-02-05 | 2003-08-07 | William Heinzman | Batch processing job streams using and/or precedence logic |
US7660705B1 (en) * | 2002-03-19 | 2010-02-09 | Microsoft Corporation | Bayesian approach for learning regression decision graph models and regression models for time series analysis |
US10210071B1 (en) * | 2006-07-14 | 2019-02-19 | At&T Mobility Ip, Llc | Delta state tracking for event stream analysis |
US8219848B2 (en) | 2007-04-10 | 2012-07-10 | International Business Machines Corporation | Mechanism for recovery from site failure in a stream processing system |
US8417762B2 (en) | 2007-04-10 | 2013-04-09 | International Business Machines Corporation | Mechanism for execution of multi-site jobs in a data stream processing system |
US8069190B2 (en) | 2007-12-27 | 2011-11-29 | Cloudscale, Inc. | System and methodology for parallel stream processing |
US8903802B2 (en) * | 2008-03-06 | 2014-12-02 | Cisco Technology, Inc. | Systems and methods for managing queries |
US8370493B2 (en) * | 2008-12-12 | 2013-02-05 | Amazon Technologies, Inc. | Saving program execution state |
US8713578B2 (en) * | 2009-03-25 | 2014-04-29 | International Business Machines Corporation | Managing job execution |
US8949801B2 (en) | 2009-05-13 | 2015-02-03 | International Business Machines Corporation | Failure recovery for stream processing applications |
US8949210B2 (en) * | 2010-05-13 | 2015-02-03 | Microsoft Corporation | Analysis stack for complex event flows |
US8595234B2 (en) | 2010-05-17 | 2013-11-26 | Wal-Mart Stores, Inc. | Processing data feeds |
US20110314019A1 (en) | 2010-06-18 | 2011-12-22 | Universidad Politecnica De Madrid | Parallel processing of continuous queries on data streams |
US8745434B2 (en) | 2011-05-16 | 2014-06-03 | Microsoft Corporation | Platform for continuous mobile-cloud services |
US9047560B2 (en) * | 2011-06-29 | 2015-06-02 | Microsoft Technology Licensing, Llc | Using event stream data to create a decision graph representing a race participant where leaf nodes comprise rates defining a speed of the race participant in a race simulation |
US8751643B2 (en) * | 2011-12-13 | 2014-06-10 | International Business Machines Corporation | Correlating event streams from independent processes in a complex business system using metadata associated with the transport interconnections |
US20130339473A1 (en) | 2012-06-15 | 2013-12-19 | Zynga Inc. | Real time analytics via stream processing |
US9223614B2 (en) * | 2012-06-26 | 2015-12-29 | Wal-Mart Stores, Inc. | Systems and methods for event stream processing |
WO2014019980A2 (en) * | 2012-08-03 | 2014-02-06 | Syddansk Universitet | Elastic execution of continuous mapreduce jobs over data streams |
US9298788B1 (en) * | 2013-03-11 | 2016-03-29 | DataTorrent, Inc. | Checkpointing in distributed streaming platform for real-time applications |
CN103440301B (zh) * | 2013-08-21 | 2017-06-13 | 曙光信息产业股份有限公司 | 一种数据多副本混合存储方法及系统 |
US9529882B2 (en) * | 2014-06-26 | 2016-12-27 | Amazon Technologies, Inc. | Coordinated suspension of replication groups |
-
2014
- 2014-07-01 US US14/320,706 patent/US9641580B2/en active Active
-
2015
- 2015-06-26 TW TW104120779A patent/TW201610703A/zh unknown
- 2015-06-30 WO PCT/US2015/038407 patent/WO2016003951A1/en active Application Filing
- 2015-06-30 CN CN201580033436.3A patent/CN106462484B/zh active Active
- 2015-06-30 EP EP15739122.8A patent/EP3164801A1/en not_active Withdrawn
-
2017
- 2017-04-07 US US15/481,958 patent/US10225302B2/en active Active
-
2019
- 2019-01-16 US US16/249,357 patent/US11271981B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20170339202A1 (en) | 2017-11-23 |
WO2016003951A1 (en) | 2016-01-07 |
US20190166173A1 (en) | 2019-05-30 |
CN106462484B (zh) | 2019-08-20 |
US20160006779A1 (en) | 2016-01-07 |
US11271981B2 (en) | 2022-03-08 |
US9641580B2 (en) | 2017-05-02 |
EP3164801A1 (en) | 2017-05-10 |
CN106462484A (zh) | 2017-02-22 |
US10225302B2 (en) | 2019-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11271981B2 (en) | Distributed stream processing in the cloud | |
CN109716730B (zh) | 用于生产应用的自动化性能调试的方法和计算设备 | |
KR102693229B1 (ko) | 작업 스케쥴링 및 모니터링 기법 | |
Lu et al. | Log-based abnormal task detection and root cause analysis for spark | |
CN107077414B (zh) | 用于生产调试的诊断工作流程 | |
Akidau et al. | Millwheel: Fault-tolerant stream processing at internet scale | |
Sambasivan et al. | Diagnosing performance changes by comparing request flows | |
US9043788B2 (en) | Experiment manager for manycore systems | |
US9483383B2 (en) | Injecting faults at select execution points of distributed applications | |
US20130081005A1 (en) | Memory Management Parameters Derived from System Modeling | |
US20130232433A1 (en) | Controlling Application Tracing using Dynamic Visualization | |
US20150006961A1 (en) | Capturing trace information using annotated trace output | |
US10148719B2 (en) | Using anchors for reliable stream processing | |
WO2014025417A1 (en) | Execution environment with feedback loop | |
US11531536B2 (en) | Analyzing performance impacts of source code changes | |
WO2023165512A1 (zh) | 一种故障文件保存方法及相关装置 | |
JP2016100006A (ja) | パフォーマンス試験のためのベンチマーク・アプリケーションを生成する方法および装置 | |
Liu et al. | Optimizing shuffle in wide-area data analytics | |
Zvara et al. | Optimizing distributed data stream processing by tracing | |
Rauschmayr et al. | Profiling deep learning workloads at scale using amazon sagemaker | |
Ousterhout et al. | Performance clarity as a first-class design principle | |
US8671398B2 (en) | Working set profiler | |
van Dongen | Open stream processing benchmark: an extensive analysis of distributed stream processing frameworks | |
US20160299786A1 (en) | Code examination by scheduler timeline manipulation | |
Matar | Benchmarking fault-tolerance in stream processing systems |