简短介绍下Spark

几个关键词:快速,通用,集群计算平台

Spark扩展了MapReduce计算模型,且支持更多计算模式,包含:

  • 交互式查询
  • 流处理

这里的交互式,不是简单的我们生活中理解的与设备的交互。它的深意是:对于大规模数据集的处理,速度够快。只有速度够快,才能实现交互式操作。

前文提到的,基于内存的数据定义,Spark可以在内存中进行计算。其实,即使不在内存中计算,放在磁盘上,Spark也有很高的性能,比一般的MapReduce要高效。

Spark适用场景:各种需要不同的分布式平台的场景。

Spark将任务整合在统一的框架下支持这些计算,对于多平台的管理,大大降低了管理者的负担。

另外,Spark和其他大数据工具可以密切配合,比如运行在Hadoop集群。

Spark软件栈

spark适用场景 spark使用场景_SQL

从图上可以看出,Spark Core居于核心地位,它是计算引擎,特点是速度快,通用。职能是调度,分发以及监控任务。

Spark Core的性能很棒,所以能够针对不同场景设计更高层次的组件,比如SQL,以及机器学习库等。这些高层组件关系密切,可以互相调用。因此,在Spark上的开发就和我们平时写代码体验相似,这些组件可以简单的组合调用。

得益于组件间的亲密关系,下层改进,上层直接受益。

且在Spark中增加新的组件,其他组件都能马上使用。

六个字:高内聚,低耦合。

书上举的例子:

在应用中将数据流中的数据用机器学习算法进行实时分类。同时,数据分析师可以通过SQL实时查询结果数据,而且还可以通过Python Shell来访问数据,即时分析。

看到这里,大概我们知道了Spark这个解决方案,有着强大的能力,一套系统打遍天下的感觉。

组件简介

Spark Core

实现的是Spark的基本功能,包含:

  • 任务调度
  • 内存管理
  • 错误恢复
  • 存储系统交互
  • 弹性分布式数据集

** Spark SQL**

用于操作结构化数据的程序包。支持多种数据源,如:

  • Hive表
  • Parquet
  • JSON

Spark Streaming

对实时数据进行流式计算。

MLlib

提供的是常见的机器学习功能库,包含:

  • 分类
  • 回归
  • 聚类
  • 协同过滤

同时,还提供了:

  • 模型评估
  • 数据导入

等功能。

Spark设计的这些方法,都可以在集群上轻松伸缩。

GraphX

用于操作关系图(比如社交网络)的程序库,并行计算。

END.