databricks是否为给定的集群和数据集提供了推荐的spark参数?

mm5n2pyu  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(368)

我刚刚创建了一个7节点的spark集群,每个worker都有8gb内存和4个内核。它不是一个巨大的集群,但对于一个简单的terasort,它的数据量仅为10gb,因此“超出了gc开销限制”。
我想知道如何确定spark集群的这些基本参数,以便作业不会随着数据大小的增长而失败。
执行人人数
分区数
平行度
执行器核心
执行器存储器
如果配置不正确,我不介意作业运行缓慢,但由于内存不足而导致进程死机是一个很大的危险信号。

wvmv3b1j

wvmv3b1j1#

一些信息如spark版本、输入格式(文本、Parquet、orc)、压缩等肯定会有所帮助。
但简言之,以下通常是经验法则。
num executors-这是整个集群将为此作业投入的执行器总数。执行器可以包含一个或多个任务。人们倾向于认为一个节点=一个执行者。每个节点最好有多个执行器。在后面的答案中会有更多关于这个的内容。
executor cores-这是每个executor的核心(任务)总数。在您的例子中,起点是每个执行器4个核心(即每个节点)。
executor memory—每个执行器的总内存。这由执行器中的所有任务或核心共享。
最可能的配置(但效率较低)num executors=7,executor cores=4,executor memory=8g在这种情况下,一个executor由4个任务共享。如果其中一个失败,则整个执行器将被标记为失败。
更好的配置num executors=14(每个节点2个),executor cores=2(每个executor 2个),executor memory=3g(每个executor 3g,剩下2g用于其余进程)
请注意,每个执行器一个内核也不好,因为在这种情况下,执行器启动时间可能太长。
在这种情况下,您需要划分资源以避免杀死整个执行器。
并行性这取决于输入数据的格式。

相关问题