这是我参与「第四届青训营 」笔记创作活动的第8天。
第五节课「Spark 原理与实践」的内容主要包含 4 个方面:Spark 介绍、Spark Core 原理解析、Spark SQL 原理解析、业界挑战与实践。这篇文章为大数据处理引擎Spark介绍,包括 Spark 的特点、Spark 生态组件、Spark 运行架构和工作原理和 Spark 目前支持的集群管理器。
大数据处理引擎Spark介绍
Spark 的特点
- 统一引擎,支持多种分布式场景
- 多语言支持
- 可读写丰富数据源
- 丰富灵活的 API/算子
- 支持 K8S/YARN/Mesos 资源调度
Spark 生态组件
-
Spark Core:Spark 核心组件,它实现了 Spark 的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。
-
Spark SQL:用来操作结构化数据的核心组件,通过 Spark SQL 可以直接查询 Hive、HBase 等多种外部数据源中的数据。
-
Spark Structured Streaming:Spark 提供的流式计算框架,支持高吞吐量、可容错处理的实时流式数据处理。
-
MLlib:Spark 提供的关于机器学习功能的算法程序库,包括分类、回归、聚类、协同过滤算法等,还提供了模型评估、数据导入等额外的功能。
-
GraphX:Spark 提供的分布式图处理框架,拥有对图计算和图挖掘算法的API接口以及丰富的功能和运算符。
-
独立调度器、Yarn、Mesos、Kubernetes:Spark 框架可以高效地在一个到数千个节点之间伸缩计算,集群管理器则主要负责各个节点的资源管理工作,为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行。
Spark 运行架构和工作原理
-
Application(应用):Spark 上运行的应用。Application 中包含了一个驱动器(Driver)进程和集群上的多个执行器(Executor)进程。
-
Driver Program(驱动器):运行 main() 方法并创建 SparkContext 的进程。
-
Cluster Manager(集群管理器):用于在集群上申请资源的外部服务(如:独立部署的集群管理器、Mesos 或者 Yarn)。
-
Worker Node(工作节点):集群上运行应用程序代码的任意一个节点。
-
Executor(执行器):在集群工作节点上为某个应用启动的工作进程,该进程负责运行计算任务,并为应用程序存储数据。
-
Task(任务):执行器的工作单元。
-
Job(作业):一个并行计算作业,由一组任务(Task)组成,并由 Spark 的行动(Action)算子(如:save、collect)触发启动。
-
Stage(阶段):每个 Job 可以划分为更小的 Task 集合,每组任务被称为 Stage。
Spark 目前支持的集群管理器
- Standalone :Spark 附带的简单集群管理器,可以轻松设置集群。
- Hadoop YARN: Hadoop 2 和 3 中的资源管理器。
- Kubernetes:用于自动部署、扩展和管理容器化应用程序的开源系统。
个人总结
了解了 Spark 的特点、Spark 生态组件、Spark 运行架构和工作原理和 Spark 目前支持的集群管理器。