Spark 架构
Spark遵循主从架构。其集群由一个主节点和多个从节点组成。
Spark架构依赖于两个抽象概念:
- 弹性分布式数据集(RDD)
- 有向无环图(DAG)
弹性分布式数据集(RDD)
弹性分布式数据集是可以存储在工作节点内存中的一组数据项。这里:
- 弹性:在故障时能够恢复数据。
- 分布式:数据分布在不同节点之间。
- 数据集:一组数据。
我们稍后会详细学习RDD。
有向无环图(DAG)
有向无环图是在数据上执行一系列计算的有限直接图。每个节点是一个RDD分区,边是对数据的转换。这里,图表示导航,而有向和无环表示如何进行。
我们来了解一下Spark架构。
驱动程序
驱动程序是运行应用程序的main()函数并创建SparkContext对象的过程。SparkContext的目的是协调独立的进程集在集群上运行的Spark应用程序。
要在集群上运行,SparkContext连接到不同类型的集群管理器,然后执行以下任务:-
- 它在集群的节点上获取执行器。
- 然后,它将应用程序代码发送给执行器。在这里,应用程序代码可以由传递给SparkContext的JAR或Python文件定义。
- 最后,SparkContext向执行器发送任务以运行。
集群管理器
- 集群管理器的作用是在应用程序之间分配资源。Spark可以在大量的集群上运行。
- 它包括各种类型的集群管理器,如Hadoop YARN、Apache Mesos和独立调度程序。
- 在这里,独立调度程序是一个独立的Spark集群管理器,可以在一组空机器上安装Spark。
工作节点
- 工作节点是一个从节点。
- 它的作用是在集群中运行应用程序代码。
执行器
- 执行器是在工作节点上为应用程序启动的一个进程。
- 它运行任务并在它们之间保留数据在内存或磁盘存储。
- 它读取和写入外部数据源。
- 每个应用程序都包含自己的执行器。
任务
- 一个将被发送到一个执行器的工作单元。