Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark流句柄倾斜Kafka分区_Apache Spark_Apache Kafka_Spark Streaming - Fatal编程技术网

Apache spark Spark流句柄倾斜Kafka分区

Apache spark Spark流句柄倾斜Kafka分区,apache-spark,apache-kafka,spark-streaming,Apache Spark,Apache Kafka,Spark Streaming,场景: 卡夫卡->火花流 每个Spark流媒体微批次中的逻辑(30秒): 阅读Json->解析Json->发送给卡夫卡 我的流媒体工作是读取大约1000个Kafka主题,大约10K个Kafka分区,吞吐量大约500万个事件/s 问题在于Kafka分区之间的流量负载不均衡,一些分区的吞吐量大约是较小分区的50倍,这会导致RDD分区倾斜(因为KafkaUtils创建了从Kafka分区到Spark分区的1:1映射),并真正影响了整体性能,因为对于每个微批次,大多数执行者都在等待负载最大的一个完成,我通

场景:
卡夫卡->火花流

每个Spark流媒体微批次中的逻辑(30秒):
阅读Json->解析Json->发送给卡夫卡

我的流媒体工作是读取大约1000个Kafka主题,大约10K个Kafka分区,吞吐量大约500万个事件/s

问题在于Kafka分区之间的流量负载不均衡,一些分区的吞吐量大约是较小分区的50倍,这会导致RDD分区倾斜(因为KafkaUtils创建了从Kafka分区到Spark分区的1:1映射),并真正影响了整体性能,因为对于每个微批次,大多数执行者都在等待负载最大的一个完成,我通过查看Spark UI了解到这一点,在每个微批次的某个点上,只有少数执行者有“活动”任务,所有其他执行者都完成了任务并等待,同样通过查看任务时间分布,最大值为2.5分钟,但中位数仅为20秒

注:

  • Spark流媒体不是结构化流媒体
  • 我知道这篇文章,我不是在问重新分区()或合并()之间的区别,加载是一致的,所以也与自动缩放或动态分配无关
  • 我尝试的是:

  • Coalesce()有一点帮助,但不能消除偏差,有时甚至更糟,还会给执行者带来更高的风险
  • Repartition()确实可以消除偏斜,但在这种规模下,完全洗牌成本太高,惩罚不会对每个批次的执行时间产生回报,增加批次时间也不起作用,因为当批次时间增加时,每个微批次的负载会增加,洗牌的工作量也会增加

  • 如何使工作负载在Spark执行器之间更均匀地分布,以便更有效地使用资源?性能会更好吗

    实际上你已经给出了自己的答案

    不要从1000个主题中读取1个流作业。将负载最大的任务放入单独的流作业中。重新配置,很简单。负载平衡,排队论


    散乱者是Spark中的一个问题,尽管散乱者在Spark中表现出稍微不同的特征

    这个问题仍然有机会被看到和回答。仅仅因为两个人发现它没有用并不意味着它不会被回答。请不要在评论中冒犯我们,这将增加最终有人回答或帮助您的机会。您可以尝试更新问题以使其更好,也可以改变主意并删除它。投票和结束也是我们给你反馈的方式。也许一些卡夫卡专家会来指导你如何提高问题的质量。尽量不要读太多。你不需要因为某人决定否决某个问题就删除它。即使这个问题不受欢迎,也许你的下一个问题也会成功。请不要在你问题下的评论中大喊大叫。如果你有改进的想法,那就把它带到办公室。我很清楚,即使我向你们解释了什么是反对票,你们仍然不明白评级是如何运作的。我可以争辩说,任何想投票的人都应该留下一条强制性的评论,但你可以看到这会变得多么可笑。你把选票看得太个人了。你的生活并不依赖于他们。这种偏斜是如何发生的?来源是什么?你能影响将其放入不同的分区吗?即feed?@thebluephantom偏斜来自Kafka主题,Kafka主题之间的数据量差异非常大(大约50倍),这导致了Spark分区偏斜(因为Spark为每个Kafka分区创建1个RDD分区)