java.lang.IllegalArgumentException: попытка добавить ([custom-jar-with-spark-code] .jar) несколько раз в распределенный кеш - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь запустить простое задание Java Spark, используя Oozie в кластере EMR.Задание просто берет файлы из входного пути, выполняет несколько основных действий и помещает результат в другой выходной путь.

Когда я пытаюсь запустить его из командной строки, используя spark-submit, как показано ниже, это работаетотлично:

spark-submit --class com.someClassName --master yarn --deploy-mode cluster /home/hadoop/some-local-path/my-jar-file.jar yarn s3n://input-path s3n://output-path

Затем я настроил то же самое в рабочем процессе Oozie.Однако при запуске оттуда работа всегда терпит неудачу.Журнал стандартного вывода содержит следующую строку:

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SparkMain], main() threw exception, Attempt to add (hdfs://[emr-cluster]:8020/user/oozie/workflows/[WF-Name]/lib/[my-jar-file].jar) multiple times to the distributed cache.
java.lang.IllegalArgumentException: Attempt to add (hdfs://[emr-cluster]:8020/user/oozie/workflows/[WF-Name]/lib/[my-jar-file].jar) multiple times to the distributed cache.

Я обнаружил КБ примечание и еще один вопрос здесь в StackOverflow, который имеет дело с аналогичной ошибкой.Но для них задание было неудачным из-за внутреннего JAR-файла, а не того, который пользователь передает для запуска.Тем не менее, я опробовал шаги по его разрешению, чтобы удалить файлы jar, общие для spark & ​​oozie в share-lib, и в итоге удалил несколько файлов из " / user / oozie / share / lib / lib _ * / spark ",К сожалению, это также не решило проблему.

Есть идеи, как решить эту проблему?

1 Ответ

0 голосов
/ 02 мая 2019

Итак, мы наконец выяснили проблему - по крайней мере, в нашем случае.

При создании рабочего процесса с использованием Hue, когда добавляется Spark Action, по умолчанию запрашивается «File» и «Jar / py».название".Мы указали путь к файлу JAR, который мы хотели запустить, и имя этого файла JAR соответственно в этих полях, и он создал основное действие, как показано ниже: enter image description here

окончательный XML, который он создал, был следующим:

<action name="spark-210e">
    <spark xmlns="uri:oozie:spark-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <master>yarn</master>
        <mode>cluster</mode>
        <name>CleanseData</name>
          <class>com.data.CleanseData</class>
        <jar>JCleanseData.jar</jar>
          <spark-opts>--driver-memory 2G --executor-memory 2G --num-executors 10 --files hive-site.xml</spark-opts>
          <arg>yarn</arg>
          <arg>[someArg1]</arg>
          <arg>[someArg2]</arg>
        <file>lib/JCleanseData.jar#JCleanseData.jar</file>        
    </spark>
    <ok to="[nextAction]"/>
    <error to="Kill"/>
</action>

Тег по умолчанию file в нем вызывал проблему в нашем случае.

Итак, мы удалили его и отредактировали определение длякак видно ниже, и это сработало.Обратите внимание на изменение тега <jar>.

<action name="spark-210e">
    <spark xmlns="uri:oozie:spark-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <master>yarn</master>
        <mode>cluster</mode>
        <name>CleanseData</name>
          <class>com.data.CleanseData</class>
        <jar>hdfs://path/to/JCleanseData.jar</jar>
          <spark-opts>--driver-memory 2G --executor-memory 2G --num-executors 10 --files hive-site.xml</spark-opts>
          <arg>yarn</arg>
          <arg>[someArg1]</arg>
          <arg>[someArg1]</arg>
    </spark>
    <ok to="[nextAction]"/>
    <error to="Kill"/>
</action>

PS: у нас была похожая проблема с действиями Hive.Файл hive-site.xml, который мы должны были передать с помощью действия Hive, которое создало тег <job-xml>, также вызывал проблемы.Таким образом, мы удалили его, и он работал как ожидалось.

...