【发布时间】:2016-05-03 11:10:28
【问题描述】:
一个非常简单的应用程序,在具有 2 个工作器的 Spark 集群上运行,使用带有 2 个分片的 Kinesis。
我检查了北弗吉尼亚地区的Kinesis Streams Application State on DynamoDB(显示在此屏幕截图中)。
我不时启动和停止worker,我只是注意到,当2个分片的leaseOwner是同一个worker时,应用程序工作正常。
但是当我停止当前的 LeaseOwner (10.0.7.63) 时,会有一个所有者切换,新的所有者将是另一个工人 (10.0.7.62),然后我的应用程序提取数据并且没有从 Kinesis 返回数据(但是,与 Kinesis 的连接仍在)。
我的猜测是,当所有者切换到另一个工作人员时,新所有者上的检查点与 Kinesis 中剩余的内容不匹配,拉取数据将一无所获。
谁能解释一下这里发生了什么?我猜对了吗?
非常感谢。
【问题讨论】:
-
首先友情提示一下;使用主机名在应用程序的配置中定义“workerID”;它将帮助您使用更用户友好的名称。其次,你确定 shard-000 接收到数据吗?也许您在消费者端设置了一个静态分区键,这导致数据仅堆叠在 shard-001 上?
-
@az3 哦,你是对的!我正在使用静态分区键!我自己忘记了...非常感谢您帮助我:)
-
@az3 - 建议将其作为答案:)
-
我会重写它作为答案,谢谢!
标签: amazon-web-services apache-spark amazon-dynamodb spark-streaming amazon-kinesis