开发者社区> 问答> 正文

如何对Spark streaming进行性能优化?

如何对Spark streaming进行性能优化?

展开
收起
xin在这 2021-12-06 01:10:38 254 0
1 条回答
写回答
取消 提交回答
  • 1.降低批次处理时间:

    ①数据接收并行度。

    (1)增加DStream:接收网络数据(如Kafka,flume,Socket等)时会对数据进行反序列化再存储在Spark,由于一个DStream只有Receiver对象,如果成为瓶颈可考虑增加DStream。

    (2)设置”spark.streaming.blockInterval”参数:接受的数据被存储在Spark内存前,会被合并成block,而block数量决定了task数量;举例,当批次时间间隔为2秒且block时间间隔为200毫秒时,Task数量约为10;如果Task数量过低,则浪费了cpu资源;推荐的最小block时间间隔为50ms。

    (3)显式对Input DStream重新分区:再进行更深层次处理前,先对输入数据进行重新分区。

    ②数据处理并行度:reduceByKey,reduceByKeyAndWindow等operation可通过设置”spark.default.parallelism”参数或显式设置并行度方法参数控制。

    ③数据序列化:可配置更高效的kryo序列化。

    2.设置合理批次时间间隔:

    ①原则:处理数据的速度应大于或等于数据输入的速度,即批次处理时间大于或等于批次时间间隔。

    ②方法:

    (1)先设置批次时间间隔为5~10秒数据输入速度;

    (2)再通过查看log4j日志中的”Total delay”,逐步调整批次时间间隔,保证”Total delay”小于批次时间间隔。

    3.内存调优:

    ①持久化级别:开启压缩,设置参数”spark.rdd.compress”;

    ②GC策略:在Driver和Executor上开启CMS(Content Management System 内容管理系统)

    2021-12-06 08:09:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载