我正在使用Hadoop將現有的時間序列數據庫系統轉換爲MapReduce模型。數據庫系統具有歷史和實時處理能力。到目前爲止,我能夠將批處理功能轉換爲Hadoop。MapReduce連續執行
不幸的是,當涉及到實時處理時,我發現與MapReduce模型存在一些概念上的不一致。
我可以寫我自己的實現Hadoop的InputFormat接口,這將持續飼料與映射器的新數據,從而映射器可以處理和不斷發射數據。 但是,因爲沒有reduce()方法正在被調用,直到所有的mappers完成它們的執行,我的計算必然會停留在映射階段。
我見過一些提到mapred.reduce.slowstart.completed.maps
的帖子,但據我所知,這隻能控制減速器何時開始將數據拉到本地目的地(洗牌) - 實際縮減方法只有在所有的mappers完成之後纔會調用執行。
當然,通過使用連續的獨立MR作業流在小時間間隔內處理小批量數據,可以選擇模擬連續執行,但這會引入額外的延遲,這在我的情況下是不可接受的。
我也考慮過使用Storm或S4,但在進一步移動之前,我需要確保它不在Hadoop的範圍之內。
總之,人們似乎已經能夠開發實時Hadoop應用程序(如Impala)或基於Hadoop構建的實時處理解決方案。問題是如何?
我明白了,謝謝。我實際上看到了OpenTSDB的一瞥。不幸的是,我必須儘可能地保持現有的技術。此外,它不符合我正在處理的高頻市場的低延遲要求。 –