Работа Oozie не работает с Mapr 6.x

Я пытаюсь отправить искру в oozie в режиме пряжи-клиента. Когда я запускаю искровую работу вне oozie, она работает нормально. Но когда я отправляю задание oozie, оно продолжает выходить из строя с ошибкой ниже:

Exception in thread "main" java.lang.IllegalStateException: basedir job.jar/lib does not exist.
    at org.apache.tools.ant.DirectoryScanner.scan(DirectoryScanner.java:871)
    at org.apache.spark.classpath.ClasspathFilter$$anonfun$resolveClasspath$1.apply(ClasspathFilter.scala:47)
    at org.apache.spark.classpath.ClasspathFilter$$anonfun$resolveClasspath$1.apply(ClasspathFilter.scala:44)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
    at scala.collection.mutable.ArrayOps$ofRef.flatMap(ArrayOps.scala:186)
    at org.apache.spark.classpath.ClasspathFilter$.resolveClasspath(ClasspathFilter.scala:44)
    at org.apache.spark.classpath.ClasspathFilter$.main(ClasspathFilter.scala:31)
    at org.apache.spark.classpath.ClasspathFilter.main(ClasspathFilter.scala)
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
    at org.apache.spark.deploy.SparkSubmitArguments.handleUnknown(SparkSubmitArguments.scala:465)
    at org.apache.spark.launcher.SparkSubmitOptionParser.parse(SparkSubmitOptionParser.java:178)
    at org.apache.spark.deploy.SparkSubmitArguments.<init>(SparkSubmitArguments.scala:104)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:112)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.fs.FSDataInputStream
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 5 more
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]

Сначала я подумал, что он не может загрузить зависимости, связанные с hdfs. Поэтому я добавил зависимость hasoop в свой путь к классам и отправил задание. Но это не сработало.

Позже я создал убер-банку своего приложения и попытался запустить. Все тот же результат.

Если я запустил то же задание в среде mapr 5.x, все будет хорошо, и задание oozie будет успешно выполнено без каких-либо проблем. Но та же работа терпит неудачу в Mapr 6.x env

Кто-нибудь сталкивался с такой же проблемой? Любая помощь приветствуется.

Вот некоторые важные детали:

Mapr version : 6.0.1
Spark version: 2.2.1
Oozie version: 4.3.0
Hadoop version: 2.7.0

Да ! та же проблема, та же среда! Вы открыли билет MapR?

kulssaka 13.08.2018 12:09

@kulssaka: Я опубликовал решение в ответе. Это очень хорошо сработало для меня. Пока с другими проблемами я не сталкивался. Надеюсь, это тебе тоже поможет.

Sunil Kumar B M 20.08.2018 18:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
403
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец-то я смог решить проблему.

Проблема была в mapr-spark.env.sh

Здесь значения для MAPR_HADOOP_CLASSPATH были установлены на `/ opt / mapr / spark / spark-2.2.1 / bin / mapr-classpath.sh`

Я изменил значение на MAPR_HADOOP_CLASSPATH = `hadoop classpath`. Это позволило правильно загрузить библиотеки hadoop (особенно hdfs), и задания oozie были выполнены успешно.

большой ! Что касается меня, я использовал команду sed для изменения пути к классам и пути к классам hadoop. Я попрошу ИТ-службу, отвечающую за Oozie, изменить параметры, как вы предложили!

kulssaka 22.08.2018 09:56

Замена MAPR_HADOOP_CLASSPATH на использование hadoop classpath действительно решила проблему. Мы также заметили, что hadoop classpath возвращает неверную папку для планировщика емкости. ИМХО, hadoop classpath больше для HADOOP_CLASSPATH. Вместо hadoop classpath мы используем mapr classpath. Это возвращает те же библиотеки hadoop и библиотеки mapr, а также исправляет папку планировщика емкости export MAPR_HADOOP_CLASSPATH=$(mapr classpath).

jlim 06.05.2019 17:23

Другие вопросы по теме