spark-sql Initial job has not accepted any resources

  • 【TiDB 版本】:v4.0.6
  • 【问题描述】:

多个用户使用spark-sql时,只有一个用户能成功执行sql。 其它用户执行时报以下警告:

20/11/05 11:40:51 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufnt resources

使用扩容方式部署的tispark
tiup cluster scale-out tidb-test tispark.yaml

tispark_masters:

  • host: 172.16.188.121
    deploy_dir: “/data/tispark-master”
    java_home: “/usr/java/jdk1.8.0_261-amd64”

tispark_workers:

  • host: 172.16.188.128
    deploy_dir: “/data/tispark-worker”
    java_home: “/usr/java/jdk1.8.0_261-amd64”
  • host: 172.16.188.124
    deploy_dir: “/data/tispark-worker”
    java_home: “/usr/java/jdk1.8.0_261-amd64”

这里的spark-sql只能单个用户使用吗? 如果要多个用户同时使用,需要配置什么参数。怎么配置?

这里一个app就把cpu占满了,这个可以设置吗?

可以参考一下这个链接看下:

https://blog.csdn.net/jiangshouzhuang/article/details/48844859

因为集群的资源都被第一个spark application都占用了,所以第二个spark application没有申请到资源,因此无法运行,有2个解决办法

  1. 增加集群资源
  2. 让第一个spark application少用一些资源,分给第二个一些资源

提交任务的时候设置一下参数 --total-executor-cores 用来限制申请的资源数量

直接通过 spark-sql 命令执行,默认就申请16 cores ,而内存默认为1G。这里有参数可以设置默认吗

用下面四个参数
–total-executor-cores NUM Total cores for all executors.

–executor-cores NUM Number of cores per executor. (Default: 1 in YARN mode,
or all available cores on the worker in standalone mode)

–driver-memory MEM Memory for driver (e.g. 1000M, 2G) (Default: 1024M).

–executor-memory MEM Memory per executor (e.g. 1000M, 2G) (Default: 1G).