为什么只有少数节点在 apache spark on yarn 中工作?
Why do only few nodes work in apache spark on yarn?
我有 7 个数据节点和 1 个名称节点。我们的每个节点都有 32 Gb 的内存和 20 个内核。所以我将容器内存设置为 30 Gb,并将容器虚拟 CPU 核心设置为 18。
然而,只有三个数据节点工作,其余数据节点不工作。
下面的代码是我的设置。
/opt/spark/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--driver-cores 18 \
--executor-memory 8g \
--executor-cores 18 \
--num-executors 7 \
Java代码
SQLContext sqlc = new SQLContext(spark);
Dataset<Row> df = sqlc.read()
.format("com.databricks.spark.csv")
.option("inferSchema", "true")
.load(traFile);
df.repartition(PartitionSize); //PartitionSize = 7
df.persist( StorageLevel.MEMORY_ONLY() );
这是我的数据信息:
然后我尝试下面的命令
sudo -u hdfs hdfs balancer
然而,
我可以通过添加我的脚本来解决这个问题,
--conf "spark.locality.wait.node=0"
下面的代码是我的新脚本,
/opt/spark/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--driver-cores $drivercores \
--executor-memory 8g \
--executor-cores $execores \
--num-executors $exes \
--conf "spark.locality.wait.node=0" \
多亏了这个脚本,所有节点都能正常工作。
我有 7 个数据节点和 1 个名称节点。我们的每个节点都有 32 Gb 的内存和 20 个内核。所以我将容器内存设置为 30 Gb,并将容器虚拟 CPU 核心设置为 18。
然而,只有三个数据节点工作,其余数据节点不工作。
下面的代码是我的设置。
/opt/spark/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--driver-cores 18 \
--executor-memory 8g \
--executor-cores 18 \
--num-executors 7 \
Java代码
SQLContext sqlc = new SQLContext(spark);
Dataset<Row> df = sqlc.read()
.format("com.databricks.spark.csv")
.option("inferSchema", "true")
.load(traFile);
df.repartition(PartitionSize); //PartitionSize = 7
df.persist( StorageLevel.MEMORY_ONLY() );
这是我的数据信息:
然后我尝试下面的命令
sudo -u hdfs hdfs balancer
然而,
我可以通过添加我的脚本来解决这个问题,
--conf "spark.locality.wait.node=0"
下面的代码是我的新脚本,
/opt/spark/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--driver-cores $drivercores \
--executor-memory 8g \
--executor-cores $execores \
--num-executors $exes \
--conf "spark.locality.wait.node=0" \
多亏了这个脚本,所有节点都能正常工作。