PySpark实战:Spark核心概念

来自CloudWiki
跳转至: 导航搜索

Spark软件栈

核心组件:

  • Spark Core
  • Spark SQL:处理HDFS、HBase等多种数据源中的数据
  • Spark Streaming:实时数据流处理组件,一般需配合Kafaka
  • Spark MLlib: 机器学习包
  • Spark Graph:专门处理图的库,如社交网络图的计算

Spark提供了一站式的软件栈。

Spark运行架构

Python21061801.png

  • Application:提交一个作业就是Application,一个Application只有一个SparkContext
  • Driver程序:一个Spark作业运行时会启动一个Driver进程,也就是作业的主进程。Driver程序运行应用程序的main函数,并创建SparkContext进程。
  • SparkContext: 是程序运行调度的核心,SparkContext是Spark程序入口
  • Cluster Manager:用于获得群集资源的外部服务。
  • Worker:Worker节点是集群中的Worker,执行任务Task
  • Executor: 是真正执行作业Task的地方,分布在集群的Worker节点上
  • Task: 是执行任务的工作单位,每个Task都会被发送到一个Worker节点上

Spark部署模式

Spark有多种部署模式

Local模式

本地采用多线程的方式执行,主要用于开发测试

Spark on YARN模式

每个Spark Executor作为一个YARN Container在运行,

同时支持多个任务在同一个Container中运行。

Spark on YARN又有两种模式:yarn-cluster 和yarn-client

yarn-cluster

Driver运行在Appliaction Master中,即运行在集群中的某个节点上

适合大数据量、非交互式的场景(生产环境)

yarn-clent

Driver运行在Client端,会和请求的YARN Container通信来调度它们工作,

适合交互类型的作业。

Standalone模式

Standalone模式和Local模式类似,

但是Standalone的分布式调度器是由Spark提供的,

在yarn-client和yarn-cluster模式下提交作业时,可以不启动Spark集群,因为相关JVM环境由YARN管理,而Standalone模式提交作业时,Spark集群必须启动,因为它运行依赖的调度器来自Spark集群本身。