一個非常簡單的應用程序,在2個工人的Spark集羣上運行,使用Kinesis和2個碎片。AWS Kinesis leaseOwner混淆
我在North Virginia地區檢查Kinesis Streams Application State on DynamoDB(在此屏幕截圖中顯示)。
我不時開始和停止工作,我剛剛注意到,當2個分片的leaseOwner是同一個工人時,應用程序工作正常。
但是,當我停止當前leaseOwner(10.0.7.63),那麼將有一個所有者開關,新的所有者將是另一個工人(10.0.7.62),那麼我的應用程序將提取數據並且沒有從Kinesis返回的數據(但是,與Kinesis的連接仍在)。
我的猜測是,當所有者切換到另一個工作人員時,新所有者的檢查點與Kinesis內部的檢查點不匹配,並且拉取數據不會得到任何結果。
任何人都可以請解釋一下這裏發生了什麼?我猜對了嗎?
非常感謝。
首先,只是一個友好的提醒;在主機名的應用程序配置中定義「workerID」;它會幫助你更多用戶友好的名字。 其次,你確定shard-000接收數據嗎?也許你已經在客戶端設置了一個靜態分區鍵,這導致數據只在shard-001上堆疊? – az3
@ az3哦,你是對的!我正在使用靜態分區密鑰!我自己忘了...非常感謝你幫助我:) – keypoint
@ az3 - 建議把這個作爲答案:) – Krease