Spark的模块组成(入门必看)

发布:admin2025-05-11 12:57:58 7656条浏览分类:世界杯日本爆冷

前言

上期文章,介绍了Spark不仅能够在内存中进行高效运算,还是一个大一统的软件栈,可以适用于各种各样原本需要多种不同的分布式平台的场景。接下来简要介绍Spark的模块组成。

本期学习目标

Spark的模块组成Spark CoreSpark SQLSpark StreamingMLlibGraphXSparkR

Spark的模块组成

Spark的各个组成模块如下:

Spark 基于 Spark Core 建立了 Spark SQL、Spark Streaming、MLlib、GraphX、SparkR等核心组件;基于这些不同组件又可以实现不同的计算任务;这些计算任务的运行模式有:本地模式、独立模式、YARN、Mesos等;Spark任务的计算可以从HDFS、HBase、Cassandra等多种数据源中存取数据。

Spark Core

Spark Core实现了Spark基本的核心功能,如下:

基础设施 SparkConf :用于定义Spark应用程序的配置信息; SparkContext :为Spark应用程序的入口,隐藏了底层逻辑,开发人员只需使用其提供的API就可以完成应用程序的提交与执行; SparkRPC :Spark组件之间的网络通信依赖于基于Netty实现的Spark RPC框架; SparkEnv :为Spark的执行环境,其内部封装了很多Spark运行所需要的基础环境组件; ListenerBus :为事件总线,主要用于SparkContext内部各组件之间的事件交互; MetricsSystem :为度量系统,用于整个Spark集群中各个组件状态的监控;

存储系统 用于管理Spark运行过程中依赖的数据的存储方式和存储位置,Spark的存储系统首先考虑在各个节点的内存中存储数据,当内存不足时会将数据存储到磁盘上,并且内存存储空间和执行存储空间之间的边界也可以灵活控制。

调度系统 DAGScheduler :负责创建job、将DAG中的RDD划分到不同Stage中、为Stage创建对应的Task、批量提交Task等; TaskScheduler :负责按照FIFO和FAIR等调度算法对Task进行批量调度;

计算引擎 主要由内存管理器、任务管理器、Task、Shuffle管理器等组成。

Spark SQL

Spark SQL 是 Spark 用来操作结构化数据的程序包,支持使用 SQL 或者 Hive SQL 或者与传统的RDD编程的数据操作结合的方式来查询数据,使得分布式数据的处理变得更加简单。

Spark Streaming

Spark Streaming 提供了对实时数据进行流式计算的API,支持Kafka、Flume、TCP等多种流式数据源。此外,还提供了基于时间窗口的批量流操作,用于对一定时间周期内的流数据执行批量处理。

MLlib

Spark MLlib 作为一个提供常见机器学习(ML)功能的程序库,包括分类、回归、聚类等多种机器学习算法的实现,其简单易用的 API 接口降低了机器学习的门槛。

GraphX

GraphX 用于分布式图计算,比如可以用来操作社交网络的朋友关系图,能够通过其提供的 API 快速解决图计算中的常见问题。

SparkR

SparkR 是一个R语言包,提供了轻量级的基于 R 语言使用 Spark 的方式,使得基于 R 语言能够更方便地处理大规模的数据集。

以上是本期分享,如有帮助请大家记得 点赞+关注+收藏 支持下哦~ 下期讲解 Spark 的集群架构。

Spark系列 : 干货!Spark概述(入门必看)