我正在尝试使用Spark Standalone Cluster。我想设置群集设置,应用程序始终使用尽可能多的群集资源。我更改了以下设置:
spark-defaults.conf (on Master node)
spark.driver.cores (works fine)
spark.driver.memory (works fine)
spark.executor.cores
spark.executor.memory
spark-env.sh (on each node, depending on the available hardware)
SPARK_WORKER_CORES
SPARK_WORKER_MEMORY
我是对的,每个Executor始终使用相同的资源运行,因为设置spark.executor.cores
&全局设置spark.executor.memory
?
是否无法为每台机器设置不同的值以更有效地使用资源?我的群集具有以下硬件:
- Master: 12 CPU Cores & 128 GB RAM (~10 GB RAM / Core)
- Slave1: 12 CPU Cores & 64 GB RAM (~ 5 GB RAM / Core)
- Slave2: 6 CPU Cores & 64 GB RAM (~10 GB RAM / Core)
正如您所看到的,RAM / Core值非常不同,这似乎是问题的问题吗?
答案 0 :(得分:1)
只需更改spark-env.sh
Master
和每个奴隶(Executor
节点)
主人:spark-env.sh
SPARK_WORKER_CORES=12
SPARK_WORKER_MEMORY=10g
奴隶1:spark-env.sh
SPARK_WORKER_CORES=12
SPARK_WORKER_MEMORY=5g
奴隶2:spark-env.sh
SPARK_WORKER_CORES=6
SPARK_WORKER_MEMORY=10g
请查看此documentation链接以了解配置信息。
答案 1 :(得分:0)
好的,我现在知道了 - 设置以下参数:
arr = [['value', 'element1'],['value', 'element2'], ['value1', 'element1'], ['value', null]];
obj = {}
arr.forEach(function(item) {
var key = item[0];
if (key) {
obj[key] = obj[key] || [];
item.forEach(function(val, index) {
if (index != 0 && val) {
obj[key].push(val);
}
});
}
});
console.log(Object.keys(obj).map(function(key) {
obj[key].unshift(key);
return obj[key];
}));
因为我想使用" strong"驱动程序和执行程序进程的主节点,我还设置了以下内容:
spark-defaults.conf (on Master):
spark.executor.memory 60g
(spark.executor.cores not set! -> executor can use all available -> see setting SPARK_EXECUTOR_CORES below!)