Spark文档 - 集群模型预览

组件

Spark应用程序运行在集群上的独立进程中,由驱动程序中的SparkContext对象调度。

SparkContext可以连接到几种集群管理器(例如Standalone,Mesos和YARN),这些集群管理器可以为应用程序分配资源。连接完成后,Spark从集群节点上申请executor,它负责执行计算过程并存储数据。接着Spark将应用程序代码发送到各个executor中。最后,SparkContext将task发送给executor执行。

Spark文档 - 集群模型预览_第1张图片
image

有几点需要注意:

  1. 每个应用程序都有自己的executor进程,这些executor会一直存在直到应用程序终结,并以多线程方式执行task。这样的好处是可以从调度层面(驱动程序调度任务)和executor层面(不同应用程序的task运行在不同的JVM中)上彼此隔离。同时也意味着数据无法跨应用程序共享,除非将数据写入外部存储系统。
  2. Spark对底层的集群管理器一无所知。只要它能够申请executor进程,让executor彼此间通信,就可以运行在各种集群管理器上。
  3. 驱动程序必须能够监听并接收来自executor的连接请求。
  4. 因为驱动程序在集群上调度task,所以它最好离工作节点足够近,最好是同一局域网。

术语

下面列出了Spark常用定义:

  • Application:用户代码,由驱动程序executor组成。
  • Application jar:包含Spark应用程序的jar包。
  • Driver Program:执行应用程序main()函数的进程,负责创建SparkContext。
  • Cluster manager:申请资源的外部服务(例如Standalone,Mesos和YARN)。
  • Deploy mode:分为集群模式和本地模式。
  • Worker node:集群中可以执行应用程序的节点。
  • Executor:在工作节点上负责执行任务的进程。
  • Task:发送给executor的工作单元。
  • Job:由多个任务组成的并行计算,这些任务对应着Spark的action算子(例如savecollect)。可以在驱动日志中看到这个术语。
  • Stage:每个job会分成几个彼此依赖的stage。

你可能感兴趣的:(Spark文档 - 集群模型预览)