Я хочу запустить некоторые задания pyspark на YARN
. У меня есть 2 узла, каждый по 10 ГБ. Я могу открыть оболочку pyspark так: pyspark
Теперь, когда у меня есть очень простой пример, который я пытаюсь запустить:
import random
NUM_SAMPLES=1000
def inside(p):
x, y = random.random(), random.random()
return x*x + y*y < 1
count = sc.parallelize(xrange(0, NUM_SAMPLES)) \
.filter(inside).count()
print "Pi is roughly %f" % (4.0 * count / NUM_SAMPLES)
В результате получается очень длинный журнал искры с выходом ошибки. Наиболее важная информация:
ERROR cluster.YarnScheduler: Lost executor 1 on (ip>: Container marked as failed: <containerID> on host: <ip>. Exit status 1. Diagnostics: Exception from container-launch. ......
далее в журналах, которые я вижу...
ERROR scheduler.TaskSetManager: Task 0 in stage 0.0 failed 1 times: aborting job
INFO cluster.YarnClientSchedulerBackend: Asked to remove non-existent executor 1
INFO spark.ExecutorAllocationManager: Existing executor 1 has been removed (new total is 0)
Из того, что я собираю из журналов выше, это, по-видимому, проблема размера контейнера в пряже.
Мой yarn-site.xml
файл имеет следующие настройки:
yarn.scheduler.maximum-allocation-mb = 10240
yarn.nodemanager.resource.memory-mb = 10240
и в spark-defaults.conf
содержит:
spark.yarn.executor.memoryOverhead=2048
spark.driver.memory=3g
Если есть другие настройки, о которых вы хотели бы узнать, сообщите мне.
Как настроить размер контейнера в пряже?
(щедрость на пути для тех, кто может мне помочь)