кластер искр на пряже создает работу спарк с числом рабочих, которое намного меньше, чем указано в контексте спарк - PullRequest
1 голос
/ 26 февраля 2020

Кластер Spark on Yarn создает задание Spark с числом рабочих, которое намного меньше (всего 4 человека), чем указано в контексте Spark (100): вот как я создаю контекст и сеанс Spark:

config_list = [
    ('spark.yarn.dist.archives','xxxxxxxxxxx'),
    ('spark.yarn.appMasterEnv.PYSPARK_PYTHON','xxxxxxxxx'),
    ('spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON','xxxxxxxxxxx'),
    ('spark.local.dir','xxxxxxxxxxxxxxxxxx'),
    ('spark.submit.deployMode','client'),
    ('spark.yarn.queue','root.default'),
    ('spark.dynamicAllocation.minExecutors','100'),
    ('spark.dynamicAllocation.maxExecutors','100'),
    ('spark.executor.instances','100'),
    ('spark.executor.memory','40g'),
    ('spark.driver.memory','40g'),
    ('spark.yarn.executor.memoryOverhead','10g')
]

conf = pyspark.SparkConf().setAll(config_list)

spark = SparkSession.builder.master('yarn')\
    .config(conf=conf)\
    .appName('hyperparamtuning')\
    .getOrCreate()

sc = spark.sparkContext

был бы признателен за любые идеи

1 Ответ

0 голосов
/ 26 февраля 2020

В сеансе spark будет выделено максимальное количество свободных рабочих узлов, доступных во время выполнения вашей работы, если вы укажете минимальные рабочие узлы, которые будут больше, чем равные фактическим рабочим / исполнителям, присутствующим в вашем кластере.

Вы также можете убедиться в этом, посмотрев количество исполнителей, выделенных в сеансе, используя ниже:

sc._conf.get('spark.executor.instances')

Надеюсь, вы понимаете

...