至少一個階段中的輸入輸出的特性。
[0024]如以上所描述的,目標(biāo)作業(yè)是指待處理的作業(yè),并且其將要在至少一個階段中被并行處理。同樣地,歷史作業(yè)是指已被處理的作業(yè),例如被記錄在作業(yè)處理系統(tǒng)、諸如Hadoop系統(tǒng)的日志中的作業(yè)。歷史作業(yè)的數(shù)量可以是一個或多個,本發(fā)明的實施例在此不作限定。在一些實施例中,歷史作業(yè)可以是基于目標(biāo)作業(yè)的輸入數(shù)據(jù)中已被處理的部分?jǐn)?shù)據(jù)而獲得的。例如,在一個實施例中,當(dāng)系統(tǒng)中沒有記錄與目標(biāo)作業(yè)相關(guān)的歷史作業(yè)時,可以對目標(biāo)作業(yè)的輸入數(shù)據(jù)進行采樣,并按照目標(biāo)作業(yè)的處理邏輯處理采樣后的部分輸入數(shù)據(jù),從而獲得歷史作業(yè)。
[0025]在目標(biāo)作業(yè)和/或歷史作業(yè)的每個階段的處理中,作業(yè)可以具有一個或多個任務(wù)。這些任務(wù)可以被分配到一個或多個計算節(jié)點上并行處理。如果作業(yè)包括兩個或以上的階段,第一個階段中的任務(wù)的輸入可以是由用戶/開發(fā)人員提供的輸入數(shù)據(jù),中間階段中的任務(wù)的輸入是上一階段中的任務(wù)的輸出數(shù)據(jù),并且最后階段中的任務(wù)的輸出數(shù)據(jù)可以作為該作業(yè)的最終輸出。
[0026]作為示例,基于MapReduce框架的作業(yè)可以在兩個階段中被處理:映射(map)階段和化簡(reduce)階段。映射階段的任務(wù)(或簡稱映射任務(wù))的輸出數(shù)據(jù)將作為化簡階段的任務(wù)(或簡稱化簡任務(wù))的輸入數(shù)據(jù),而化簡任務(wù)的輸出數(shù)據(jù)將是該作業(yè)的最終輸出數(shù)據(jù)。
[0027]作業(yè)的處理會涉及到計算資源、存儲資源、I/O資源等多種資源。由于作業(yè)的每個任務(wù)均有各自的輸入和輸出,這些資源的開銷往往與任務(wù)的輸入數(shù)據(jù)和輸出數(shù)據(jù)有關(guān)。例如,中間階段的輸出數(shù)據(jù)(下一階段的輸入數(shù)據(jù))過大,可能會造成本地磁盤空間不足、因磁盤讀寫量過大而導(dǎo)致的讀寫緩慢或者下一階段的任務(wù)的計算速度緩慢等問題。因此,本發(fā)明實施例的目的在于根據(jù)歷史作業(yè)的輸入輸出的特性來預(yù)測目標(biāo)作業(yè)的輸入輸出的特性,以便前瞻性地發(fā)現(xiàn)作業(yè)處理系統(tǒng)的故障并給出相應(yīng)的告警。
[0028]在一些實施例中,歷史作業(yè)與目標(biāo)作業(yè)可以具有相同的處理邏輯。在確定目標(biāo)作業(yè)的輸入輸出的特性時,基于歷史作業(yè)的輸入數(shù)據(jù)大小和輸出數(shù)據(jù)大小,確定目標(biāo)作業(yè)的輸入數(shù)據(jù)和輸出數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系。為討論方便起見,將該關(guān)聯(lián)關(guān)系稱為“第一關(guān)聯(lián)關(guān)系”。在這里,第一關(guān)聯(lián)關(guān)系可以用于指示目標(biāo)作業(yè)的輸入輸出的特性。由于歷史作業(yè)的處理邏輯與目標(biāo)作業(yè)的處理邏輯相同,目標(biāo)作業(yè)的輸入和輸出的比率與歷史作業(yè)的輸入和輸出的比率同樣可能具有相似性。因此,所確定的第一關(guān)聯(lián)關(guān)系可以在隨后被用于確定目標(biāo)作業(yè)的輸出數(shù)據(jù)的大小。特別地,在一個實施例中,第一關(guān)聯(lián)關(guān)系可以指示一個固定的輸入和輸出的比率。在另一個實施例中,第一關(guān)聯(lián)關(guān)系可以指示輸入和輸出的函數(shù)關(guān)系。第一關(guān)聯(lián)關(guān)系還可以以其他方式來指示目標(biāo)作業(yè)的輸入輸出的特性,本發(fā)明的實施例在此方面不受限制。
[0029]在以上的實施例中,第一關(guān)聯(lián)關(guān)系是從目標(biāo)作業(yè)的整體來考慮的輸入輸出特性,而無論目標(biāo)作業(yè)僅僅具有一個階段,還是具有多個階段。在目標(biāo)作業(yè)具有多個階段的實施例中,目標(biāo)作業(yè)可以在多個階段之一(也可以被稱為“中間階段”)中具有中間任務(wù)。類似地,歷史作業(yè)同樣可以在特定的中間階段具有中間任務(wù),例如稱為“歷史中間任務(wù)”。在某些情況下,歷史任務(wù)的歷史中間任務(wù)與目標(biāo)作業(yè)的中間任務(wù)可以具有相同的處理邏輯。此時,目標(biāo)作業(yè)的中間任務(wù)的輸入和輸出的比率與歷史中間任務(wù)將具有相似性。因此,在確定目標(biāo)作業(yè)的輸入輸出的特性時,還可以基于歷史中間任務(wù)的輸入數(shù)據(jù)大小和輸出數(shù)據(jù)大小,確定目標(biāo)作業(yè)關(guān)于中間任務(wù)的輸入數(shù)據(jù)與輸出數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系。為討論方便起見,該關(guān)聯(lián)關(guān)系被稱為“第二關(guān)聯(lián)關(guān)系”。
[0030]特別地,中間階段可以是目標(biāo)作業(yè)的任意階段,包括目標(biāo)作業(yè)的第一個階段。在一些情況下,中間階段可以不是目標(biāo)作業(yè)的最后一個階段,因為最后一個階段中的任務(wù)的最終輸出通常被存儲到相應(yīng)的文件系統(tǒng)而不是被存儲在計算節(jié)點的本地存儲。例如,對于基于MapReduce框架的目標(biāo)作業(yè)而言,中間階段可以是指映射階段,因為在映射階段之后還有化簡階段,其是該作業(yè)的最后一個階段。
[0031 ] 在一個實施例中,歷史作業(yè)的歷史中間任務(wù)并非一定要與目標(biāo)作業(yè)的中間任務(wù)處于相對應(yīng)的階段,只要中間任務(wù)與歷史中間任務(wù)具有相同的處理邏輯即可。例如,目標(biāo)作業(yè)在其第一階段的中間任務(wù)與歷史作業(yè)在其第二階段的歷史中間任務(wù)具有相同的邏輯,這是可能的。在另一個實施例中,目標(biāo)作業(yè)和歷史作業(yè)在其他階段的任務(wù)的處理邏輯可以相同或者不相同。例如,歷史作業(yè)也可以是基于MapReduce框架的作業(yè),并且歷史中間任務(wù)可以是指映射任務(wù)。在這個示例中,目標(biāo)作業(yè)和歷史作業(yè)的映射任務(wù)的處理邏輯相同,而化簡任務(wù)的處理可以相同或者不相同。
[0032]歷史作業(yè)可以具有一個或多個歷史中間任務(wù)。為了使得所確定的第二關(guān)聯(lián)關(guān)系在統(tǒng)計上更準(zhǔn)確,這些歷史中間任務(wù)的輸入數(shù)據(jù)大小和輸出數(shù)據(jù)大小均可以被考慮,只要它們具有與目標(biāo)作業(yè)的中間任務(wù)的處理相同的邏輯即可。特別地,在一個實施例中,第二關(guān)聯(lián)關(guān)系可以指示一個固定的輸入和輸出的比率。在另一個實施例中,第二關(guān)聯(lián)關(guān)系可以指示輸入和輸出的函數(shù)關(guān)系。第二關(guān)聯(lián)關(guān)系還可以以其他方式來指示目標(biāo)作業(yè)在該中間階段的輸入輸出的特性,本發(fā)明的實施例在此方面不受限制。
[0033]如上所述,在作業(yè)處理的中間階段所產(chǎn)生的輸出數(shù)據(jù)可以被暫時地存儲以便后續(xù)使用。在一些實施例中,每個中間任務(wù)的輸出數(shù)據(jù)通??梢砸砸粋€或多個記錄的格式被存儲。因此,為了表征目標(biāo)作業(yè)在中間階段的輸入輸出的特性,在一些實施例中,基于歷史中間任務(wù)的輸入數(shù)據(jù)大小和輸出記錄個數(shù),確定目標(biāo)作業(yè)關(guān)于中間任務(wù)的輸入數(shù)據(jù)與輸出記錄個數(shù)之間的關(guān)聯(lián)關(guān)系。為討論方便起見,該關(guān)聯(lián)關(guān)系被稱為“第三關(guān)聯(lián)關(guān)系”。特別地,在一個實施例中,第三關(guān)聯(lián)關(guān)系可以指示一個固定的輸入數(shù)據(jù)和輸出記錄的比率。在另一個實施例中,第三關(guān)聯(lián)關(guān)系可以指示輸入數(shù)據(jù)和輸出記錄的函數(shù)關(guān)系。第三關(guān)聯(lián)關(guān)系還可以以其他方式來指示目標(biāo)作業(yè)在該中間階段的輸入數(shù)據(jù)和輸出記錄的特性,本發(fā)明的實施例在此方面不受限制。
[0034]在一些實施例中,歷史中間任務(wù)的輸入數(shù)據(jù)可以被存儲在文件中,且輸入數(shù)據(jù)在文件中按行或列存儲。在這種情況下,可以基于文件的每一個或多個行或列的輸入數(shù)據(jù)和對應(yīng)的輸出記錄個數(shù),確定對應(yīng)的第三關(guān)聯(lián)關(guān)系。類似地,所確定的第三關(guān)聯(lián)關(guān)系可以是輸入數(shù)據(jù)與輸出記錄個數(shù)的固定比率或者是函數(shù)關(guān)系。
[0035]注意到,如果目標(biāo)作業(yè)在多個中間階段,對于同一階段中的中間任務(wù),可以確定相應(yīng)的第二關(guān)聯(lián)關(guān)系和第三關(guān)聯(lián)關(guān)系。
[0036]如以上所討論的,對于目標(biāo)作業(yè),可以基于歷史作業(yè)確定用于表征目標(biāo)作業(yè)在各個階段的輸入輸出的特性的第一關(guān)聯(lián)關(guān)系、第二關(guān)聯(lián)關(guān)系和第三關(guān)聯(lián)關(guān)系。在一些實施例中,針對目標(biāo)作業(yè),第一關(guān)聯(lián)關(guān)系、第二關(guān)聯(lián)關(guān)系和第三關(guān)聯(lián)關(guān)系中的一個或一些關(guān)聯(lián)關(guān)系可以被確定。在另外一些實施例中,除了這三個關(guān)聯(lián)關(guān)系之外,還可以確定其他的輸入和輸出的特征。所確定的輸入輸出的特性可以用于預(yù)測與目標(biāo)作業(yè)的處理相關(guān)聯(lián)的資源開銷。
[0037]繼續(xù)參照圖2,在步驟S202,基于輸入輸出的特性,計算與目標(biāo)作業(yè)的處理相關(guān)聯(lián)的資源開銷。如以上所討論的,與目標(biāo)作業(yè)的處理相關(guān)聯(lián)的資源開銷,例如計算資源、存儲資源和I/O資源的開銷,均與目標(biāo)作業(yè)在各個階段的輸入和輸出有關(guān)。因此,在計算資源開銷時,可以依據(jù)以上所計算的第一關(guān)聯(lián)關(guān)系、第二關(guān)聯(lián)關(guān)系和第三關(guān)聯(lián)關(guān)系中的一個或一些關(guān)聯(lián)關(guān)系來確定在相應(yīng)階段的資源開銷情況。
[0038]在步驟S203,響應(yīng)于資源開銷超過預(yù)定閾值,生成針對目標(biāo)作業(yè)的告警。例如,如果在步驟S202確定的存儲資源開銷大于可用的存儲資源開銷,可以生成相應(yīng)的告警。備選地或附加地,在一個實施例中,如果在步驟S202確定的讀寫資源開銷大于預(yù)定讀寫量,可以生成相應(yīng)的告警。在一個實施例中,所生成的告警可以僅指示在目標(biāo)作業(yè)被處理時系統(tǒng)將出現(xiàn)故障。在另一實施例中,告警還可以向用戶指示具體的故障,例如,向用戶指示存儲資源不足或者讀寫量過大。
[0039]以下將詳細(xì)討論與目標(biāo)作業(yè)的處理相關(guān)聯(lián)的資源開銷的計算以及相應(yīng)的告警的生成。
[0040]首先討論與第一關(guān)聯(lián)關(guān)系有關(guān)的資源開銷計算和告警生成。目標(biāo)作業(yè)的資源開銷首先與目標(biāo)作業(yè)的輸入數(shù)據(jù)相關(guān)聯(lián)。因此,在一些實施例中,在計算資源開銷之前,獲取目標(biāo)作業(yè)的輸入數(shù)據(jù)的屬性。輸入數(shù)據(jù)的屬性可以包括輸入數(shù)據(jù)的大小、數(shù)據(jù)分布、以及分塊大小中的至少一個。通常,在目標(biāo)作業(yè)被提取時,目標(biāo)作業(yè)的輸入數(shù)據(jù)連同輸入數(shù)據(jù)的屬性也被提交到相應(yīng)的存儲系統(tǒng)、例如分布式文件系統(tǒng)中。因此,可以直接從存儲系統(tǒng)中獲取輸入數(shù)據(jù)的屬性。
[0041]在一些實施例中,可以僅獲取目標(biāo)作業(yè)的輸入數(shù)據(jù)的大小,并且然后基于第一關(guān)聯(lián)關(guān)系以及輸入數(shù)據(jù)的大小,確定目標(biāo)作業(yè)在至少一個階段之后的輸出數(shù)據(jù)的大小。
[0042]例如,如果第一關(guān)聯(lián)關(guān)系指示目標(biāo)作業(yè)的輸入和輸出的比率是2:1,且目標(biāo)作業(yè)的輸入數(shù)據(jù)的大小是1GB,那么可以確定在目標(biāo)作業(yè)在至少一個階段中被并行處理之后,其輸出數(shù)據(jù)的大小是0.5GB。也就是說,基于第一關(guān)聯(lián)關(guān)系可