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。

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

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

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

相关推荐
腾讯云大数据1 小时前
腾讯云大数据计算智能:从结构化 SQL 到多模态 AI Workload 的融合范式
大数据·人工智能·腾讯云
AI职业加油站2 小时前
大数据采集工程师:技术栈全景图与实战路径
大数据·人工智能·数据分析
老白讲技术3 小时前
2026年国内APP开发与软件定制服务商能力观察:从AI应用到行业系统开发
大数据·人工智能·ai·app·软件需求·app开发
荣-3 小时前
从两天到十几分钟:一套 YT Crash 自动化分析工具完整工程复盘
大数据·运维·自动化
人工智能培训5 小时前
大模型驱动下传统大数据架构的变革方向
大数据·人工智能·重构·架构·agent·agi
蜡笔削薪6 小时前
财联万业(杭州)数字科技有限公司能否给代理划定独家经营区域?
大数据·人工智能·python·科技
动恰客流统计6 小时前
零食集合店爆火背后:客流统计技术如何重构新零售运营决策
大数据·人工智能
B8017913Y9 小时前
2026撰写行业报告总写不完零散专业词汇?可系统梳理行业专业词汇
大数据·人工智能
2601_962341309 小时前
计算机毕业设计之jsp考研在线复习平台
java·大数据·开发语言·hadoop·python·考研·课程设计
2503_931712489 小时前
10m/s超高速电梯:西奥XO-NEWIII如何树立行业速度标杆
java·大数据·数据库