Вы можете использовать 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 секундам, поскольку процессор может быть связан дольше.