【发布时间】:2019-09-15 05:22:29
【问题描述】:
我对什么是客户端模式和集群模式有疑问。举个例子:
我的 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)
我正在使用 SSH linux 服务器。为了能够运行 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执行代码。这种方式叫集群方式吗?
【问题讨论】:
标签: apache-spark pyspark