У меня есть сомнения, чтобы понять, что такое режим клиента и режим кластера.Давайте рассмотрим пример:
У меня есть test.py со следующим:
if __name__ == "__main__":
conf = (SparkConf()
.setAppName(appName)
.set("spark.executor.memory", ?)
.set('spark.driver.memory', ?)
.set('spark.executor.memoryOverhead',?)
.set("spark.network.timeout", ?)
.set("spark.files.overwrite", ?)
.set("spark.executor.heartbeatInterval", ?)
.set("spark.driver.maxResultSize", ?)
.set("spark.executor.instances", ?)
.set("spark.executor.cores", ?)
.set("spark.driver.cores", ?)
.set("spark.sql.shuffle.partitions", ?)
)
spark = SparkSession.builder.config(conf=conf).getOrCreate()
start_time = time.time()
sc = spark.sparkContext
sqlContext = SQLContext(sparkContext = sc)
Я работаю на Linux-сервере SSH.Чтобы запустить test.py, я могу сделать две опции:
1- Зарезервировать узел, используя следующую команду:
salloc --time=03:00:00 --cpus-per-task=32 --mem=0 --account=def-myName
Эта команда позволяет мне зарезервировать узел на трич.Этот узел имеет следующую спецификацию:
Cores: 32
Available memory: 125 gb
CPU type: 2 x Intel E5-2683 v4 "Broadwell" @ 2.1Ghz
Storage: 2 x 480GB SSD
теперь для запуска test.py, я просто набираю spark-submit test.py
.Этот способ называется режимом клиента или режимом кластера?Если это клиентский режим, как я могу установить:
Master Memory:
Master Cores:
Number of Worker Nodes:
Memory per worker node (gb):
Cores per worker node:
2 - я могу запустить job.sh
, где это определяется следующим образом:
#SBATCH --nodes=1
#SBATCH --time=
#SBATCH --mem=128000M
#SBATCH --cpus-per-task=
#SBATCH --ntasks-per-node=
#SBATCH --output=sparkjob-%j.out
#SBATCH --mail-type=ALL
#SBATCH --error=
## send mail to this address
#SBATCH --mail-user=
spark-submit --total-executor-cores xxx --driver-memory xxxx test.py
....
Затем я выполняю код с помощьюsbatch job.sh
.Этот путь называется кластерным способом?