Spark的内部原理
Spark的主要模块,内部的运行机制,包括调度机制和执行机制
调度与任务分配
I/O模块
通信控制模块
容错模块
Shuffle模块
Spark执行机制的总览:
Action---Job --> RDD DAG ----> Stage DAG --Task--->Executor执行
Spark的调度:
application、job、stage、task几个层次,采用经典调度算法
Application运行方式分为 Cluster模式和 Client模式,Application的调度
JOb的调度:配置调度池,调度算法
Stage的调度是由DAGScheduler完成的
Spark的I/O
采用数据块为单位进行管理
本地I/O开销和传输开销
通过序列化和反序列化---进行流式传输和块存储
压缩:Snappy 和LZF压缩
分层:通信层和存储层
CacheManager BlockManager
Spark的通信控制模块
通过akka框架进行集群消息通信
采取了异步通信和分布式架构,在本地和远程都有监控和恢复机制,采取无中心节点架构
Spark将其作为分布式中的RPC框架
分布式通信的几种方式:
RPC
RMI
JMS
EJB
Web service
Spark的容错
通过Lineage 和 checkpoint 机制进行容错性保证
Lineage进行重算操作:记录粗颗粒度的特定数据Transformation操作的行为
Narrow Dependencies
Shuffle Dependencies---wide Dependencies
checkpoint 进行数据冗余备份
传统检查点:通过冗余数据和日志记录更新操作
SPARK通过冗余数据缓存数据
Spark的shuffle机制
主要有三个方面:
安装和运维和测试
开发和性能调优
二次开发,打造专属框架
API的更新与改进
Spark 1.6.0
Spark Core SparkContext对象 RDD的入口
模块中
SparkStreaming DStream
Spark SQL SQLContext Dataframe .Dataset以及SQL的入口
HiveContext
Spark.mlib
Spark Graphx
Spark 2.0
Spark Core SparkContext RDD的入口
模块
SparkStreaming Structured Streaming
Spark SQL SparkSession Dataset 以及SQL和Hive
Spark.ml
Spark Graphx
版本
1.0 RDD - - 2014-03-30
1.3 RDD DataFrame - 2015-03-13
1.6 RDD DataFrame DataSet 2016-01-04
2.0 RDD DataSet 2016-07-26