为什么只有少数节点在 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" \

多亏了这个脚本,所有节点都能正常工作。