Spark及其生态简介

一、Spark简介

Spark 是一个用来实现快速而通用的集群计算的平台,官网上的解释是:Apache Spark™是用于大规模数据处理的统一分析引擎。 Spark 适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理等,对外提供了十分丰富的API接口, 除了提供基于 Python、 Java、 Scala 和 SQL 的简单易用的API 以及内建的丰富的程序库以外, Spark 还能和其他大数据工具密切配合使用。例如,Spark 可以运行在 Hadoop 集群上,访问包括 Cassandra 在内的任意 Hadoop 数据源。

Spark最大的特点是基于内存的,数据处理速度十分快,号称是100倍于MapReduce处理数据速度。同时Spark还是一个大一统的软件栈,其构成如下图所示:

二、Spark Core简介

Spark Core 实现了 Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统及Spark数据分析等模块。 Spark Core 中还包含了对弹性分布式数据集(resilient distributed dataset,简称 RDD) 的 API 定义。 RDD 表示分布在多个计算节点上可以并行操作的元素集合,是Spark 主要的编程抽象。 Spark Core 提供了创建和操作这些集合的多个 API。

Spark基本架构:

三、Spark SQL简介

Spark SQL 是 Spark 用来操作结构化数据的程序包。通过 Spark SQL,我们可以使用 SQL或者 Apache Hive 版本的 SQL 方言(HQL)来查询数据。Spark SQL 支持多种数据源,比如 Hive 表、 Parquet 以及 JSON 等。除了为 Spark 提供了一个 SQL 接口, Spark SQL 还支持开发者将 SQL 和传统的 RDD 编程的数据操作方式相结合,不论是使用 Python、 Java 还是 Scala, 开发者都可以在单个的应用中同时使用 SQL 和复杂的数据分析。

四、Spark Streaming

Spark Streaming 是 Spark 提供的对实时数据进行流式计算的组件。比如生产环境中的网页服务器日志, 或是网络服务中用户提交的状态更新组成的消息队列,都是数据流。 SparkStreaming 提供了用来操作数据流的 API, 并且与 Spark Core 中的 RDD API 高度对应。这样一来,程序员编写应用时的学习门槛就得以降低,不论是操作内存或硬盘中的数据,还是操作实时数据流, 程序员都更能应对自如。从底层设计来看, Spark Streaming 支持与Spark Core 同级别的容错性、吞吐量以及可伸缩性。

五、Spark MLlib

Spark 中还包含一个提供常见的机器学习(ML)功能的程序库,叫作 MLlib。 MLlib 提供了很多种机器学习算法, 包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。 MLlib 还提供了一些更底层的机器学习原语,包括一个通用的梯度下降优化算法。所有这些方法都被设计为可以在集群上轻松伸缩的架构。

六、GraphX

GraphX 是用来操作图(比如社交网络的朋友关系图)的程序库,可以进行并行的图计算。与 Spark Streaming 和 Spark SQL 类似,GraphX 也扩展了 Spark 的 RDD API,能用来创建一个顶点和边都包含任意属性的有向图。 GraphX 还支持针对图的各种操作(比如进行图分割的 subgraph 和操作所有顶点的 mapVertices),以及一些常用图算法(比如 PageRank和三角计数)。

七、集群管理器

就底层而言, Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。为了实现这样的要求, 同时获得最大灵活性, Spark 支持在各种集群管理器(cluster manager) 上运行, 包括 Hadoop YARN、 Apache Mesos,以及 Spark 自带的一个简易调度器,叫作独立调度器。 如果要在没有预装任何集群管理器的机器上安装 Spark,那么 Spark自带的独立调度器可以让你轻松入门; 而如果已经有了一个装有 Hadoop YARN 或 Mesos的集群,通过 Spark 对这些集群管理器的支持,你的应用也同样能运行在这些集群上。会详细探讨这些不同的选项以及如何选择合适的集群管理器。

八、Spark的用户和用途

Spark 是一个用于集群计算的通用计算框架,因此被用于各种各样的应用程序。两大目标读者人群: 数据科学家和工程师。仔细分析这两个群体以及他们使用 Spark 的方式,我们不难发现这两个群体使用 Spark 的典型用例并不一致,不过我们可以把这些用例大致分为两类------数据科学应用和数据处理应用。

1、 数据科学任务( 数据科学家(data scientist))
2、 数据处理应用(工程师)
相关推荐
码爸2 分钟前
spark读mongodb
大数据·mongodb·spark
WPG大大通12 分钟前
有奖直播 | onsemi IPM 助力汽车电气革命及电子化时代冷热管理
大数据·人工智能·汽车·方案·电气·大大通·研讨会
ws20190717 分钟前
抓机遇,促发展——2025第十二届广州国际汽车零部件加工技术及汽车模具展览会
大数据·人工智能·汽车
丁总学Java24 分钟前
maxwell 输出消息到 kafka
分布式·kafka·maxwell
Data-Miner1 小时前
196页满分PPT | 集团流程优化及IT规划项目案例
大数据·数据分析
徐*红1 小时前
Elasticsearch 8.+ 版本查询方式
大数据·elasticsearch
DolphinScheduler社区1 小时前
怎么办?用DolphinScheduler调度执行复杂的HiveSQL时无法正确识别符号
大数据
goTsHgo1 小时前
Hive自定义函数——简单使用
大数据·hive·hadoop
码爸1 小时前
flink 例子(scala)
大数据·elasticsearch·flink·scala
FLGB1 小时前
Flink 与 Kubernetes (K8s)、YARN 和 Mesos集成对比
大数据·flink·kubernetes