Spark 特点
减少Disk IO
Spark 将资源文件(jar 等),缓存在driver 本地文件服务的内存里,当Executor执行任务时直接从 Driver 的内存中读取
增加并行度
多个stage 之间允许串行也可以并行
避免重新计算
当stage 中某个分区的task 失败,会重新对此stage 调度,但重新调度时会过滤掉已经成功执行的分区task
较为灵活的内存管理策略
四个部分
- onheap 存储内存
- onheap 执行内存
- offheap 存储内存
- offheap 执行内存
执行内存和存储内存之间可以互相借用
Spark 模块设计
SparkContext
Spark 应用程序的提交和执行都离不开 SparkContext,
SparkSession的底层实现依赖于 SparkContext
- SparkSession、SQLContext、 HiveContext等都对SparkContext
进行了封装,并提供了DataFrame、 SQL、Hive 接口 - 用户可以SparkContext 提供的接口编写 Driver 应用程序
SparkEnv
SparkEnv 是 Spark 中 task 允许时所必须的组件
Spark 基本架构
Cluster Manager
- Yarn 模式下,为 ResourceManager
- StandAlone 模式下, 为master
worker
- Yarn 模式下,为 NodeManager
spark的数据本地性(data locality)
参考链接: https://www.cnblogs.com/lillcol/p/14838348.html