I was able to reproduce the error by setting spark.executor.memory to a value greater than 2G (where my Spark nodes all have 2G RAM)
This works:
spark-submit --num-executors=6 --conf spark.driver.memory=1G --conf spark.executor.memory=2G --deploy-mode client test.py
With spark.executor.memory=3G I get the same error
spark-submit --num-executors=6 --conf spark.driver.memory=1G --conf spark.executor.memory=3G --deploy-mode client test.py
. . .
WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
You should check if your worker with 16GB RAM is really available to the Spark driver, I cannot explain otherwise where the limitation comes from (the number of executors is irrelevant, as they can always be started sequentially).
By the way: I was not able to use spark.driver.memory=500M, minumum allowed for my cluster was 550M:
py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: java.lang.IllegalArgumentException: System memory 466092032 must be at least 471859200. Please increase heap size using the --driver-memory option or spark.driver.memory in Spark configuration.