Apache spark 火花流任务分配
我有一个spark流媒体程序,它使用Apache spark 火花流任务分配,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我有一个spark流媒体程序,它使用updateStateByKey。 当我在有3台机器的集群上运行它时,所有的updateStateByKey任务(这些是繁重的任务)都在一台机器上运行。这会导致输入调度延迟,而其他机器有空闲的CPU 我更改了工作人员的数量,但所有updateStateByKey任务都在一台特定机器上的工作人员上运行。我还尝试使用mapWithState代替updateStateByKey,但也有同样的问题 我如何告诉spark优先在所有机器上分配任务 JavaPair
updateStateByKey
。
当我在有3台机器的集群上运行它时,所有的updateStateByKey
任务(这些是繁重的任务)都在一台机器上运行。这会导致输入调度延迟,而其他机器有空闲的CPU
我更改了工作人员的数量,但所有updateStateByKey
任务都在一台特定机器上的工作人员上运行。我还尝试使用mapWithState
代替updateStateByKey
,但也有同样的问题
我如何告诉spark优先在所有机器上分配任务
JavaPairInputDStream<String, String> streamEvents = KafkaUtils.createDirectStream(
jssc, String.class, String.class, StringDecoder.class, StringDecoder.class, kafkaParams, eventTopic
);
JavaPairDStream<String, String> newKeys = streamEvents.flatMapToPair(new KeyGenerator(zookeeperHosts));
JavaPairDStream<String, String> scenarioKeys =
newKeys.updateStateByKey(new HeavyKeysFunc(), 36);
JavaPairInputStreamEvents=KafkaUtils.createDirectStream(
jssc、String.class、String.class、StringDecoder.class、StringDecoder.class、kafkaParams、eventTopic
);
JavaPairDStream newKeys=streamvents.flatMapToPair(新的KeyGenerator(zookeeperHosts));
JavaPairDStream场景键=
updateStateByKey(newHeavyKeysFunc(),36);
作业已排队,CPU几乎处于空闲状态。您是否检查了Spark UI以查看每个RDD有多少个分区?您如何创建流作业(流源)?你能添加密码吗?@YuvalItzchakov是的!我将分区数改为36,但有同样的问题。@maasg我使用
KafkaUtils.createDirectStream
在一台单独的机器上用2个分区从Kafka读取。添加您的代码,以便我们可以尝试提供帮助。