文章目录
1 spark core的重要概念和理解
1.1 spark基本概念
-
Application
用户在 spark 上构建的程序,包含了 driver 程序以及在集群上运行的程序代码,物理机器上涉及了 driver,master,worker 三个节点. -
Driver Program
创建 sc ,定义 udf 函数,定义一个 spark 应用程序所需要的三大步骤的逻辑:加载数据集,处理数据,结果汇总和展示。 -
Cluster Manager
集群的资源管理器,在集群上获取资源的外部服务。 拿 Yarn 举例,客户端程序会向 Yarn 申请计算我这个任务需要多少的 memory,多少 CPU,etc。 然后 yarn会通过调度告诉客户端可以使用申请的资源,然后客户端就可以把程序送到每个 Worker Node 上面去执行了。也就是说,先申请资源,然后调度资源,再之执行程序。 -
Worker Node
集群中任何一个可以运行spark应用代码的节点。Worker Node就是物理节点,可以在上面启动Executor进程。区别与Master节点,Work Node上执行的程序流程稍单纯一些。 -
Executor
在每个 Worker Node 上为某应用启动的一个进程(注意:是进程,不是线程),该进程负责运行任务,并且负责将数据存在内存或者磁盘上,每个任务都有各自独立的 Executor。 Executor 是一个执行 Task 的容器。它的主要职责是:- 初始化程序要执行的上下文 SparkEnv,解决应用程序需要运行时的 jar 包的依赖,加载类。
- 同时还有一个ExecutorBackend 向 cluster manager 汇报当前的任务状态,这一方面有点类似 hadoop的tasktracker 和 task。