1.基于内存
2.迭代式计算
3.分布式

基本工作原理:
将spark的程序提交到spark集群上,在Hadoop的HDFS或者Hive上读取数据,读取的数据存放在各个spark的节点上,分布式的存放在多个节点上,主要在每个节点的内存上,这样可以加快速度。
对节点的数据进行处理,处理后的数据存放在其他的节点的内存上。对数据的 计算操作针对多个节点上的数据进行并行操作。处理之后的数据可以到hadoop或者mysql或hbase中,或者结果直接返回客户端。
每一批处理的数据就是一个RDD

spark开发:离线批处理,延迟性的交互式数据处理;SQL查询;实时查询。底层都是RDD和计算操作。
1.创建RDD
2.定义对RDD的计算操作
3.循环往复的过程,第一次计算之后,数据到了新的一批节点上,变成新的RDD,在进行计算操作。
4.获得最终的数据,将数据存储火哦返回给客户端。
spark与mapreduce的不同在于分布式处理,mapreduce里只有map和reduce两个
过程,spark在处理一个阶段之后可以继续处理很多个阶段,不止两个阶段,spark可以处理更多的数据

RDD(弹性分布式数据集)是spark提供的核心抽象
RDD在抽象上是一种元素集合,包含了数据,他是被分区的,分为多个分区,每个分区分布在集群中的不同节点上,从而让RDD中的数据
可以被并行操作。(分布式)
RDD数据默认情况下是放在内存中的,如果内存放不下的时候,就会将部分数据存放在磁盘上进行保存,对于用户来说都是透明的,不用管数据存放在哪里,只要进行数据的计算和操作即可。(弹性)
RDD具有容错性,当节点出现故障,数据会出现丢失,会自动进行计算,重新获取数据。