嗨我有16个RAM和4个内核的两个节点。 任何人都可以建议我使用火花属性,例如没有遗嘱执行者和遗嘱执行者记忆吗?
我正在使用spark sql查询(选择*带有2个连接的查询)并且还建议我一种方式,以便我将此查询过程时间降低到1秒,我的输入数据现在为10 GB
答案 0 :(得分:3)
每个进程的典型工作负载可能在2到8GB的范围内使用。鉴于您的资源很少,那么每个执行者可能有3G和4个执行者(每个核心一个)。这为O / S和其他过程留下了大量的ram(4gb)。
使用4个执行程序将是spark standalone的默认设置(您正在使用它还是使用Yarn?)在这种情况下,您无需明确指定它。 但以防万一:
Standalone(和mesos):
--total-executor-cores=8
纱线:
--num-executors=1 --executor-cores=4
另一个设置是
--executor-memory=3G
答案 1 :(得分:0)
有两种方法可以分配资源静态和动态分配。以下是如何为应用程序分配静态资源
您的群集资源总数 16 GB RAM 4核
首先应为操作系统分配1个核心和1 GB,留下15 GB RAM和3个核心
Core是Spark中的并发级别,因此您有3个内核可以同时运行3个并发进程。
接下来计算执行者的数量。每个执行程序都在自己的JVM进程中运行,每个Worker节点都可以运行多个执行程序。建议每个执行程序最多具有5个并发进程,否则在单个JVM实例中将无法管理争用量并发进程。因为你只有3个核心,所以你可以拥有1个执行者
在3个内核中划分15 GB的RAM将为每个内核留下5 GB的空间。
因此,在您的情况下,您将设置以下属性
Number of cores = 3
Number of Executors = 1
RAM = 15 GB