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。

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

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

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

相关推荐
2401_8830410835 分钟前
新锐品牌电商代运营公司都有哪些?
大数据·人工智能
青云交38 分钟前
大数据新视界 -- 大数据大厂之 Impala 性能优化:融合机器学习的未来之路(上 (2-1))(11/30)
大数据·计算资源·应用案例·数据交互·impala 性能优化·机器学习融合·行业拓展
Json_181790144803 小时前
An In-depth Look into the 1688 Product Details Data API Interface
大数据·json
lzhlizihang4 小时前
【spark的集群模式搭建】Standalone集群模式的搭建(简单明了的安装教程)
spark·standalone模式·spark集群搭建
Qspace丨轻空间6 小时前
气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
大数据·人工智能·安全·生活·娱乐
Elastic 中国社区官方博客7 小时前
如何将数据从 AWS S3 导入到 Elastic Cloud - 第 3 部分:Elastic S3 连接器
大数据·elasticsearch·搜索引擎·云计算·全文检索·可用性测试·aws
Aloudata8 小时前
从Apache Atlas到Aloudata BIG,数据血缘解析有何改变?
大数据·apache·数据血缘·主动元数据·数据链路
水豚AI课代表8 小时前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
独行soc9 小时前
#渗透测试#SRC漏洞挖掘#深入挖掘XSS漏洞02之测试流程
web安全·面试·渗透测试·xss·漏洞挖掘·1024程序员节
拓端研究室TRL11 小时前
【梯度提升专题】XGBoost、Adaboost、CatBoost预测合集:抗乳腺癌药物优化、信贷风控、比特币应用|附数据代码...
大数据