10:Spark
Spark:基于内存的实时数据分析框架
Spark的特点:

Spark和Hadoop的对比:
Hadoop的缺点:
1.表达能力有限
2.磁盘IO开销大
3.延迟高,任务之间的衔接涉及IO开销
4.在前一个任务执行完成之前,其他任务无法开始,难以胜任复杂、多阶段的计算任务
Spark的优点:
1.编程模型更灵活
2.提供内存运算,迭代运算效率更高
3.基于DAG的任务调度执行机制
(Hadoop的Tez框架也实现了DAG任务调度,但Hadoop本身并没有实现)



Spark的生态系统:(可以同时支持批处理、交互式查询和流数据处理)


Spark生态系统组件的应用场景:

10.3.1基本概念和架构设计

(注意:多组task不是一个task)

Spark采用Executor所具有的优点:
1.利用多线程来执行具体的任务,减少任务的启动开销
2.Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,有效减少IO开销
Spark中的概念:

相互关系:

Spark的运行流程图:

Spark运行架构的特点:

10.3.3:Spark中的RDD
RDD:一种抽象的数据结构。不同的RDD之间的转换操作形成依赖关系,可以实现管道化,避免中间数据存储

RDD的特点:

RDD的典型执行过程:




RDD实现Spark高效计算的原因:
1.RDD具有高效的容错性
现有容错机制:数据复制/记录日志
RDD具有天生的容错性
2.中间结果持久化到内存,数据在内存中的多个RDD操作之间进行传递避免了不必要的读写磁盘开销
3.存放的数据可以是JAVA对象,避免了不必要的对象序列化和反序列化
10.3.5:RDD的依赖关系和运行过程
依赖关系:宽依赖、窄依赖
窄依赖:


宽依赖:

stage的划分:(RDD之间的依赖关系形成一个DAG,由sparkcontext负责生成)

例子:

stage包含的类型:shuffleMapStage、ResultStage



Spark的部署:

采用Hadoop+Spark的方式:

不同的计算框架同意运行在YARN中:
1.计算资源可以按需伸缩
2.不用负载应用混搭,集群利用率高
3.共享底层存储,避免数据跨集群迁移
Spark RDD的基本操作:

