部署图 从部署图中可以看到
整个集群分为 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