首页  

Spark核心设计思想     所属分类 spark 浏览量 803
大数据分布式并行计算 
高层次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作业运行流程