`

spark内核揭秘-14-Spark性能优化的10大问题及其解决方案

阅读更多

问题1:reduce task数目不合适

解决方案:

需要根据实际情况调整默认配置,调整方式是修改参数spark.default.parallelism。通常的,reduce数目设置为core数目的2-3倍。数量太大,造成很多小任务,增加启动任务的开销;数目太小,任务运行缓慢。所以要合理修改reduce的task数目即spark.default.parallelism

问题2:shuffle磁盘IO时间长

解决方案:

设置spark.local.dir为多个磁盘,并设置磁盘的IO速度快的磁盘,通过增加IO来优化shuffle性能;

问题3:map|reduce数量大,造成shuffle小文件数目多

解决方案:

通过设置spark.shuffle.consolidateFiles为true,来合并shuffle中间文件,此时文件数为reduce tasks数目;

问题4:序列化时间长、结果大

解决方案:

spark默认使用JDK 自带的ObjectOutputStream,这种方式产生的结果大、CPU处理时间长,可以通过设置spark.serializer为org.apache.spark.serializer.KeyoSerializer。

另外如果结果已经很大,那就最好使用广播变量方式了,结果你懂得。

问题5:单条记录消耗大

解决方案:

使用mapPartition替换map,mapPartition是对每个Partition进行计算,而map是对partition中的每条记录进行计算;

问题6 : collect输出大量结果时速度慢

解决方案:

collect源码中是把所有的结果以一个Array的方式放在内存中,可以直接输出到分布式的文件系统,然后查看文件系统中的内容;

问题7: 任务执行速度倾斜

解决方案:

如果数据倾斜,一般是partition key取得不好,可以考虑其他的并行处理方式,并在中间加上aggregation操作;如果是Worker倾斜,例如在某些Worker上的executor执行缓慢,可以通过设置spark.speculation=true 把那些持续慢的节点去掉;

 

问题8: 通过多步骤的RDD操作后有很多空任务或者小任务产生

解决方案:

使用coalesce或者repartition去减少RDD中partition数量;

问题9:Spark Streaming吞吐量不高

可以设置spark.streaming.concurrentJobs

问题10:Spark Streaming 运行速度突然下降了,经常会有任务延迟和阻塞

解决方案:

这是因为我们设置job启动interval时间间隔太短了,导致每次job在指定时间无法正常执行完成,换句话说就是创建的windows窗口时间间隔太密集了;

0
1
分享到:
评论

相关推荐

    spark-3.1.2.tgz & spark-3.1.2-bin-hadoop2.7.tgz.rar

    Spark-3.1.2.tgz和Spark-3.1.2-bin-hadoop2.7.tgz是两个不同格式的Spark发行版,分别以tar.gz和rar压缩格式提供。 1. Spark核心概念: - RDD(弹性分布式数据集):Spark的基础数据结构,是不可变、分区的数据集合...

    spark-assembly-1.5.2-hadoop2.6.0.jar

    Spark-assembly-1.5.2-hadoop2.6.0.jar中的优化包括RDD(弹性分布式数据集)的缓存策略、Task调度优化、内存管理优化等,以确保在大数据处理中实现高效的性能。 7. 开发和调试: 开发者在本地开发时,可以直接...

    spark-2.3.4-bin-hadoop2.7.tgz

    在本案例中,我们关注的是Spark的2.3.4版本,它预编译为与Hadoop 2.7兼容的版本,打包成"spark-2.3.4-bin-hadoop2.7.tgz"的压缩文件。这个压缩包包含了运行Spark所需的所有组件,包括Java库、Python库(pyspark)、...

    spark-streaming-kafka-0-10_2.11-2.4.0-cdh6.1.1.jar

    spark-streaming-kafka-0-10_2.11-2.4.0-cdh6.1.1.jar

    spark-3.2.0-bin-hadoop3.2.tgz

    Spark是Apache软件基金会下的一个开源大数据处理框架,其主要特点是高效、通用、易用和可扩展。...解压"spark-3.2.0-bin-hadoop3.2.tgz"后,用户可以直接在Hadoop 3.2环境下运行Spark,享受其带来的高性能计算体验。

    spark-3.1.3-bin-hadoop3.2.tgz

    在这个特定的压缩包"spark-3.1.3-bin-hadoop3.2.tgz"中,我们得到了Spark的3.1.3版本,它已经预编译为与Hadoop 3.2兼容。这个版本的Spark不仅提供了源码,还包含了预编译的二进制文件,使得在Linux环境下快速部署和...

    spark-3.2.1-bin-hadoop2.7.tgz

    在Spark 3.2.1版本中,包含了对性能的优化、新功能的添加以及已知问题的修复。 Spark的主要组件包括: 1. Spark Core:Spark的基础框架,负责任务调度、内存管理、错误恢复以及与存储系统的交互。 2. Spark SQL:...

    spark-3.1.3-bin-without-hadoop.tgz

    总的来说,Spark-3.1.3-bin-without-hadoop.tgz是一个强大的大数据处理工具,它在多个维度上扩展了大数据处理的可能性,为开发者提供了丰富的功能和灵活性。不过,为了充分发挥其潜力,需要根据具体环境和需求进行...

    spark-3.0.0-bin-hadoop2.7.tgz

    总的来说,Spark-3.0.0-bin-hadoop2.7.tgz是一个全面的大数据处理解决方案,涵盖了从实时流处理到机器学习的各种需求,尤其适合那些已经部署了Hadoop 2.7环境的组织使用。无论是开发人员还是数据分析师,都能从中...

    spark-3.2.4-bin-hadoop3.2-scala2.13 安装包

    综上所述,“spark-3.2.4-bin-hadoop3.2-scala2.13”安装包是构建和运行Spark应用程序的基础,涵盖了大数据处理、流处理、机器学习等多个领域,为开发者提供了高效、灵活的数据处理平台。通过深入理解和熟练运用,...

    spark-3.0.0-bin-hadoop3.2

    在本场景中,我们讨论的是Spark的3.0.0版本,与Hadoop3.2相结合的二进制发行版——"spark-3.0.0-bin-hadoop3.2"。这个压缩包是为了在Windows操作系统下运行Spark而设计的,因此标签明确指出它是适用于Windows平台的...

    spark-2.4.7-bin-without-hadoop

    在2.4.7版本中,它优化了内存管理,提升了计算性能,增强了SQL查询能力,并且对DataFrame和Dataset API进行了进一步完善,使其更加易用和高效。 Spark 2.4.7 的一大亮点是其DataFrame和Dataset API。DataFrame 提供...

    spark-2.1.0-bin-without-hadoop版本的压缩包,直接下载到本地解压后即可使用

    在Ubuntu里安装spark,spark-2.1.0-bin-without-hadoop该版本直接下载到本地后解压即可使用。 Apache Spark 是一种用于大数据工作负载的分布式开源处理系统。它使用内存中缓存和优化的查询执行方式,可针对任何规模...

    spark-3.2.0-bin-hadoop3-without-hive

    总结来说,“spark-3.2.0-bin-hadoop3-without-hive”是一个专注于 Spark 与 Hadoop 3 基础集成的版本,它提供了最新的 Spark 特性,如优化的 SQL 引擎和 DataFrame API,同时也兼容 Hadoop 3 的诸多改进。...

    spark-1.6.0-bin-hadoop2.6.tgz

    Spark-1.6.0-bin-hadoop2.6.tgz 是针对Linux系统的Spark安装包,包含了Spark 1.6.0版本以及与Hadoop 2.6版本兼容的构建。这个安装包为在Linux环境中搭建Spark集群提供了必要的组件和库。 **1. Spark基础知识** ...

    spark-3.1.2-bin-hadoop3.2.tgz

    Spark 3.1.2是Apache Spark的一个重要版本,它为大数据处理提供了高效、可扩展的框架。这个版本是针对Scala 2.12编译的,并且与...通过深入理解这些概念和组件,开发者可以更好地利用Spark解决各种数据密集型问题。

    spark-2.4.0-bin-hadoop2.7.tgz

    Spark是Apache软件基金会下的一个开源大数据处理框架,它以其高效的并行计算能力、内存计算以及易用性而闻名。...学习和掌握Spark,对于从事大数据处理和分析的IT专业人士来说,是提升工作效率和解决复杂问题的关键。

    apache-doris-spark-connector-2.3_2.11-1.0.1

    Spark Doris Connector(apache-doris-spark-connector-2.3_2.11-1.0.1-incubating-src.tar.gz) Spark Doris Connector Version:1.0.1 Spark Version:2.x Scala Version:2.11 Apache Doris是一个现代MPP分析...

    spark-3.1.2-bin-hadoop2.7.tgz

    这个"spark-3.1.2-bin-hadoop2.7.tgz"是一个压缩包,包含了Spark 3.1.2版本,针对Hadoop 2.7优化的二进制发行版。在Linux环境下,这个版本的Spark可以与Hadoop生态系统无缝集成,用于大数据分析和处理任务。 Spark...

    spark-assembly-1.5.2-hadoop2.6.0jar包

    Spark-assembly-1.5.2-hadoop2.6.0.jar是Apache Spark的一个关键组件,主要用于在Scala环境中开发Spark应用程序。这个特定的版本(1.5.2)与Hadoop 2.6.0兼容,这意味着它可以无缝地运行在支持Hadoop 2.6.0的集群上...

Global site tag (gtag.js) - Google Analytics