我们的情况是:将 Spark 流与 AWS Kinesis 结合使用。
如果将 Spark master 指定为“ local[32] ”,则 Spark 可以相当快地使用来自 Kinesis 的数据。
但是如果我们切换到一个有 1 个 master 和 3 个 worker 的集群(在 4 台不同的机器上),并将 master 设置为“ spark://[IP]:[port] ”,那么 Spark 集群消耗数据的速度非常慢速度。该集群有 3 台工作机器,每台工作机器有 1 个核心。
我正在尝试加快消耗速度,因此我在每台工作机器上添加了更多执行程序,但这并没有太大帮助,因为每个执行程序至少需要 1 个核心(而我的工作机器只有 1 个核心)。我还阅读了添加更多Kinesis分片数将有助于扩大规模,但我只想最大化我的读取容量。
由于“内存中”模式可以足够快地消耗,是否也可以在每台工作机器上启动多个“Kinesis 记录处理器线程”,如下图所示?或者在 1 个内核中启动多个线程以从 Kinesis 消耗?
非常感谢。
下图来自https://spark.apache.org/docs/1.2.0/streaming-kinesis-integration.html