使用带有2个分片的Kinesis在Spark集群上运行的一个非常简单的应用程序。
我查看北弗吉尼亚州的Kinesis Streams Application State on DynamoDB(在此截图中显示)。
我不时地启动和停止工作,我只是注意到,当2个分片的leaseOwner是同一个工作者时,应用程序正常工作。
但是当我停止当前的leaseOwner(10.0.7.63)时,将会有一个所有者开关,新的所有者将是另一个工作者(10.0.7.62),然后我的应用程序提取数据并且没有从Kinesis返回的数据(但是,与Kinesis的联系仍然存在。)
我的猜测是,当所有者切换到另一个工作人员时,新所有者的检查点与Kinesis内部的检查点不匹配,并且拉动数据将一无所获。
有人可以解释一下这里发生了什么吗?我猜对了吗?
非常感谢。
答案 0 :(得分:0)
首先,只是一个友好的提醒;定义" workerID"在使用主机名的应用程序配置中;它将帮助您获得更多用户友好的名称。
其次,你确定shard-000接收数据吗?也许你在消费者方面设置了一个静态分区键,这导致数据只堆叠在shard-001上?