![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spark内核调优
文章平均质量分 95
Spark内核调优
小刘同学-很乖
这个作者很懒,什么都没留下…
展开
-
Spark 数据倾斜
Spark中的数据倾斜问题主要指shuffle过程中出现的数据倾斜问题,是由于不同的key对应的数据量不同导致的不同task所处理的数据量不同的问题。例如,reduce点一共要处理100万条数据,第一个和第二个task分别被分配到了1万条数据,计算5分钟内完成,第三个task分配到了98万数据,此时第三个task可能需要10个小时完成,这使得整个Spark作业需要10个小时才能运行完成,这就是数...原创 2021-07-07 11:19:53 · 89 阅读 · 0 评论 -
Spark 性能调优之JVM调优
对于JVM调优,首先应该明确,(major)full gc/minor gc,都会导致JVM的工作线程停止工作,即stop the world。JVM调优一:降低cache操作的内存占比静态内存管理机制根据Spark静态内存管理机制,堆内存被划分为了两块,Storage和Execution。Storage主要用于缓存RDD数据和broadcast数据,Execution主要用于缓存在shuf...原创 2021-07-07 11:19:29 · 456 阅读 · 0 评论 -
Spark 性能调优之Shuffle调优
Shuffle调优一:调节map端缓冲区大小在Spark任务运行过程中,如果shuffle的map端处理的数据量比较大,但是map端缓冲的大小是固定的,可能会出现map端缓冲数据频繁spill溢写到磁盘文件中的情况,使得性能非常低下,通过调节map端缓冲的大小,可以避免频繁的磁盘IO操作,进而提升Spark任务的整体性能。map端缓冲的默认配置是32KB,如果每个task处理640KB的数据,...原创 2021-07-07 11:19:10 · 945 阅读 · 0 评论 -
Spark 性能调优之算子调优
算子调优一:mapPartitions普通的map算子对RDD中的每一个元素进行操作,而mapPartitions算子对RDD中每一个分区进行操作。如果是普通的map算子,假设一个partition有1万条数据,那么map算子中的function要执行1万次,也就是对每个元素进行操作如果是mapPartition算子,由于一个task处理一个RDD的partition,那么一个task只会执...原创 2021-07-07 11:18:41 · 226 阅读 · 2 评论 -
Spark 性能调优之常规性能调优
常规性能调优一:最优资源配置Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性能调优策略。资源的分配在使用脚本提交Spark任务时进行指定,标准的Spark任务提交脚本如代码所示:/usr/opt/modules/spark/bin/spark-submit \--class c...原创 2021-07-07 11:18:05 · 113 阅读 · 2 评论 -
Spark 核心组件详细解析
BlockManager数据存储与管理机制BlockManager是整个Spark底层负责数据存储与管理的一个组件,Driver和Executor的所有数据都由对应的BlockManager进行管理。Driver上有BlockManagerMaster,负责对各个节点上的BlockManager内部管理的数据的元数据进行维护,比如block的增删改等操作,都会在这里维护好元数据的变更。每个节...原创 2020-10-19 11:19:28 · 869 阅读 · 1 评论 -
Spark 内存管理详解
在执行Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后者负责在工作节点上执行具体的计算任务,并将结果返回给 Driver,同时为需要持久化的 RDD 提供存储功能。由于 Dri...原创 2020-09-29 08:22:31 · 904 阅读 · 1 评论 -
Spark Shuffle详细解析
Shuffle的核心要点ShuffleMapStage与ResultStage在划分stage时,最后一个stage称为finalStage,它本质上是一个ResultStage对象,前面的所有stage被称为ShuffleMapStage。ShuffleMapStage的结束伴随着shuffle文件的写磁盘。ResultStage基本上对应代码中的action算子,即将一个函数应用在R...原创 2020-09-17 11:15:14 · 429 阅读 · 0 评论 -
Spark 任务调度机制详解
在工厂环境下,Spark集群的部署方式一般为YARN-Cluster模式,之后的内核分析内容中我们默认集群的部署方式为YARN-Cluster模式。Spark任务提交流程Spark YARN-Cluster模式下的任务提交流程,如下图所示:下面的时序图清晰地说明了一个Spark应用程序从提交到运行的完整流程:提交一个Spark应用程序,首先通过Client向ResourceManage...原创 2020-09-13 08:09:35 · 1031 阅读 · 0 评论 -
Spark 通讯架构详解
Spark通信架构概述Spark2.x版本使用Netty通讯框架作为内部通讯组件。spark 基于netty新的rpc框架借鉴了Akka的中的设计,它是基于Actor模型,如下图所示:Spark通讯框架中各个组件(Client/Master/Worker)可以认为是一个个独立的实体,各个实体之间通过消息来进行通信。具体各个组件之间的关系图如下:Endpoint(Client/Master...原创 2020-09-09 08:47:33 · 784 阅读 · 0 评论 -
Spark 部署模式详解
Spark支持3种集群管理器(Cluster Manager),分别为:Standalone:独立模式,Spark原生的简单集群管理器,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统,使用Standalone可以很方便地搭建一个集群;Apache Mesos:一个强大的分布式资源管理框架,它允许多种不同的框架部署在其上,包括yarn;Hadoop YARN:统一的...原创 2020-09-07 08:17:33 · 270 阅读 · 0 评论 -
Spark 详细内核概述
Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制、Spark任务调度机制、Spark内存管理机制、Spark核心功能的运行原理等,熟练掌握Spark内核原理,能够帮助我们更好地完成Spark代码设计,并能够帮助我们准确锁定项目运行过程中出现的问题的症结所在。Spark核心组件回顾DriverSpark驱动器节点,用于执行Spark任务中的main方法,负责实际代码...原创 2020-09-04 08:17:19 · 241 阅读 · 0 评论