我正在處理數據流的apache flink,我有幾個問題。任何幫助是極大的讚賞。謝謝。Flink窗口和狀態維護
1)創建翻滾窗口是否有任何限制。例如,如果我想爲每個用戶ID創建一個滾動窗口2秒,並且假設我有超過1000萬個用戶ID,那會是一個問題。 (我使用keyBy用戶ID,然後創建timeWindow 2秒)?這些窗口如何在flink內部維護?
2)我看着重新平衡循環分區。假設我設置了一個集羣,並且如果我的源並行度爲1,並且如果我進行了重新平衡,我的數據是否會跨機器混洗以提高性能?如果是這樣,是否有一個特定端口用於將數據傳輸到集羣中的其他節點?
3)狀態維護有沒有限制?我打算保留一些用戶ID相關的數據,這些數據可能會變得非常大。我讀了關於flink使用rocks db來維護狀態。只是想檢查一下可以維護多少數據是否有任何限制?
4)還有,如果數據量較少,狀態是否維持? (我猜在JVM內存中)如果我的集羣上有幾臺機器,每個節點都可以獲得當前的狀態版本?
非常感謝您的回答。我只是有一些後續問題。 – Neoster
如果運算符狀態不是全局的,那麼可以說,如果我想維護一個子任務本地的以前的計算狀態,那麼有沒有辦法確保下一個數據進入同一個用戶id進入同一個子任務?如果沒有,那麼你是否應該使用集中式緩存來實現這一目標,而不是維護flink中的狀態? – Neoster
另外我試圖找到一種方法將外部配置更改發送到flink。例如,對於每個計算,都有很少的參數需要考慮。比方說,一個新的參數被添加,必須考慮新的計算,那麼有沒有辦法將這個改變發送到flink並且具有集中配置狀態? – Neoster