一、Spark介绍
Spark最初由美国加州伯克利大学(UCBerkeley)的AMP实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。2013年Spark加入Apache孵化器项目后发展迅猛,如今已成为Apache软件基金会最重要的三大分布式计算系统开源项目之一(Hadoop、Spark、Storm)。
Spark具有如下几个主要特点:
- ● 运行速度快:使用DAG执行引擎以支持循环数据流与内存计算。
- ● 容易使用:支持使用Scala、Java、Python和R语言进行编程,可以通过Spark Shell进行交互式编程。
- ● 通用性:Spark提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件。
● 运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。
1.1 Spark核心问题
- 是什么?
是一个基于内存的分布式批处理引擎 - 做什么?
● 数据处理(Data Processing):可以用来快速处理数据,兼具容错性和可扩展性。
● 迭代计算(Iterrative Computation):支持迭代计算,有效应对多步数据处理逻辑。
● 数据挖掘(Data Mining):在还海量数据的基础上进程复杂的挖掘分析,可支持各种数据挖掘和机器学习算法。 Spark和Hadoop相比优势在哪里?
● 性能上提升高于100倍。
● Spark的中间数据存放在内存中,对于迭代运算的效率更高,进行批处理时更高效。
● 更低的延时。
● Spark提供更多的数据操作类型,编程模型比Hadoop更灵活,开发效率更高。
● 更高的容错能力(血统机制)。
Hadoop的不足在于:
● 表达能力有限
● 磁盘IO开销大
● 延迟高
○ 任务之间的衔接涉及IO开销
○ 在前一个任务执行完成之前,其他任务就无法开始,难以胜任复杂、多阶段的计算任务
相比Hadoop的MR计算,Spark的优势在于:
● Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比Hadoop MapReduce更灵活。
● Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高 Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制。1.2 Spark生态体系
Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成了一套完整的生态系统。既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案。因此,Spark所提供的生态系统足以应对上述三种场景,即同时支持批处理、交互式查询和流数据处理。Spark生态圈以Spark Core为核心,从HDFS、Amazon S3和HBase等持久层读取数据,以MESS、YARN和自身携带的Standalone为资源管理器调度Job完成Spark应用程序的计算。 这些应用程序可以来自于不同的组件,如Spark的批处理、Spark Streaming的实时处理应用、Spark SQL的即席查询、MLlib的机器学习、GraphX的图处理等等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。