spark基本概念整理
2024-09-05 19:22:36
app
基于spark的用户程序,包含了一个driver program和集群中多个executor
driver和executor存在心跳机制确保存活
3 --conf spark.executor.instances=5 --conf spark.executor.cores=8 --conf spark.executor.memory=80G
rdd
弹性分布式数据集
只读的、分区(partition)记录的集合
初代rdd处于血统的顶层,记录任务所需的数据的分区信息,每个分区数据的读取方法
子代rdd不真正的存储信息,只记录血统信息
真正的数据读取,应该是task具体被执行的时候,触发action操作的时候才发生的
算子
分为transformation和action
transformation: map filter flatMap union groupByKey reduceByKey sortByKey join
action: reduce collect count first saveAsTextFile countByKey foreach
partition
rdd存储机制类似hdfs,分布式存储
hdfs被切分成多个block(默认128M)进行存储,rdd被切分为多个partition进行存储
不同的partition可能在不同的节点上
再spark读取hdfs的场景下,spark把hdfs的block读到内存就会抽象为spark的partition
将RDD持久化到hdfs上,RDD的每个partition就会存成一个文件,如果文件小于128M,就可以理解为一个partition对应hdfs的一个block。反之,如果大于128M,就会被且分为多个block,这样,一个partition就会对应多个block。
job
一个action算子触发一个job
一个job中有好多的task,task是执行job的逻辑单元(猜测是根据partition划分任务)
一个job根据是否有shuffle发生可以分为好多的stage
stage
rdd中的依赖关系(血统)分为宽依赖和窄依赖
窄依赖:父RDD的一个分区只被一个子RDD的分区使用,不产生shuffle,即父子关系为“一对一”或者“多对一”
宽依赖:产生shuffle,父子关系为“一对多”或者“多对多”
spark根据rdd之间的依赖关系形成DAG有向无环图,DAG提交给DAGScheduler,DAGScheduler会把DAG划分相互依赖的多个stage,划分stage的依据就是rdd之间的宽窄依赖
遇到宽依赖就划分stage
每个stage包含一个或多个task任务
这些task以taskSet的形式提交给TaskScheduler运行
stage是由一组并行的task组成
stage切割规则:从后往前,遇到宽依赖就切割stage。
10 一个stage以外部文件或者shuffle结果作为开始,以产生shuffle或者生成最终结果时结束
11 猜测stage与TaskSet为一一对应的关系
task
分为两种:shuffleMapTask和resultTask
2 默认按照partition进行拆分task
--conf spark.default.parallelism=1000 设置task并行的数量
个人理解以上各种概念都是抽象概念,即简单的理解为全部发生在driver端,只有task相关的信息会被序列化发送到executor去执行
参考链接:
https://www.cnblogs.com/jechedo/p/5732951.html
https://www.2cto.com/net/201802/719956.html
https://blog.csdn.net/fortuna_i/article/details/81170565
https://www.2cto.com/net/201712/703261.html
https://blog.csdn.net/zhangzeyuan56/article/details/80935034
https://www.jianshu.com/p/3e79db80c43c?from=timeline&isappinstalled=0
最新文章
- java基础_集合List与Set接口
- dom4j解析示例
- 前端编码风格规范之 JavaScript 规范
- 图文详解远程部署ASP.NET MVC 5项目
- android 兼容性测试 CTS 测试过程(实践测试验证通过)
- .NET操作JSON
- Button的四种Click响应方法
- 《Programming WPF》翻译 第9章 4.模板
- 安装程序时出现错误代码0x80070422
- struts2中struts.xml 放置路径的问题
- 建造者(Builder)模式
- PBRT笔记(8)——材质
- VS2010创建MVC4项目提示错误: 此模板尝试加载组件程序集 “NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral,
- fisher线性判别
- Python小练习之寻找101到200之间的素数
- CCF-URL映射-(正则匹配)-20180303
- 查阅Springboot官方文档方式----------------Springboot2.0.2最新稳定版
- Kali Linux没有声音的解决方法
- leetcode242
- 洛谷P2792 [JSOI2008]小店购物(最小树形图)
热门文章
- Java多态之Father f=new Son();
- 【WPF学习】第二十一章 特殊容器
- linux-->;yii2报yii\db\Exception错
- Web自动化测试项目(三)用例的组织与运行
- CTF--HTTP服务--路径遍历(拿到www-data用户权限)
- Unreal Engine 4 蓝图完全学习教程(一)—— 简要介绍
- 深入理解JVM-类加载及类加载器
- Android头像更换之详细操作
- CCF_201604-4_游戏
- [github]添加fork me标识