2015-09-18 101 views
1

我正在尋找一種方法將來自文件的日誌數據流式傳輸到我們的數據庫中。我一直在閱讀關於Spark streamingStorm管理實時,但我不知道如何管理數據未處理,因爲停工。Spark從停止恢復

我的意思是,假設系統正在運行並且數據是實時處理的,突然系統停止並在10分鐘後重新啓動。有沒有辦法處理這個懸而未決的數據而不影響實時流?

感謝

回答

1

例如你需要從一個可靠的數據源,它保存收到的消息看,並允許消費者從它停止的位置繼續Storm。這樣的數據源的一個例子是kafka

Kafka的情況下,直播流不會停止,因爲您的消費者(風暴,火花或任何您正在使用的)停止。卡夫卡將繼續收到消息,並將繼續向訂閱特定流的客戶提供消息。

容錯的關鍵在於您選擇的系統分配您的直播流,而不是您選擇處理它的工具。只要郵件系統允許,處理工具就可以隨時從其停止的位置恢復並繼續處理

另一個可以處理消費者失敗的消息系統代理是Rabbit MQ

+0

謝謝,卡夫卡在我心中。我期待的是,之前沒有清楚的是,Spark或Storm可以如何處理流式傳輸和批量數據。回來之後,將存儲需要處理的數據,並且可能需要數小時的數據,但它不會影響流式傳輸過程,因爲我總是需要在監控系統上顯示實時數據。 有沒有什麼辦法可以讓卡夫卡將消息轉移到另一個主題,例如,如果它在X秒後沒有被消耗掉?這樣可以有一個實時消費者和一個批次,對嗎? Thanks in advace – GBrian

+0

@GBrian如果你想處理批處理數據,你需要先將它複製到某個地方,比如hdfs(例如你可以使用Camus將數據從kafka複製到hdfs),然後處理你的批處理(通常這意味着Hadoop或火花)。您不能通過kafka運行批處理作業。我有我的kafka話題持有7天,但這只是爲了確保如果出現錯誤(例如加繆停止工作)我有7天的時間來修復它,在數據被丟棄之前... –

+0

@GBrian而不是火花Stream和Spark Ba​​tch不是一回事。風暴只是實時的 –