随笔分类 -  Spark

摘要:首先摆出常用的参数设定 bin/spark-submit \ --class com.xyz.bigdata.calendar.PeriodCalculator \ --master yarn \ --deploy-mode cluster \ --queue default_queue \ --n 阅读全文
posted @ 2020-08-23 20:44 花未全开*月未圆 阅读(2500) 评论(0) 推荐(0) 编辑
摘要:Spark 核心组件解析 BlockManager数据存储与管理机制 BlockManager是整个Spark底层负责数据存储与管理的一个组件,Driver和Executor的所有数据都由对应的BlockManager进行管理。 Driver上有BlockManagerMaster,负责对各个节点上 阅读全文
posted @ 2020-08-23 15:30 花未全开*月未圆 阅读(330) 评论(1) 推荐(0) 编辑
摘要:Spark 内存管理 在执行Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后 阅读全文
posted @ 2020-08-23 15:26 花未全开*月未圆 阅读(285) 评论(0) 推荐(0) 编辑
摘要:5.1 Shuffle的核心要点 5.1.1 ShuffleMapStage与ResultStage 在划分stage时,最后一个stage称为finalStage,它本质上是一个ResultStage对象,前面的所有stage被称为ShuffleMapStage。 ShuffleMapStage的 阅读全文
posted @ 2020-08-23 15:11 花未全开*月未圆 阅读(335) 评论(0) 推荐(0) 编辑
摘要:Spark 任务调度机制 在工厂环境下,Spark集群的部署方式一般为YARN-Cluster模式,之后的内核分析内容中我们默认集群的部署方式为YARN-Cluster模式。 Spark任务提交流程 在上一章中我们讲解了Spark YARN-Cluster模式下的任务提交流程,如下图所示: 下面的时 阅读全文
posted @ 2020-08-23 14:43 花未全开*月未圆 阅读(452) 评论(0) 推荐(0) 编辑
摘要:3.1 Spark通信架构概述 Spark2.x版本使用Netty通讯框架作为内部通讯组件。spark 基于netty新的rpc框架借鉴了Akka的中的设计,它是基于Actor模型,如下图所示: Spark通讯框架中各个组件(Client/Master/Worker)可以认为是一个个独立的实体,各个 阅读全文
posted @ 2020-08-23 14:08 花未全开*月未圆 阅读(262) 评论(0) 推荐(0) 编辑
摘要:Spark 内核概述 Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制、Spark任务调度机制、Spark内存管理机制、Spark核心功能的运行原理等,熟练掌握Spark内核原理,能够帮助我们更好地完成Spark代码设计,并能够帮助我们准确锁定项目运行过程中出现的问题的症 阅读全文
posted @ 2020-08-23 11:45 花未全开*月未圆 阅读(356) 评论(0) 推荐(0) 编辑
摘要:一.SparkSQL相关 在执行insert 语句时报错,堆栈信息为:FileSystem closed。常常出现在ThriftServer里面。 原因:由于hadoop FileSystem.get 获得的FileSystem会从缓存加载,如果多线程一个线程closedFileSystem会导致该 阅读全文
posted @ 2020-08-07 11:34 花未全开*月未圆 阅读(3904) 评论(1) 推荐(0) 编辑
摘要:(1) 从序列化的角度 Spark 提供了两种序列化库,一种是 java 的序列化,另一种是 Kryo 序列化。Java 的序列化框架相对来说性能较慢,如果在网络密集型的应用中不太合适。因此可以将序列化的方式调整为 Kryo 的序列化方式,Kryo 序列化比 java 序列化在速度上更快(一般在 1 阅读全文
posted @ 2020-04-17 12:22 花未全开*月未圆 阅读(180) 评论(0) 推荐(0) 编辑
摘要:Spark 中的调度模式主要有两种:FIFO 和 FAIR。默认情况下 Spark 的调度模式是 FIFO(先进先出),谁先提交谁先执行,后面的任务需要等待前面的任务执行。而 FAIR(公平调度)模式支持在调度池中为任务进行分组,不同的调度池权重不同,任务可以按照权重来决定执行顺序。使用哪种调度器由 阅读全文
posted @ 2020-04-17 12:21 花未全开*月未圆 阅读(803) 评论(0) 推荐(0) 编辑
摘要:这里我们先明确一个假设前提:每个 Executor 只有 1 个 CPU core,也就是说,无论这个 Executor 上分配多少个 task 线程,同一时间都只能执行一个 task 线程。 1. 未经优化的 HashShuffleManager shuffle write 阶段将每个 task 阅读全文
posted @ 2020-04-17 12:20 花未全开*月未圆 阅读(269) 评论(0) 推荐(0) 编辑
摘要:有两种模式:cluster 和 driver 区别: cluster 模式:Driver 程序在 YARN 中运行,应用的运行结果不能在客户端显示,所以最好运行那些将结果最终保存在外部存储介质(如 HDFS、Redis、Mysql)而非 stdout 输出的应用程序,客户端的终端显示的仅是作为 YA 阅读全文
posted @ 2020-04-17 12:16 花未全开*月未圆 阅读(1187) 评论(0) 推荐(0) 编辑
摘要:问题:如果在 shuffle 的时候没有指定 reduce 的个数,那么会有多少个 reduce? 如果不指定 reduce 个数的话,就按默认的走: 1、如果自定义了分区函数 partitioner 的话,就按你的分区函数来走。 2、如果没有定义,那么如果设置了 spark.default.par 阅读全文
posted @ 2020-04-17 12:15 花未全开*月未圆 阅读(519) 评论(0) 推荐(0) 编辑
摘要:问题:如果在 shuffle 的时候没有指定 reduce 的个数,那么会有多少个 reduce?如果不指定 reduce 个数的话,就按默认的走:1、如果自定义了分区函数 partitioner 的话,就按你的分区函数来走。2、如果没有定义,那么如果设置了 spark.default.parall 阅读全文
posted @ 2020-04-16 18:18 花未全开*月未圆 阅读(395) 评论(0) 推荐(0) 编辑
摘要:故障排除一:控制reduce端缓冲大小以避免OOM 在Shuffle过程,reduce端task并不是等到map端task将其数据全部写入磁盘后再去拉取,而是map端写一点数据,reduce端task就会拉取一小部分数据,然后立即进行后面的聚合、算子函数的使用等操作。 reduce端task能够拉取 阅读全文
posted @ 2019-11-29 18:53 花未全开*月未圆 阅读(328) 评论(0) 推荐(0) 编辑
摘要:Spark中的数据倾斜问题主要指shuffle过程中出现的数据倾斜问题,是由于不同的key对应的数据量不同导致的不同task所处理的数据量不同的问题。 例如,reduce点一共要处理100万条数据,第一个和第二个task分别被分配到了1万条数据,计算5分钟内完成,第三个task分配到了98万数据,此 阅读全文
posted @ 2019-11-29 18:48 花未全开*月未圆 阅读(203) 评论(0) 推荐(0) 编辑
摘要:对于JVM调优,首先应该明确,(major)full gc/minor gc,都会导致JVM的工作线程停止工作,即stop the world。 JVM调优一:降低cache操作的内存占比 1. 静态内存管理机制 根据Spark静态内存管理机制,堆内存被划分为了两块,Storage和Executio 阅读全文
posted @ 2019-11-29 18:42 花未全开*月未圆 阅读(354) 评论(0) 推荐(0) 编辑
摘要:在Spark任务运行过程中,如果shuffle的map端处理的数据量比较大,但是map端缓冲的大小是固定的,可能会出现map端缓冲数据频繁spill溢写到磁盘文件中的情况,使得性能非常低下,通过调节map端缓冲的大小,可以避免频繁的磁盘IO操作,进而提升Spark任务的整体性能。 map端缓冲的默认 阅读全文
posted @ 2019-11-29 18:40 花未全开*月未圆 阅读(321) 评论(0) 推荐(0) 编辑
摘要:算子调优一:mapPartitions 普通的map算子对RDD中的每一个元素进行操作,而mapPartitions算子对RDD中每一个分区进行操作。如果是普通的map算子,假设一个partition有1万条数据,那么map算子中的function要执行1万次,也就是对每个元素进行操作。 如果是ma 阅读全文
posted @ 2019-11-29 18:35 花未全开*月未圆 阅读(590) 评论(0) 推荐(0) 编辑
摘要:1.1.1 常规性能调优一:最优资源配置 Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性能调优策略。 资源的分配在使用脚本提交Spark任务时进行指定,标准的Spark任务提交脚本如代 阅读全文
posted @ 2019-11-29 18:30 花未全开*月未圆 阅读(280) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示