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