AWS Kinesis leaseOwner 混乱

AWS Kinesis leaseOwner confusion

一个非常简单的应用程序 运行 在一个 Spark 集群上有 2 个工人,使用 Kinesis 和 2 个分片。

然后我检查了北弗吉尼亚地区的 Kinesis Streams Application State on DynamoDB(在此屏幕截图中显示)。

我时不时地启动和停止 worker,我刚刚注意到,当 2 个分片的 leaseOwner 是同一个 worker 时,应用程序工作正常。

但是当我停止当前的 le​​aseOwner (10.0.7.63) 时,将会有一个 owner switch,新的 owner 将是另一个 worker (10.0.7.62),然后我的应用程序拉取数据并且没有从 Kinesis 返回数据(但是,与 Kinesis 的连接仍然存在)。

我的猜测是,当 owner 切换到另一个 worker 时,新 owner 上的检查点与 Kinesis 中剩余的不匹配,拉取数据将一无所获。

谁能解释一下这是怎么回事?我猜对了吗?

非常感谢。

首先友情提醒一下;使用主机名在应用程序的配置中定义 "workerID";它将帮助您使用更用户友好的名称。

其次,你确定shard-000收到数据了吗?也许您在消费者端设置了静态分区键,这导致数据仅堆叠在 shard-001 上?