![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spark
初心江湖路
多学一分增一分。
展开
-
Spark Streaming流控机制
概述:1、通过一个StreamingListener实现RateController来进行批次完成更新,事件触发调节。2、通过PIDRateEstimator利用PID控制算法对输入速率进行反馈调节,计算合适的输入供给速率。3、通过ReceiverTracker来将新的流控阈值速率发送到ReceiverTrackerEndpoint进行发布。4、通过ReceiverSupervisorIm...原创 2019-12-22 17:54:39 · 256 阅读 · 0 评论 -
BlockManager
BlockManager的作用,从以下角度来分析1、分布式Spark作为分布式的处理引擎,其数据也是分布式的。在这种情况下,数据如何管理、如何知道数据的分布情况、如何进行存储、读写等。需要一个抽象,来做这些工作。...原创 2019-12-21 17:07:47 · 181 阅读 · 0 评论 -
Spark ShuffleWriter之UnsafeShuffleWriter详解
前文提到,当序列化器支持relocation序列化对象,map端无需Combine,分区数不大于16777215 ((1 << 24) - 1)。这时候便匹配上UnsafeShuffleWriter将shuffle数据写出到磁盘。过程1、先将records插入到ShuffleExternalSorter缓存页中。2、当插入内存的records达到shuffle内存限制或者记录已经...原创 2019-11-25 21:47:40 · 700 阅读 · 0 评论 -
Spark ShuffleWriter之BypassMergeSortShuffleWriter详解
上一篇关于ShuffleWriter的文章中已经提到BypassMergeSortShuffleWriter是对Shuffle输出到磁盘的一种优化。BypassMergeSortShuffleWriter会写出对应reduce partition个文件,然后将这些分区文件合并起来形成一个输出文件。缺点既然如此,很显然当分区数非常多的时候,BypassMergeSortShuffleWrite...原创 2019-11-24 15:28:54 · 1256 阅读 · 0 评论 -
Spark ShuffleWriter之SortShuffleWriter详解
Spark在stage执行边界(宽依赖时产生stage边界)上会发生shuffle操作。具体表现为shuffle write和shuffle read。shuffle write操作在map阶段进行,表现在map结果写出到磁盘文件的时候。Spark版本目前共有三个类型的ShuffleWriter,分别是UnsafeShuffleWriter、BypassMergeSortShuffleWrite...原创 2019-11-22 19:42:01 · 557 阅读 · 0 评论 -
验证下你是否真的懂Spark广播变量及其原理
通过这几个问题,加深对Spark广播变量的理解1、广播变量在内存不足时是会溢出到磁盘,其存储等级为MEMORY_AND_DISK,那为什么driver在加载超过driver内存的广播变量的时候还会报Java.lang.OutOfMemoryError ?答案其实很简单,只是需要不被广播变量的MEMORY_AND_DISK迷惑就行了。我们先看三种关于广播时内存溢出的错误信息。第一种:Exc...原创 2019-10-25 15:19:16 · 1195 阅读 · 1 评论 -
SparkContext初始化
· 前言 本文主要目的是弄清楚SparkContext中比较重要的组件的初始化顺序及产生的作用,以此对Spark大数据引擎的实现原理有深入一点的认识。个人觉得,SparkContext可以比喻成Spark世界的一扇窗户,打开窗子便能了解屋内的一个大致全貌。对于从整体上来学习和掌握Spark很有帮助。我个人也是基于这样的目的写这些文章。 SparkContext,字面意思很形象,即Spark...原创 2019-09-29 17:19:01 · 513 阅读 · 0 评论 -
【源码分析】Spark on Yarn应用提交流程
本文直接从SparkSubmit说起,脚本提交过程在之前的《spark-submit脚本执行过程》文章中已经说明。一、主要过程概括1、执行org.apache.spark.deploy.SparkSubmit的main方法提交。2、运行yarn客户端的run方法。3、向ResourceManager提交application请求container用来运行ApplicationMaster...原创 2019-09-21 22:20:34 · 379 阅读 · 0 评论 -
Spark SQL加载kafka数据并将查询结果写出到kafka的执行过程
说明:本文意在对源码进行分析,说明Spark SQL加载kafka数据并将查询结果写出到kafka的过程,如果错误,欢迎指出,大家共同进步 ^ _ ^。一、加载kafka数据的代码样例// 这段代码加载kafka数据源,指定了数据源格式,topic、bootstrap server、offset信息等Dataset<Row> dataset = this.sparkSession...原创 2019-08-28 17:47:42 · 4522 阅读 · 0 评论 -
Spark SQL加载不到kafka数据
1、原创 2019-08-20 20:02:50 · 713 阅读 · 0 评论 -
DAGScheduler任务调度剖析
一、主要功能对每个job划分stage决定任务运行的首选位置(preferred locations)面向stage进行任务调度跟踪stage的输出需要时重新提交stage二、主要功能的展开描述1、怎么划分stage?先看这个数据结构,stage划分之后保存在一个HashMap中,stageId作为key,Stage对象作为valueprivate[scheduler] va...原创 2019-08-08 22:23:09 · 468 阅读 · 0 评论 -
spark-submit脚本执行过程注解
首先从一条命令说起:spark-submit \ --master yarn \ --deploy-mode client \ --driver-memory 10G \ --executor-memory 10G \ --num-executors 25 \ --executor-cores 4 \ --queue ltemr \ --conf "spark.d...原创 2019-07-07 13:49:33 · 949 阅读 · 0 评论 -
Spark Checkpoint 的使用、具体内容及读写过程
引用:https://www.cnblogs.com/cenglinjinran/p/9542589.html原创 2019-06-30 15:50:45 · 6021 阅读 · 0 评论 -
Spark论文详解之-Spark Introduction
1、专业处理系统的问题(本文所指专业系统均为Spark诞生之前)工作的重复性:正如分布式SQL引擎、机器学习引擎都需要执行并行聚合一样。单独的计算系统需要针对每个域重新解决如何并行聚合计算。这表现在工作分配和容错上便是重复的。这是很多专业计算系统的潜在问题。在执行组合计算上:多数情况下,大数据计算的数据量是很庞大的,而且在得到最终计算结果之前,通常是经过多个计算引擎管道式组合计算而来,这样就...原创 2019-05-14 15:48:00 · 609 阅读 · 0 评论 -
SparkContext详解
首先,每一个Spark应用都是一个SparkContext实例。原创 2019-05-11 16:41:20 · 25616 阅读 · 0 评论 -
Spark论文研究之-一篇文章彻底弄清RDD
一、RDD说明RDD是啥? 形式上,RDD是一种只读的分区记录集合。是一种具有容错能力的并行数据结构。使用户可以显式地将数据存在磁盘上或是内存中,控制其分区,并使用丰富的运算符来操作数据。RDD怎么产生? 只能通过两种方式产生:确定的操作作用于稳定存储的数据上确定的操作作用于其他RDDsRDD产生动机? 在上一篇文章中已经提到,Spark研究者发现现有的处理系...原创 2019-05-23 15:14:42 · 1940 阅读 · 0 评论 -
Spark论文思想之-基于RDD构建的模型(Shark的来龙去脉)
3.1 介绍首先RDD提供以下功能:跨集群的不可变存储(在Spark中,记录是指Java Object)使用键对数据进行分区控制考虑分区的粗粒度运算符由于是内存计算,所以低延迟3.2 在RDD上实现其它模型的技术在专业引擎里,不只是数据运算符,而且存储格式、甚至访问方法都被优化了。如SQL引擎如Shark是以面向列的格式处理数据,同时一个图计算引擎如GraphX在数据被创建索引的...原创 2019-06-03 14:32:54 · 388 阅读 · 0 评论 -
Spark论文思想之-总结
总结新世纪的大数据计算平台应该是什么样子的?论文当中给出了一个概念:对计算的简单抽象,对数据进行粗粒度批处理同时提供高效数据共享,可以在广泛的工作负载中表现出色的性能,并对现存处理系统取得长足的进步。Spark引擎是轻量级的,基于Spark引擎实现的其它模型也很小。在大数据集群计算的困难部分(容错、调度、多租户),这种小而通用抽象更能适应需求的快速变化。可以看出,集群应用在朝着复杂化的方向发...原创 2019-06-19 22:31:29 · 580 阅读 · 0 评论 -
Spark论文思想之-RDD的一般性
5.1 介绍 众所周知,RDD是一种内存抽象,通过这种抽象降低延迟,使得基于RDD的系统能够获得和专业系统相匹配的计算功能,并且更加高效。本篇文章旨在将这种内在的原因阐释清楚。 但是,从始至终,应该认识到的是Spark虽然在一定程度上被广泛使用,是因为其能满足大部分需求。决然不是说Spark最优秀。因为,对于网络延迟高度敏感的应用,Spark是并不适用的,也就是说Spark不能满足准实时的...原创 2019-06-16 15:18:59 · 235 阅读 · 0 评论 -
Spark论文思想之-离散流处理(Spark Streaming精华详述)
4.1 介绍可以说在介绍部分很简单,就是讲将RDD模型运用于大规模流处理。有用的信息很好总结,首先说明大规模流处理的设计与传统流处理设计系统背道而驰,但却在容错方面大有裨益而且与其他类型的系统相比也很有竞争力。实时大规模流处理需求自是不必多说。但其挑战巨大,两个重要的方面是容错和解决落后者。以官方所言,30s的恢复延迟就意味着做重要决策良机的错失。来看看官方怎么对现有流处理系统进行评价的:现有...原创 2019-06-11 23:57:39 · 1135 阅读 · 0 评论 -
如何设置Spark Executor Memory的大小
前边文章的铺垫终于可以运用到实际项目的开发及调优中了,下面我们就来看看实际集群环境下的Spark配置吧一、Spark内存使用大体上的两类执行内存和存储内存。其中执行内存用于shuffle、join、sort、aggregation等操作的计算使用。存储内存用于cache对象、存储广播数据等。二、Executor内存设置小了会发生的现象1、频繁GC,GC超限,CPU大部分时间用来做GC而回首...原创 2019-06-21 17:42:37 · 25468 阅读 · 1 评论 -
Shuffle Read Time调优
先看第一张Spark任务执行时间轴的图:红色部分是任务反序列化时间,黄色部分是shuffle read时间,绿色是实际计算任务执行时间,这里我们先不讨论任务反序列化时间长,下一篇文章说任务反序列化时间长怎么解决1、首先shuffle read time是什么?shuffle发生在宽依赖,如repartition、groupBy、reduceByKey等宽依赖算子操作中,在这些操作中会对Da...原创 2019-07-13 15:57:09 · 4545 阅读 · 0 评论 -
Spark分区数计算
一、对于Hadoop数据源Spark支持所有hadoop I/O格式,因为它使用相同的Hadoop InputFoarmat API以及Spark自有的其它格式化程序。因此,在默认情况下,Spark的输入分区和Hadoop/MapReduce的输入分片方式一致。通常情况下,Spark为每一个hdfs块创建一个分区(注:如果行特别长,大于一个块大小,那么最终分区数会少于块数)。但是,若你要进一步...原创 2019-05-08 18:03:15 · 2828 阅读 · 0 评论