Spark简单回顾

                       星光下的赶路人star的个人主页

                      大鹏一日同风起,扶摇直上九万里

文章目录

  • 1、Spark
    • [1.1 Spark入门](#1.1 Spark入门)
      • [1.1.1 Spark部署模式](#1.1.1 Spark部署模式)
      • [1.1.2 常用端口](#1.1.2 常用端口)
    • [1.2 SparkCore](#1.2 SparkCore)
      • [1.2.1 RDD不可变和五大属性](#1.2.1 RDD不可变和五大属性)
      • [1.2.2 RDD的弹性](#1.2.2 RDD的弹性)
      • [1.2.3 cache和Checkpoint的区别](#1.2.3 cache和Checkpoint的区别)
      • [1.2.4 算子](#1.2.4 算子)
    • [1.3 SparkSQL](#1.3 SparkSQL)
    • [1.4 内核](#1.4 内核)

1、Spark

1.1 Spark入门

1.1.1 Spark部署模式

1、Standalone模式:spark自己管理资源

2、yarn模式:yarn来管资源

  • Client模式:Driver(线程)在client里

  • Cluster模式:Driver(线程)在AM里

3、mesos模式:国外用的

4、k8s模式:未来趋势

1.1.2 常用端口

4040 运行时端口

7070 内部通讯端口

18080 历史服务器

1.2 SparkCore

1.2.1 RDD不可变和五大属性

五大属性:分区、分区器、计算逻辑、最优位置、血缘关系。

1.2.2 RDD的弹性

储存:内存和磁盘·

容错:cache、persist

计算:重试

位置:task、数据不在一起

1.2.3 cache和Checkpoint的区别

cache:不会切断血缘

Checkpoint:会切断血缘

1.2.4 算子

1、单value

map

fliter

flatMap

mapPartition:一次处理一个分区的数据

groupBy

repartition:扩大分区,一定会shuffle

coalesce:减少分区:不一定会shuffle

2、双Value

union

zip

交集

差集

3、k-v

groupby:重分区,shuffle,不做聚合

ReduceBy:重分区,shuffle,做预聚合

sortbykey

大部分xxxbykey的算子会导致shuffle

4、行动算子

foreach

take

collect

Reduce

first

5、血缘关系

宽依赖:有shuffle,一对多:父rdd的一个分区发往子rdd多个分区

窄依赖:没有shuffle,一对一,父rdd的一个分区发往子rdd的一个分区

6、Application划分

Application:SparkContext的数量

job:行动算子的数量

stage:宽依赖的数量+1

task:一个stage中task的数量=最后一个rdd的分区数量

7、共享变量

广播变量

累加器

1.3 SparkSQL

1、数据抽象

rdd

DataFrame

DataSet

2、hive on spark vs spark on hive

hive on spark: 写 hivesql, 解析、编译、优化都是 hive的,只有执行是spark

spark on hive: 写sparksql,解析、编译、优化、执行都是spark的,只用到了hive的元数据

hive on spark的优点:图方便, hive on spark,写hivesql就行了,学习成本低,好维护

spark on hive的优点:更灵活, spark on hive,写sparksql,需要一定的spark代码功底

1.4 内核

1.4.1提交流程(YarnCluster)

1、先执行启动命令,然后会看到一个SparkSubmit进程,这个进程首先是解析参数、再创建YarnClusterApplication客户端,然后由客户端封装提交参数和命令,再向ResourceManager提交任务信息

2、由ResourceManager启动ApplicationMaster

3、AM根据参数,启动Driver线程并初始化SparkContext

4、向ResourceManager注册AM,申请资源

5、由ResourceManager向AM返回资源可用列表

6、启动launcherPool,利用RPC模块启动Executor

7、然后再向Driver注册Executor

8、Driver告知注册成功

9、创建Executor计算对象

10、再由Driver进行任务切分

11、再由Driver分配任务

1.4.2 SortShuffle

1、在该模式下,数据会先写入到一个数据结构,ReduceByKey写入Map,一边通过Map局部聚合,一边写入内存。Join算子写入ArrayList直接写入内存。然后需要判断是否达到阙值,如果达到就会将内存数据结构的数据写入到磁盘,清空内存数据结构。

2、在溢写磁盘时,先根据key进行排序,排序过后的数据,会分批写入到磁盘文件中,默认批次为10000条,数据会以此每批一万条写入到磁盘文件中。写入磁盘文件通过缓冲区溢写的方式,每次溢写都会产生一个磁盘文件,也就是每个task过程中会产生多个临时文件

3、最后在每个task中,将所有的临时文件合并,这就是merge过程,此过程将所有的临时文件读取出来,一次写入到最终文件。意味着一个task的所有数据都在这一个文件中。同时单独写一份索引文件,标识下游各个task的数据在文件中的索,start offset和end offset。

                      您的支持是我创作的无限动力

                      希望我能为您的未来尽绵薄之力

                      如有错误,谢谢指正;若有收获,谢谢赞美

相关推荐
天国梦3 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
瓦学妹6 小时前
什么是网络索引?它是如何工作的?
大数据·网络·python·网络爬虫
天天爱吃肉82187 小时前
商用车多体动力学实战笔记|第6篇:动力传动系统(发动机、变速箱、分动器、TCS、LSD限滑差速)
大数据·人工智能·笔记·python·嵌入式硬件·汽车
用户3610588626128 小时前
Spark 核心之 Application 和 Job 原理剖析
spark
EAIReport8 小时前
工业电气自动化数据治理破局:多Agent大模型赋能全景智能决策
大数据·运维·自动化
一名普通的电源工程师9 小时前
E0512XT-1WR3 适配优选 钡特电源 DF1-05D12XT|1W 隔离5V转±12V模块电源选型参数技术解析
大数据·网络·人工智能
SelectDB9 小时前
Apache Doris 2026 Roadmap:AI 时代数据基础设施如何选型?Doris 给出了三层架构答案
大数据
Think_Higher10 小时前
CID行业趋势周报|7.27—8.02:大盘表现、重点赛道与投测建议
大数据·人工智能
林澈在路上10 小时前
2026 主流 AI 写歌 APP 全面测评|零基础原创歌曲工具选购指南
大数据·人工智能·aigc·音视频·音频
ZStack开发者社区11 小时前
云回迁潮来临:AI工作负载为什么正在从公有云回流私有云
大数据·人工智能