Spark 资源调度 - 独立集群管理器

Spark resource scheduling - Standalone cluster manager

我在 Spark 中开发的数据管道的配置测试机配置很低。我将只使用一个 AWS t2.large 实例,它只有 2 CPUs 和 8 GB RAM。

我需要 运行 2 个 spark 流作业,并留出一些内存和 CPU 能力以偶尔测试批处理作业。

所以我有 master 和一个 worker,它们在同一台机器上。

我有一些一般性问题: 1)每个工人可以 运行 多少个执行者?我知道默认值是 1,但更改它有意义吗?

2) 一个执行器可以执行多个应用程序,还是一个执行器只专用于一个应用程序?

3) 是否有一种方法可以使它工作,设置应用程序可以在配置文件中使用的内存,或者当我创建 spark 上下文时?

谢谢

How many executors can run per one worker? I know that default is one, but does it make sense to change this?

只有在你有足够的资源的情况下才有意义。比如说,在一台有 24 GB 和 12 个内核的机器上,如果您确定 8 GB 足够一个执行程序,则可以 运行 3 个执行程序。

Can one executor execute multiple applications, or one executor is dedicated only to one application?

不,每个应用程序都会启动自己的执行程序。

Is a way to make this work, to set memory that application can use in configuration file, or when I create spark context?

我不确定我是否理解问题,但是有 3 种方法可以为应用程序提供配置

  • 文件 spark-defaults.conf,但不要忘记在创建新的 SparkConf 实例时打开以读取默认属性。
  • 通过 -D 提供系统属性,当您 运行 应用程序或 --conf 如果那是 spark-submit 或 spark-shell。虽然对于内存选项有特定的参数,如 spark.executor.memory 或 spark.driver.memory 和其他要使用的参数。
  • 使用其设置方法通过新的 SparkConf 实例提供相同的选项。