Spark核心设计思想
所属分类 spark
浏览量 823
大数据分布式并行计算
高层次API 数据操作
是Hadoop MapReduce组件的一种替代和改进
将计算过程放入内存,不需要反复读写硬盘
spark计算框架 需要与 存储配合 HDFS S3 MongoDB Cassandra 关系数据库等
集群管理器 YARN Mesos等
SparkML Spark Streaming
核心概念 RDD Resilient Distributed Datasets 弹性分布式数据集
RDD三个特性
不可变 可并行操作 分区
RDD 不可变 只读
对于它的任何转换操作,会产生一个新的RDD
新的RDD包含从其它RDD衍生而来的所有信息
经典的Word Count程序
val textFile = spark.sparkContext.textFile("xxx.txt")
val words = textFile.flatMap(line => line.split(" "))
val word_pairs = words.map(word => (word, 1))
val word_counts = reduceByKey(_ + _)
flatMap > Map > ReduceByKey
不会将中间结果写入硬盘,只记录RDD之间的依赖关系
某一步出错,只需要从这一步之前的RDD出发,再次进行计算,不需要从头开始
速度快,因为不需要将中间结果写入硬盘
容错程度高,保留依赖关系使错误恢复容易 快速
懒加载
两类操作 Transformation Action
Transformation 定义RDD转换操作
Action 触发RDD计算
RDD定义一系列的变换过程,例如Map、flatMap等,这些操作不会被立刻执行,只有在需要的时候才会被执行
Spark维护整个数据的变换记录,需要真正对数据进行实际操作时,比如存储、计数等,才会触发整个过程
不创建单个执行图,而是将许多简单的操作结合在一起
DAG Directed Acyclic Graph 有向无环图 反映RDD之间的依赖关系
Executor 运行在工作节点(WorkerNode)的一个进程,负责运行Task
Application 用户编写的Spark应用程序
Task 运行在Executor上的工作单元
Job 一个Job包含多个RDD及作用于相应RDD上的各种操作
Stage Job的基本调度单位,一个Job 分为多组Task,每组Task被称为Stage 或者 TaskSet
代表了一组关联的 相互之间没有Shuffle依赖关系的任务组成的任务集
依赖关系
窄依赖 宽依赖
依赖关系能够在发生错误时方便的回退
但如果遇到依赖链比较长的RDD,恢复比较耗时
引入CheckPoint机制 将数据持久化,并切断此RDD之前的依赖关系
回退时 CheckPoint RDD后面的RDD就不需要知道前面的依赖关系了
可从存储直接读取相应的数据,开始接下来的RDD变换操作
基于 血统 Lineage 的数据恢复
经常使用的RDD 缓存机制
cache() 与 persist() ,支持将RDD数据 写入内存或存储
上一篇
下一篇
小巧的Java编译器 Janino
Flink 知识点汇总
Flink Watermark 机制
spark 原理及特点
spark运行模式及集群角色
spark作业运行流程