【问题标题】:How to increase the number of executors that process a certain stage in Spark Streaming/Kafka?如何增加 Spark Streaming/Kafka 中处理某个阶段的 executor 数量?
【发布时间】:2018-08-28 03:45:42
【问题描述】:

我正在尝试使用 Spark Streaming Direct 方法从 Kafka(1 个主题,5 个分区)读取数据。为了增加处理数据的并行度,我设置了Dstream.repartition(60)。但是,每批流的每个阶段似乎只有 5 个执行器在运行?

我已经设置了这些参数:

--num-executors 20 
--executor-cores 4
--executor-memory 3G
--driver-memory 3G
--spark.default.Parallelism 60

我的困惑是:
我想减少处理时间,所以我尝试增加Vcores的数量,但是这种方法似乎不起作用。为什么?谢谢。

【问题讨论】:

    标签: apache-spark apache-kafka spark-streaming


    【解决方案1】:

    (1 个主题,5 个分区)使用 Spark Streaming Direct 方法.... 似乎只有 5 个执行器在运行

    这就是你将要得到的一切。每个主题分区不能有多个消费者。

    获得 Spark(或任何 Kafka 消费者组)的唯一方法是扩展更多执行器,即重新分区主题本身,这与 Spark 中的重新分区是不同的术语

    注意:增加一个topic的partition数量是可以的,但是对于repartition之前写入的最后一条消息的topic的保留策略,message的key将不再是一对一的

    重新分区主题后,我认为您必须重新启动 Spark 应用程序,因为它不会动态获取新主题数据

    【讨论】:

    • 对不起我的错误。这真的很奇怪。我检查了结果,发现当我如上所述设置Dstream.repartition(60) --num-executors 20 --executor-cores 4时,启动了20个executor。一切都好。我描述的问题出现在我设置Dstream.repartition(100) ,--num-executors 50 ,--executor-cores 2..如何解释?
    • 我不确定,但您仍然只能拥有与主题一样多的初始执行者。我相信,Spark 中的重新分区可能是昂贵的运算符,并且取决于消息的键
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2021-05-22
    • 2020-09-03
    • 2016-06-07
    • 2018-10-26
    • 1970-01-01
    • 2018-07-15
    相关资源
    最近更新 更多