2014年6月9日 星期一

平行運算的自動化流程錯誤!

一般對大數據(Big Data)在做平行運算的流程概念,不外乎分為三個步驟,分別是:
01.資料分割(Split):針對大數據的量,對可運算的處理器數量或處理器運算能力,做等量分割。
02.分析應用(Apply):針對分割後的資料,在不同的處理器,做相同或不同的運算。
03.膠黏結果(Combine):收集各個處理器計算後的結果,並將這些結果作適當的處理。

這樣的流程,對程式撰寫人員而言,很容易會想將流程自動化的思維。這樣的想法自然是沒有錯,但是很容易將三個步驟合併為一個處理流程,從開始到結束,只留下最終的合併結果,使得在過程中所分割的資料與運算資料的過程,變成了一個「黑箱作業」。假若結果沒有錯誤,那自然沒有問題。不過,一旦發生錯誤,對於整個平行運算的過程,則完全無法追溯。導致除錯困難也不易找到原因。

基於為了避免這樣的情事發生,比較好的方式是將每一步驟都留下相對應的檔案,如此變未來若有任何錯誤發生時,才方便針對錯誤的追查,以節省時間。例如:

黑箱平行運算流程:
01.資料分割:大數據→(分割)→資料一、資料二、資料三、…
02.分析應用:資料一、資料二、資料三、…→(分析應用)→運算結果一、運算結果二、運算結果三、…
03.膠黏結果:運算結果一、運算結果二、運算結果三、…→(膠黏)→最後結果→(儲存)

平行運算流程:
01.資料分割:大數據→(分割)→資料一、資料二、資料三、…→(儲存)
02.分析應用:資料一、資料二、資料三、…→(分析應用)→運算結果一、運算結果二、運算結果三、…→(儲存)
03.膠黏結果:運算結果一、運算結果二、運算結果三、…→(膠黏)→最後結果→(儲存)

如此便可將所有過程與運算結果作相對應的儲存,雖然缺點是比較佔據硬碟空間,但比起運算錯誤後,需要重新運算所流逝的時間相比,失去的硬碟空間便顯得微不足道了。


關鍵字:大數據(Big Data)、平行運算(parallel computing)、平行運算流程(parallel computing flow chart)

沒有留言:

張貼留言