AWS Kinesis leaseOwner 混乱
AWS Kinesis leaseOwner confusion
一个非常简单的应用程序 运行 在一个 Spark 集群上有 2 个工人,使用 Kinesis 和 2 个分片。
然后我检查了北弗吉尼亚地区的 Kinesis Streams Application State on DynamoDB(在此屏幕截图中显示)。
我时不时地启动和停止 worker,我刚刚注意到,当 2 个分片的 leaseOwner 是同一个 worker 时,应用程序工作正常。
但是当我停止当前的 leaseOwner (10.0.7.63) 时,将会有一个 owner switch,新的 owner 将是另一个 worker (10.0.7.62),然后我的应用程序拉取数据并且没有从 Kinesis 返回数据(但是,与 Kinesis 的连接仍然存在)。
我的猜测是,当 owner 切换到另一个 worker 时,新 owner 上的检查点与 Kinesis 中剩余的不匹配,拉取数据将一无所获。
谁能解释一下这是怎么回事?我猜对了吗?
非常感谢。
首先友情提醒一下;使用主机名在应用程序的配置中定义 "workerID";它将帮助您使用更用户友好的名称。
其次,你确定shard-000收到数据了吗?也许您在消费者端设置了静态分区键,这导致数据仅堆叠在 shard-001 上?
一个非常简单的应用程序 运行 在一个 Spark 集群上有 2 个工人,使用 Kinesis 和 2 个分片。
然后我检查了北弗吉尼亚地区的 Kinesis Streams Application State on DynamoDB(在此屏幕截图中显示)。
我时不时地启动和停止 worker,我刚刚注意到,当 2 个分片的 leaseOwner 是同一个 worker 时,应用程序工作正常。
但是当我停止当前的 leaseOwner (10.0.7.63) 时,将会有一个 owner switch,新的 owner 将是另一个 worker (10.0.7.62),然后我的应用程序拉取数据并且没有从 Kinesis 返回数据(但是,与 Kinesis 的连接仍然存在)。
我的猜测是,当 owner 切换到另一个 worker 时,新 owner 上的检查点与 Kinesis 中剩余的不匹配,拉取数据将一无所获。
谁能解释一下这是怎么回事?我猜对了吗?
非常感谢。
首先友情提醒一下;使用主机名在应用程序的配置中定义 "workerID";它将帮助您使用更用户友好的名称。
其次,你确定shard-000收到数据了吗?也许您在消费者端设置了静态分区键,这导致数据仅堆叠在 shard-001 上?