部署图
从部署图中可以看到
- 整个集群分为 Master 节点和 Worker 节点,相当于 Hadoop 的 Master 和 Slave 节点。
- Master节点上常驻 Master 守护进程,负责管理全部的Worker 节点。
- Worker 节点上常驻 Worker 守护进程,负责与Master 节点通信并管理 executors。
- Application 就是用户自己写的 Spark 程序(driver program),比如 WordCount.scala。如果 driver program 在Master 上运行,比如在 Master 上运行
./bin/run‐example SparkPi 10
那么 SparkPi 就是 Master 上的 Driver。如果是 YARN 集群,那么 Driver 可能被调度到 Worker 节点上运行(比如上
图中的 Worker Node 2)。
- 每个 Worker 上存在一个或者多个 ExecutorBackend 进程。每个进程包含一个 Executor对象,该对象持有一个线程概览部署图 池,每个线程可以执行一个 task。 每个 application 包含一个 driver 和多个executors,每个 executor 里面运行的 tasks 都属于同一个 application。
- 在 Standalone版本中,ExecutorBackend 被实例化成 CoarseGrainedExecutorBackend 进程。
我们使用重点内容 Spark 自带的 examples 包中的 GroupByTest,假设在 Master 节点运行,命令是
bin/run‐example GroupByTest 100 10000 1000 36