我正在设置spark提交作业,以每秒处理超过60k个事件。我的批处理内部驱动程序,执行程序,节点,核心设置应该是什么,以处理该负载。
我尝试了从1分钟到10分钟的批处理间隔。 执行器的内存从4GB到30G,核心数为10到60。
spark-submit --conf“ spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version = 2” --master spark:// masterURL:7077 --deploy-mode cluster --driver-memory 30g --num-执行者60-执行者核心10-执行者内存30g --conf“ spark.scheduler.mode = FAIR”-类“ MainClass” SampleJar.jar
计划的批次间隔应在下一个计划之前完成
答案 0 :(得分:0)
最终,在苦苦挣扎一堆不同的配置并阅读了大部分性能块后,我们提出了内存调整建议。我找到了解决办法。 就实施而言,这几乎是直截了当的。
问题是kafka吞吐量与流处理能力不匹配。
通过将JavaInputDStream分区更改为更大的数字(num),可以解决问题。
这将启动更多线程以在spark集群处进行处理,而spark将带来更多并行处理。卡夫卡分区的数量总是会打击其他流作业。
希望这将有助于解决某人的问题。