Databricks是否为给定的集群和数据集提供了推荐的火花参数?

问题描述:

我刚刚创建了一个7节点Spark集群,每个工作人员拥有8GB内存和4个内核。它不是一个巨大的集群,但是对于一个简单的terasort只有10GB的数据,“超出GC开销限制” 失败。Databricks是否为给定的集群和数据集提供了推荐的火花参数?

我想知道如何决定Spark集群的这些基本参数,以便随着数据大小的增长作业不会失败。遗嘱执行人的

  1. NUM
  2. NUM分区
  3. 并行
  4. 执行内核
  5. 执行内存

如果配置不正确,而是处理死去,我不介意工作运行速度慢因为缺乏记忆是一个大红旗。

一些信息,如火花版本,输入格式(文本,parquet,orc),压缩等,肯定会有所帮助。

但总之以下是一般的拇指规则。

  1. num-executors - 这是您的整个集群将用于此作业的执行程序的总数。执行器可以包含一个或多个任务。人们会倾向于认为一个节点=一个执行者。每个节点最多有一个执行器。稍后在答案中更多。
  2. executor-cores - 这是每个执行程序的核心数(任务)总数。在你的情况下,起始点是每个执行者4个核心(即每个节点)。
  3. executor-memory - 每个执行器的总内存。这由执行者中的所有任务或核心共享。

最有可能的构型(但不太有效) NUM-执行人= 7,执行器型磁芯= 4,执行程序存储器=8克 在这种情况下,一个执行器是由4个任务共享。如果其中一个失败,则整个执行程序被标记为失败。

更好的配置 NUM-执行人= 14(2每节点),执行器型磁芯= 2(2%执行人),执行程序存储器= 3G(每执行3G,留下2克为过程的其余部分)

请注意,每个执行者1个核心也不好,因为在这种情况下执行者启动时间可能太多。

在这种情况下,您将划分资源以避免杀死整个执行程序。

并行性 这取决于输入数据的格式。