spark简介
spark最初诞生于美国加州大学伯克利分校的AMP实验室,是一个可用于大规模的
Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发的通用内存并行计算框架
Spark使用Scala语言进行实现,它是一种面向对象、函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集,具有以下特点。
1.运行速度快:Spark拥有DAG执行引擎,支持在内存中对数据进行迭代计算。官方提供的数据表明,如果数据由磁盘读取,速度是Hadoop MapReduce的10倍以上,如果数据从内存中读取,速度可以高达100多倍。
2.易用性好:Spark不仅支持Scala编写应用程序,而且支持Java和Python和R语言进行编写,特别是Scala是一种高效、可拓展的语言,能够用简洁的代码处理较为复杂的处理工作。
3.通用性强:Spark生态圈即BDAS包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX等组件,这些组件分别处理Spark Core提供内存计算框架、SparkStreaming的实时处理应用、Spark SQL的即席查询、MLlib或MLbase的机器学习和GraphX的图处理。
4.随处运行:Spark具有很强的适应性,能够读取HDFS、Cassandra、HBase、S3和Techyon为持久层读写原生数据,能够以Mesos、YARN和自身携带的Standalone作为资源管理器调度job,来完成Spark应用程序的计算
5.与Hadoop最大的区别就是spark会把计算数据和中间结果都保存在内存里。
如图是Hadoop的执行原理
下图是spark的运行原理
不难看出spark把数据存储在内存里大大减轻了io在传输中的时间大大的减少了读写的time。
spark生态系统
在实际运用中大数据一般分为下面三种
- 复杂的批量数据处理:时间跨度在十几分钟到数小时之间。
- 基于历史数据的交互式查询
3.基于实时数据流的数据处理
但是以上三种场景都得需要不同的软件来进行,spark就可以完美的完成这三点。
他们分别用sparkcore,sparksql,sparkstreaming,structstreing。
- sparkcore,是spark最核心的功能
- sparksql 适用于结果化数据处理的组件允许开发人员查询hivehbase等等数据源、也可以直接处理rdd
- spark streaming 众所周知,Hadoop不能进行实时的计算但是spark就可以完成,用sparkstreaming