![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
文章平均质量分 77
Linzx的学习笔记
这个作者很懒,什么都没留下…
展开
-
Spark源码解析03-Submit提交流程及Driver启动流程
1、前言由前面的文章Spark基础06-Spark client和cluster提交流程我们已经知道了Spark client和cluster提交模式流程启动Driver进程,并向集群管理器注册应用程序集群资源管理器根据任务配置文件分配并启动ExecutorExecutor启动之后反向到Driver注册,Driver已经获取足够资源可以运行Driver开始执行main函数,Spark查询为懒执行,当执行到action算子时开始反向推算,根据宽依赖进行stage的划分,随后每一个stage对应一个原创 2021-06-02 08:28:57 · 924 阅读 · 0 评论 -
Spark基础06-Spark client和cluster提交流程
0、前言我们先来看一下,spark提交任务的脚本,这里的deploy-mode就是本篇文章的重点,表示着提交模式,分别只有client客户端模式和cluster集群模式spark-submit --master yarn \--deploy-mode cluster \--driver-memory 1g \--executor-memory 1g \--executor-cores 1 \--class org.apache.spark.examples.SparkPi \${SPARK原创 2021-05-20 08:22:43 · 527 阅读 · 0 评论 -
Spark基础05-map和mapValue
0、前言真实面试题:使用了reduceByKey()和groupByKey()等xxxByKey()算子一定会产生shuffle吗?Spark 如何优化或者减少shuffle?1、map1.1、官方的解释输入函数针对源RDD所有元素进行操作,并且返回一个新的RDD1.2、代码示例val dataKv: RDD[String] = sc.parallelize(List( "hello world", "hello spark", "hello world", "he原创 2021-05-19 08:19:53 · 1858 阅读 · 0 评论 -
Spark基础04-RDD重分区操作repartition与coalesce
1、repartition1.1、官方解释返回一个新的RDD具有 (numPartitions) 指定的分区数,可以通过该方法进行RDD并行度(分区数)的修改如果要减少RDD分区数的话,建议使用使用coalesce方法,可以避免shuffle从上可看出,repartition 底层其实是调用了coalesce 方法,且shuffle参数指定为 true1.2、代码示例val data: RDD[Int] = sc.parallelize(1 to 10, 5) // 指定5个分区//原创 2021-05-18 12:43:59 · 1065 阅读 · 0 评论 -
Spark源码解析02-Worker启动流程以及与Master心跳通信
1、前言上一章我们已经跟踪完了Master的启动过程以及相应的一些RpcEnv环境准备工作,我们知道Master是RpcEndpoint,其它角色想要跟Master进行通信,就必须有Master的引用,既RpcEndpointRef类,同时RpcEndpointRef必须有发送消息的方法,而RpcEndpoint则必须有接收消息并且返回的方法,下面我们回到这两个类的源代码RpcEndpoint可以清晰的看到两个方法:// 接收消息不用返回def receive: PartialFunction[An原创 2021-05-17 08:38:14 · 173 阅读 · 0 评论 -
Spark知识学习目录
0、前言该文章为Spark知识文章目录,便于查看,持续更新中。。。。。1、Spark基础Spark基础01-RDD和宽窄依赖Spark基础02-RDD数据集操作Spark基础03-关联外部数据源操作2、Spark源码-资源层启动Spark源码解析01-Master启动流程...原创 2021-05-14 16:48:03 · 144 阅读 · 0 评论 -
Spark源码解析01-Master启动流程
1、前言Master是spark中核心角色,涉及到集群通信以及资源调用申请,不仅要接收Driver,Worker的注册调用,还需要根据调度情况知道其他角色的状态,例如:Executor、Driver的状态等。通过以上的推断,Master需要有个传输层(TransportServer)专门用来发送或者接受服务,如下图由上图可见,如果使用传输的实例过多,势必会存在问题,如:这个实例消息A传给谁,实例消息B由哪个实例接收等,为此,我们可以在传输层上添加一个分发器(Dispatcher),如下图引入分发原创 2021-05-12 08:41:53 · 759 阅读 · 2 评论 -
Spark基础03-关联外部数据源操作
1、通过map关联外部数据源val data: RDD[Int] = sc.parallelize(1 to 10, 2)// 1、外关联、SQL查询// 问题:每一条数据都要建立一个数据连接,执行SQL,然后关闭连接val res01: RDD[String] = data.map( (value: Int) => { println("-----连接数据库-----") println(s"-----select $value-----") println("原创 2021-04-30 17:06:38 · 331 阅读 · 2 评论 -
Spark基础02-RDD数据集操作
0、拓展spark数据移动的两种方式:IO移动:指数据不需要区分每一条数据归属于哪个分区,既不需要通过partitionershuffle:指数据需要经过洗牌,计算其分区号,好确认数据区到哪个特定的分区如果有的行为不需要区分记录,直接本地IO去拉取数据,那么这种本地IO一定比先partitioner,再计算,shuffle落文件,最后IO去拉取速度快的多spark的人性化:spark提供很多封装的方法,都是经过尝试、经验推算出实现方式的,不需要人为干预遇到不懂的方法,点进去源码看原创 2021-04-30 17:01:08 · 240 阅读 · 1 评论 -
Spark基础01-RDD和宽窄依赖
1、RDD官方解释是:A Resilient Distributed Dataset (RDD), the basic abstraction in Spark. Represents an immutable,partitioned collection of elements that can be operated on in parallel译文:弹性分布式数据集(rdd)是Spark中的基本抽象。表示可以并行操作的、不可变的、分区的元素集合从上截图可看出,RDD除了提供基础的m原创 2021-04-28 09:29:02 · 161 阅读 · 0 评论 -
spark性能优化指南--高级篇
spark性能优化指南–高级篇导读本文非原创,是由阅读美团技术团队于2016年05月12日 作者: 李雪蕤 发表的文章《Spark性能优化指南——高级篇》,收获甚多,以本文作为学习笔记。一、数据倾斜数据倾斜发生时的现象绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常栈,是我们写的业务转载 2021-03-25 11:01:37 · 262 阅读 · 0 评论 -
spark性能优化指南--基础篇
spark性能优化指南–基础篇导读本文非原创,是由阅读美团技术团队于2016年04月29日 作者: 李雪蕤 发表的文章《Spark性能优化指南——基础篇》,收获甚多,以本文作为学习笔记。一、开发过程中的调优1、避免创建重复使用的RDDRDD 的特性是:分区,不可变,并行操作不可变行可理解为RDD从创建开始就不会被改变,为此同一份数据,有且只创建一个RDD就足够使用,不需要创建多个// 错误的做法:对于同一份数据执行多次算子操作时,创建多个RDD。// 这里执行了两次textFile方法,转载 2021-03-25 10:59:53 · 209 阅读 · 0 评论