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。

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

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

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

相关推荐
青云交2 小时前
大数据新视界 -- Impala 性能优化:量子计算启发下的数据加密与性能平衡(下)(30 / 30)
大数据·hive·量子计算·数据加密·impala·量子密钥分发·性能平衡
Elastic 中国社区官方博客3 小时前
使用 Elastic 收集 Windows 遥测数据:ETW Filebeat 输入简介
大数据·windows·elasticsearch·搜索引擎·全文检索·可用性测试
鸡c6 小时前
IM项目-----ElasticSearch
大数据·elasticsearch·搜索引擎
Java 第一深情6 小时前
Flink数据源的读写介入体系
大数据·flink
一颗青果6 小时前
【Linux】详解shell代码实现(上)
linux·运维·服务器·前端·chrome·算法·1024程序员节
天冬忘忧7 小时前
Kafka 消费者全面解析:原理、消费者 API 与Offset 位移
大数据·kafka
jlting1957 小时前
《智慧教育实时数据分析推荐项目》详细分析
大数据·redis·sql·kafka·database
青云交7 小时前
大数据新视界 -- Hive 数据仓库:架构深度剖析与核心组件详解(上)(1 / 30)
大数据
EasyNVR7 小时前
NVR管理平台EasyNVR多品牌NVR管理工具的流媒体视频融合与汇聚管理方案
大数据·网络·安全·音视频·监控·视频监控
java1234_小锋8 小时前
在Elasticsearch中,是怎么根据一个词找到对应的倒排索引的?
大数据·elasticsearch·搜索引擎