Почему почти постоянное время выполнения при увеличении рабочих Spark автономно - PullRequest
0 голосов
/ 21 мая 2018

Мне говорят, что рекомендуемое количество рабочих для установки - одно на ядро ​​при использовании Spark.Я не получаю ухудшения в производительности, хотя, когда число рабочих намного выше ядер на моем компьютере.Почему это может быть?

from time import time
from pyspark import SparkContext

for j in range(1, 10):
    sc = SparkContext(master="local[%d]" % (j))
    t0 = time()
    for i in range(10):
        sc.parallelize([1, 2] * 1000000).reduce(lambda x, y: x + y)
    print("%2d executors, time=%4.3f" % (j, time() - t0))
    sc.stop()

# 1 executors time=6.112
# 2 executors time=5.202
# 3 executors time=4.695
# 4 executors time=5.090
# 5 executors time=5.262
# 6 executors time=5.156
# 7 executors time=5.274
# 8 executors time=5.376
# 9 executors time=5.124

Характеристики оборудования:

  • MacBook Pro
  • Intel Core i5, 2,3 ГГц
  • Общее количество ядер2
  • Кэш L2 256 КБ
  • Кэш L3 4 МБ
  • Память 16 ГБ

1 Ответ

0 голосов
/ 21 мая 2018

Вы не измеряете ничего полезного.При таком небольшом объеме времени обработка данных незначительна:

>>> %timeit  for i in range(10): sum([1, 2] * 100000)
23.6 ms ± 1.24 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

Фактическая задержка почти полностью обусловлена ​​временем инициализации и, в меньшей степени, накладными расходами планирования.

Также

рекомендуемое количество рабочих для установки - один на ядро ​​при использовании Spark.

не совсем правильно.Многие задания Spark ограничены вводом-выводом, и рекомендуется переподписка ресурсов.

Самая большая проблема заключается в том, что если задачи становятся небольшими (как здесь), стоимость запуска задачи больше, чем стоимость обработки.На практике ваш процессор переключает потоки много раз в секунду - добавление нескольких дополнительных потоков не будет иметь большого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...