Spark的部署模式
- standalone模式:
- 分布式部署集群,资源管理和任务监控有spark自己完成,是其他模式的基础
- Spark on Yarn模式
- 分布式部署集群,资源和任务监控由Yarn管理,目前仅支持粗粒度资源分配方式,包含Cluster和Client运行模式,Cluster适合于生产,Driver运行在集群的子节点上,具有容错功能,Client模式适合测试开发,Driver运行在客户端上.
- Spark on mesos
- 这是官方推荐的模式,比起yarn更加灵活,用户可以选择两种调度模式之一来运行自己的应用程序
-
- 粗粒度模式:每个应用程序运行环境由一个Driver和多个Executor组成,其中每个Executor占用若干资源,内部可以运行多个task,在运行之前,需要将运行环境中的资源全部申请好,并且运行过程中需要一直占用这些资源,即使不用,运行结束再回收资源.
-
- 细粒度模式:粗粒度模式会造成资源的大量浪费,所以细粒度模式的思想是按需分配,类似于下周的云计算.
-
- 这是官方推荐的模式,比起yarn更加灵活,用户可以选择两种调度模式之一来运行自己的应用程序
Spark算子
- action算子
- forEach
- saveAsTextFile
- count
- fold
- aggregatta
- top
- reduce
- collect
- Transformation算子
- map
- flatmap
- filter
- mapPartitions
- union
- groupByKey
- reducebykey
Spark 的缓存机制
默认情况下RDD的内容是临时的,所以spark提供了在RDD中持久化数据的缓存机制.
可以用cache()和persist()
cache底层也是persist
实际项目中可以设置缓存级别,一般设置为memory_and_Disk_2
memory_and_Disk_ser_2
缓存函数和Transformation函数一样,都是lazy操作,需要Action函数进行触发,通常会使用count进行操作触发
Spark 的Checkpoint
Checkpoint的产生就是为了更加可靠的数据持久化,Checkpoint的数据一般放在HDFS中,天然的借助了HDFS的高容错机制,最大程度的保证的数据的安全
持久化个Checkpoint的区别
- 存储位置
- persist和Cache只能保存在本地的磁盘和内存中(或者堆外内存)
- Checkpoint可以将数据保存在HDFS中
- 生命周期
- persist和Cache的RDD会在程序结束后被清楚或者手动调用unpersist方法
- Checkpoint的RDD在程序结束后依然存在不会被删除
- 血统
- persist和Cache不会丢掉RDD之间的依赖链,因为缓存是不可靠的,如果发生错误,需要用依赖链来从新计算RDD
- Checkpoint会斩断依赖链,因为它是存在HDFS中的,更加安全可靠,不需要依赖链.