Распределение разделов по кластеру - PullRequest
0 голосов
/ 08 мая 2018

В apache spark разрешено загружать наборы данных из разных источников. Насколько я понимаю, вычислительные узлы кластера spark могут отличаться от тех, которые используются hadoop для хранения данных (я прав?). Более того, мы можем даже загрузить локальный файл в spark задание. Здесь возникает главный вопрос: даже если мы используем одни и те же компьютеры для целей hdfs и spark, всегда ли верно, что spark при создании RDD будет перетасовывать все данные? Или spark просто попытается загрузить данные таким образом, чтобы воспользоваться уже существующей локальностью данных?

1 Ответ

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

Вы можете использовать HDFS в качестве общего базового хранилища для механизмов MapReduce (Hadoop) и Spark, а также использовать менеджер кластеров, например YARN, для управления ресурсами. Spark попытается воспользоваться преимуществами локальности данных и выполнить задачи как можно ближе к данным.

Вот как это работает : если данные доступны на обрабатываемом узле, но ЦП не свободен, Spark будет ждать определенное количество времени (определяется параметром конфигурации: spark.locality.wait секунд, по умолчанию 3 секунды), чтобы процессор стал доступен.

Если ЦП все еще не свободен после истечения заданного времени, Spark переключит задачу на более низкий уровень локальности. Затем он снова будет ждать spark.locality.wait секунд, а если снова произойдет тайм-аут, он переключится на еще более низкий уровень локальности.

Уровни населенных пунктов определены ниже, в порядке от ближайшего к данным до самого дальнего от данных (https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.scheduler.TaskLocality$):

PROCESS_LOCAL (data is in the same JVM as the running code)
NODE_LOCAL (data is on the same node)
NO_PREF (data is accessed equally quickly from anywhere and has no locality preference)
RACK_LOCAL (data is on the same rack of servers)
ANY (data is elsewhere on the network and not in the same rack)

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

...