![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
文章平均质量分 88
cangchen@csdn
这个作者很懒,什么都没留下…
展开
-
spark源码跟踪(十一)ApplicationMaster中的关键线程
ApplicationMaster中的关键线程一,Driver线程二,Reporter线程三,图示yarn cluster 模式提交的spark程序会使用Yarn集群中某个节点的container资源启动ApplicationMaster java进程,其启动命令是SparkSubmit进程根据用户提交spark任务命令的参数拼接而来。启动后跟踪代码调用过程。一,Driver线程查看半生对象object ApplicationMaster 中的main函数object ApplicationMast原创 2022-02-24 00:58:40 · 1475 阅读 · 0 评论 -
spark源码跟踪(十)container申请与Executor启动
Container申请与Executor启动一,介绍二,YarnAllocator说明2.1,类构造函数三,Container资源申请3.1,常用概念及其类3.3,调用过程3.3.1,allocateResources(): Unit3.3.2,请求资源3.3.3,handleAllocatedContainers3.3.3,ExecutorRunnable四,YarnCoarseGrainedExecutorBackend进程一,介绍yarn-cluster模式下,Spark Container资源的原创 2022-02-24 00:06:01 · 1616 阅读 · 0 评论 -
spark源码跟踪(九)就近计算
就近计算一,实现二,过程一,实现YarnAllocator.scala// A map to store preferred hostname and possible task numbers running on it.private var hostToLocalTaskCounts: Map[String, Int] = Map.empty// Number of tasks that have locality preferences in active stagesprivate[原创 2022-02-23 11:21:18 · 1118 阅读 · 0 评论 -
spark源码跟踪(八)累加器Accumulators
累加器Accumulators一,累加器作用及其原理1.1,作用1.2,原理二,累加器关键源码跟踪阅读2.1,测试代码2.2,跟踪源码2.2.1,add调用2.2.2,merge调用三,累加器在行动算子和转换算子中执行有何不同3.1,测试代码一,累加器作用及其原理1.1,作用可实现分布式计数或求和;可以在spark application运行UI中显示其值,便于调试。1.2,原理在Driver端中定义的累加器Accumulators对象,跟随各spark task任务分发到Executor端,反序原创 2021-12-22 12:55:19 · 1281 阅读 · 0 评论 -
spark源码跟踪(七)缓存以及检查点机制源码跟踪
spark cache、persist,checkpoint源码,机制详细解读。原创 2021-12-19 12:22:02 · 1303 阅读 · 0 评论 -
Spark任务运行常用概念及之间的关系
一,关系简图二,描述application --> job -->stage -->task 都是一对多关系。2.1,Application一个SparkContext就是一个application,通过spark-submit脚本提交给集群。2.2,DAGRDD依赖组成的有向无环图,来表明一个Application中RDD的依赖关系。2.3,Job1,没有检查点的正常情况下一个行动算子触发一个Job。2,如果行动算子的依赖链中有检查点(checkpoint),则至少有原创 2021-12-18 00:34:32 · 1885 阅读 · 0 评论 -
spark groupBy与groupByKey
spark groupBy与groupByKey一,测试程序二,groupBy分区数如何确定三,groupBy与groupByKey的关系四,结论spark中group转换操作会将数据分为一到几个组,分组的数量与分区数量是否有关系?group与groupBy有什么关系?一,测试程序object WordCount extends Logging{ def main(args: Array[String]): Unit = { log.info("----------------")原创 2021-11-20 01:17:46 · 2640 阅读 · 0 评论 -
spark源码跟踪(六)RDD逻辑代码执行
RDD逻辑代码执行一,驱动程序二,Task相关类2.1 查看ResultTask类runTask(context: TaskContext)方法:2.2,反序列化后执行func函数三,MapPartitionsRDD 类四,ParallelCollectionRDD五,ShuffleMapTask六,总结一,驱动程序val sparkConnf=new SparkConf().setAppName("wordCount").setMaster("local[3]")val sparkContext=n原创 2021-11-19 17:42:35 · 1422 阅读 · 0 评论 -
spark源码跟踪(五)task调度与执行
task调度与提交上一篇: task生成.Task生成后回被包装成TaskSetManager,然后放入任务调度器中的任务池中并根据调度算法进行排序,任务调度器有先进先出调度器和公平调度器。之后发往Executor中执行。...原创 2021-11-01 23:35:02 · 632 阅读 · 0 评论 -
spark源码跟踪(四)stage提交与task任务生成
stage提交与task任务生成一,程序入口。二,stage提交2.1,2.2,三,Task任务生成四,总论链接: spark源码跟踪(三)stage划分.一,程序入口。val sparkConnf=new SparkConf().setAppName("wordCount").setMaster("local[3]")val sparkContext=new SparkContext(sparkConnf)val rdd=sparkContext.parallelize(Array("hell原创 2021-10-27 14:19:51 · 1233 阅读 · 0 评论 -
spark源码跟踪(三)stage划分
stage划分一,stage类图二,源码跟踪三,结论一,stage类图二,源码跟踪入口val sparkConnf=new SparkConf().setAppName("wordCount").setMaster("local[3]")val sparkContext=new SparkContext(sparkConnf)val rdd=sparkContext.parallelize(Array("hello thank you thank you very much are you原创 2021-10-21 21:16:16 · 447 阅读 · 0 评论 -
spark源码跟踪(二)rdd依赖
@TOC一,Dependency继承关系图RDD继承关系分为两类,NarrowDependency(窄依赖)和ShuffleDependency(宽依赖)。二,NarrowDependencyNarrowDependency(窄依赖)类是一个抽象类,可细分为:OneToOneDependency,RangeDependency,PruneDependency2.1,OneToOneDependency一对一依赖。子RDD的分区与父RDD数量一致,分区之间一一对应。/** * :: Deve原创 2021-10-13 23:38:42 · 205 阅读 · 0 评论 -
spark源码跟踪(一)yarn-cluster模式任务提交
一,运行命令bin/spark-submit \--master yarn \--deploy-mode cluster \--class org.apache.spark.examples.SparkPi \examples/jars/spark-examples_2.11-2.3.1.3.0.1.0-187.jar 二,启动脚本查看spark-submit 脚本文件,程序入口为exec "${SPARK_HOME}"/bin/spark-class org.apache.spark原创 2021-09-20 23:48:45 · 1152 阅读 · 0 评论 -
SparkStreaming学习笔记
SparkStreaming学习笔记一,DStream(离散化流)二,Input DStream and Receivers三,转换操作四,Window Operations五,DStream输出操作六,Cacheing/Persistence七,Checkpointing/检查点7.1, 元数据检查点7.2,数据检查点Spark Streaming是Spark core的扩展,支持可伸缩、高吞吐量、容错的实时数据流处理。数据可以从许多源(如Kafka、Kinesis或TCP sockets)摄取,并且原创 2021-04-13 22:58:41 · 243 阅读 · 0 评论 -
Structured Streaming学习笔记
Structured Streaming学习笔记一,编程模型二,创建streaming Dataset和Dataframe三,操作streaming Dataset和Dataframe3.1 普通Dataset和Dataframe 支持的操作streaming都支持,如下操作不支持:3.2 基于Event-time(事件时间)的window操作3.3, 流式数据去重3.4,多watermark处理策略四,查询4.1, 输出模式Structured streaming是构建在SparkSQL引擎上的可伸缩且原创 2021-04-02 14:09:30 · 584 阅读 · 0 评论 -
Spark SQL
Spark SQL一,编程入口二,DataFrame2.1 DataFrame 创建2.1.1 从已经存在的RDD创建2.1.2 从hive表创建2.1.3 从外部数据源(如,csv,json,parquet,jdbc等创建2.2 DataFrame常见操作2.2.1 查询select2.2.2 过滤filter2.2.3 分组groupBy2.2.4 创建临时视图执行SQL三,Dataset四, SparkSQL与RDD交互4.1,使用反射将RDD转化为Dataset4.2,指定schema方式将RDD原创 2021-03-05 15:44:13 · 171 阅读 · 0 评论 -
spark core
spark rdd编程一,spark基本架构二,spark rdd2.1,rdd定义2.2,创建三级目录一,spark基本架构Cluster Manager:集群管理器,主要负责集群资源的分配与管理。 Cluster Manager分配的资源属于一级资源,它只负责把集群中Workers的资源 (cpu,内存)分配给程序,但并不负责对Executer资源的分配。目前有 Yarn,Standalone,Mesos,EC2等Worker:集群的工作节点。负责创建Executor,并进一步将资源和任务分配给E原创 2021-03-03 22:31:45 · 510 阅读 · 4 评论