【问题标题】:start multiple processor threads on Spark worker within one core在一个核心内的 Spark worker 上启动多个处理器线程
【发布时间】: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


    【解决方案1】:

    原来和集群的资源有关。

    对于 AWS Kinesis,一个 Kinesis 流需要一个来自 Spark 集群的接收器,一个接收器将从 Spark 工作器获取一个核心。

    我将每个worker的核心增加到4个核心,然后executors有额外的核心来运行作业。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 2020-12-05
      • 2012-08-30
      • 2015-12-29
      • 1970-01-01
      相关资源
      最近更新 更多