聊聊spark这个大数据计算框架

Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了其在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性。

Spark项目包含多个紧密集成的组件。Spark的核心是一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎。由于Spark的核心引擎有着速度快和通用的特点,因此 Spark 还支持为各种不同应用场景专门设计的高级组件,比如SQL和机器学习等。这些组件关系密切并且可以相互调用,我们可以很方便地组合使用这些的组件。

各组件间密切结合的设计原理有这样几个优点:

首先,软件栈中所有的程序库和高级组件都可以从下层的改进中获益。即是当 Spark 的核心引擎新引入了一个优化时,上层的高级组件在使用时也都能自动获得性能提升。

其次,运行整个软件栈的代价变小了,不再需要使用某个框架时另外安装这个框架,只需要一个spark框架就可以了。这些代价包括系统的部署、维护、测试、支持等。这意味着可以不断在spark上扩展新的功能,而使用这些功能不需要另外安装这个功能框架,只需要升级到包含这个功能的版本。

最后,我们能够构建出无缝整合不同处理模型的应用。例如,我们可以利用 Spark在一个应用中就能实现将数据流中的数据使用机器学习算法进行实时分类。同时还可以进行其他的操作。

对于使用spark进行计算任务的优点:

1)支持多个框架和无缝结合

Spark支持复杂查询,而且spark还支持SQL查询、流式计算、机器学习和图算法。同时,用户可以在同一个工作流中无缝搭配这些计算框架。

2)快速处理计算任务

Spark是由scala编写,scala语言具有简洁和丰富的表达力。另外spark充分利用和集成Hadoop等其他第三方组件,spark通过将中间结果缓存在内存减少磁盘I/O来达到性能的提升。

3)支持多种语言编写的程序

Spark支持通过scala、Java及Python编写的程序,并且自带了80多个算子,同时允许在shell中进行交互式计算。用户可以利用spark像写单机程序一样书写分布式程序,轻松利用spark搭建大数据内存计算平台并充分利用内存计算,实现海量数据的实时处理。

4)兼容Hadoop组件

Spark可以独立运行,除了可以运行在当下的yarn等集群管理系统之外,还可以读取已有的任何Hadoop数据。他可以运行在任何Hadoop数据源上,如Hive、HBase、HDFS等。这个特性可以让用户轻易迁移已有的持久化层数据。

没有什么完美的事物,Spark同样也不例外,spark主要用来计算的RDD模型适合的是粗粒度的全局数据并行计算,不适合细粒度的、需要异步更新的计算。如果要针对特定工作负载达到最优性能,还是需要使用一些其他的大数据框架。例如,流计算中的storm在实时性需求很高的场合要比spark Streaming更胜一筹。


你可能感兴趣的:(Spark)