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。

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

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

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

相关推荐
武子康6 小时前
大数据-244 离线数仓 - Hive ODS 层建表与分区加载实战(DataX→HDFS→Hive)
大数据·后端·apache hive
武子康1 天前
大数据-243 离线数仓 - 实战电商核心交易增量导入(DataX - HDFS - Hive 分区
大数据·后端·apache hive
代码匠心3 天前
从零开始学Flink:Flink SQL四大Join解析
大数据·flink·flink sql·大数据处理
武子康4 天前
大数据-242 离线数仓 - DataX 实战:MySQL 全量/增量导入 HDFS + Hive 分区(离线数仓 ODS
大数据·后端·apache hive
SelectDB5 天前
易车 × Apache Doris:构建湖仓一体新架构,加速 AI 业务融合实践
大数据·agent·mcp
武子康5 天前
大数据-241 离线数仓 - 实战:电商核心交易数据模型与 MySQL 源表设计(订单/商品/品类/店铺/支付)
大数据·后端·mysql
IvanCodes5 天前
一、消息队列理论基础与Kafka架构价值解析
大数据·后端·kafka
武子康6 天前
大数据-240 离线数仓 - 广告业务 Hive ADS 实战:DataX 将 HDFS 分区表导出到 MySQL
大数据·后端·apache hive
字节跳动数据平台7 天前
5000 字技术向拆解 | 火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据
武子康7 天前
大数据-239 离线数仓 - 广告业务实战:Flume 导入日志到 HDFS,并完成 Hive ODS/DWD 分层加载
大数据·后端·apache hive