2017-02-08 2 views
2

Je cours en mode cluster. Le fichier apacheds-kerberos-codec-2.0.0-M15.jar est présent à plusieurs endroits dans oozie/share/lib/lib */spark et oozie/share/lib/lib */oozie. Est-ce un problème environnemental?Je reçois l'erreur ci-dessous tout en essayant d'exécuter spark soum en utilisant oozie sur emr

ava.lang.IllegalArgumentException: Attempt to add (hdfs://ip-172-20-10-53.ec2.internal:8020/user/oozie/share/lib/lib_20170208121307/oozie/apacheds-kerberos-codec-2.0.0-M15.jar) multiple times to the distributed cache. 
    at org.apache.spark.deploy.yarn.Client$$anonfun$prepareLocalResources$11$$anonfun$apply$8.apply(Client.scala:608) 
    at org.apache.spark.deploy.yarn.Client$$anonfun$prepareLocalResources$11$$anonfun$apply$8.apply(Client.scala:599) 
    at scala.collection.mutable.ArraySeq.foreach(ArraySeq.scala:74) 
    at org.apache.spark.deploy.yarn.Client$$anonfun$prepareLocalResources$11.apply(Client.scala:599) 
    at org.apache.spark.deploy.yarn.Client$$anonfun$prepareLocalResources$11.apply(Client.scala:598) 
    at scala.collection.immutable.List.foreach(List.scala:381) 
    at org.apache.spark.deploy.yarn.Client.prepareLocalResources(Client.scala:598) 
    at org.apache.spark.deploy.yarn.Client.createContainerLaunchContext(Client.scala:868) 
    at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:170) 
    at org.apache.spark.deploy.yarn.Client.run(Client.scala:1154) 
    at org.apache.spark.deploy.yarn.Client$.main(Client.scala:1213) 
    at org.apache.spark.deploy.yarn.Client.main(Client.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:738) 
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187) 
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212) 
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126) 
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 
    at org.apache.oozie.action.hadoop.SparkMain.runSpark(SparkMain.java:338) 
    at org.apache.oozie.action.hadoop.SparkMain.run(SparkMain.java:257) 
    at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:60) 
    at org.apache.oozie.action.hadoop.SparkMain.main(SparkMain.java:78) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:232) 
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54) 
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:455) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:344) 
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.runSubtask(LocalContainerLauncher.java:380) 
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.runTask(LocalContainerLauncher.java:301) 
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.access$200(LocalContainerLauncher.java:187) 
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler$1.run(LocalContainerLauncher.java:230) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
+0

Bienvenue dans Stack Overflow! Vous pouvez d'abord prendre le [tour] et apprendre [poser] une bonne question et créer un [mcve]. Cela nous permet de vous aider plus facilement. – Katie

+0

Utilisez-vous la base du code de version Hadoop-3? Hadoop 3 n'autorise plus les noms de fichiers en double dans le cache distribué, même s'il s'agit du même fichier. – YoungHobbit

Répondre

0

Il semble que le sharelib de oozie et la part du répertoire étincelle sharelib les mêmes bocaux, et la gestion d'une importation de flux d'étincelles les deux répertoires, qui base de code Hadoop-3 n'aime pas.

J'ai dû réorganiser le répertoire oozie de sharelib avoir seulement des pots spécifiques de oozie telle qu'il n'y a pas de doublons entre les deux oozie et ÉCLATS les dirs:

export HADOOP_USER_NAME=oozie 
hdfs dfs -mv /user/oozie/share/lib/lib_20170222143042/oozie /user/oozie/share/lib/lib_20170222143042/oozie.old 
hdfs dfs -mkdir /user/oozie/share/lib/lib_20170222143042/oozie 
hdfs dfs -cp /user/oozie/share/lib/lib_20170222143042/oozie.old/oozie-hadoop-utils-hadoop-2-4.3.0.jar /user/oozie/share/lib/lib_20170222143042/oozie 
hdfs dfs -cp /user/oozie/share/lib/lib_20170222143042/oozie.old/oozie-sharelib-oozie-4.3.0.jar /user/oozie/share/lib/lib_20170222143042/oozie 

Ce résout le problème immédiat de pouvoir exécuter des workflows spark à partir de oozie, mais je ne suis pas sûr si cela affecte les workflows non-spark.

0

J'ai un travail oozie qui démarre un démarrage, s'exécutant dans Amazon EMR. J'ai la même erreur lorsque l'installation EMR Hadoop a une instance pour le maître et une instance pour les esclaves. Quand j'ai augmenté le nombre d'instances pour les esclaves à deux, tout a fonctionné comme prévu.