数据量远比处理的速度增长要快,只能在大规模集群上并行
传统网络编程:节点间的通信(MPI),但难以扩展至大规模
MapReduce的局限性
限制编程界面,将job当成高层算子的图
Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架,不同的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法(适应多趟应用)。
Spark采用了弹性分布式数据集(Resilient Distributed Datasets, RDD)进行数据存储。其提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建,这些限制使得实现容错的开销很低。 对开发者而言,RDD可以看作是Spark的一个对象,它本身运行于内存中,如读文件是一个RDD,对文件计算是一个RDD,结果集也是一个RDD,不同的分片、数据之间的依赖、key-value类型的map数据都可以看做RDD。
RDD[T]
Spark在Apache上开源,有Scala、Java、Python、R等API。
Spark实现在同一个引擎上的数据提取,模型训练以及询问交互(针对同一个分布式文件系统DFS)。