Мы также столкнулись с этой проблемой и надеемся, что некоторые инженеры AWS или Spark читают это. Я сузил это до файла /etc/spark/conf/log4j.properties
и того, как логгеры настраиваются с помощью системного свойства ${spark.yarn.app.container.log.dir}
. Это значение оценивается как null
, и поэтому каталог журналов теперь оценивается как /stdout
и /stderr
вместо желаемого /mnt/var/log/hadoop-yarn/containers/<app_id>/<container_id>/(stdout|stderr)
, как это работает в EMR <5.18.0. </p>
Обходной путь # 1 (не идеальный): если вы установите для этого свойства статический путь, к которому у пользователя hadoop есть доступ, например, /var/log/hadoop-yarn/stderr
, все будет работать нормально. Это, вероятно, ломает такие вещи, как сервер истории и неизвестное число других вещей, но spark-shell и pyspark могут запускаться без ошибок.
ОБНОВЛЕНИЕ Обходной путь № 2 (откат): Не уверен, почему я не делал этого раньше, но, сравнивая это с кластером 5.13, все приложения DRFA-stderr и DRFA-stdout были не существует. Если вы закомментируете эти разделы, удалите их или просто скопируете файл log4j.properties из шаблона, эта проблема также исчезнет (опять-таки, неизвестное влияние на остальные службы). Я не уверен, откуда произошел этот раздел, в конфигурациях основного репозитория нет этих приложений, поэтому он, похоже, является проприетарным для дистрибутивов AWS.