2016-04-08 32 views
0

ClassNotFound yol açar: ("spark.serializer", CustomSparkSerializer.class.getCanonicalName())Kıvılcım özel seri hale getirici ben olarak tanımlanan <strong>özel kıvılcım seri hale</strong> kullanmaya çalışıyorum

conf.set;

Ama infaz env oluşturma, örneğin zaman ClassNotFoundException konuyu bakan değilim Spark için başvuruda zaman:

16/04/01 18:41:11 BİLGİ util.Utils: Başarıyla hizmet başladı o kullanılarak çözülebilir yerel bağımsız modunda port 52153.

Exception in thread "main" java.lang.reflect.UndeclaredThrowableException 
     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1643) 
     at org.apache.spark.deploy.SparkHadoopUtil.runAsSparkUser(SparkHadoopUtil.scala:68) 
     at org.apache.spark.executor.CoarseGrainedExecutorBackend$.run(CoarseGrainedExecutorBackend.scala:149) 
     at org.apache.spark.executor.CoarseGrainedExecutorBackend$.main(CoarseGrainedExecutorBackend.scala:250) 
     at org.apache.spark.executor.CoarseGrainedExecutorBackend.main(CoarseGrainedExecutorBackend.scala) 
Caused by: java.lang.ClassNotFoundException: example.CustomSparkSerializer 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:270) 
     at **org.apache.spark.util.Utils$.classForName(Utils.scala:173)** 
     at org.apache.spark.SparkEnv$.instantiateClass$1(SparkEnv.scala:266) 
     at org.apache.spark.SparkEnv$.instantiateClassFromConf$1(SparkEnv.scala:287) 
     at org.apache.spark.SparkEnv$.create(SparkEnv.scala:290) 
     at org.apache.spark.SparkEnv$.createExecutorEnv(SparkEnv.scala:218) 
     at org.apache.spark.executor.CoarseGrainedExecutorBackend$$anonfun$run$1.apply$mcV$sp(CoarseGrainedExecutorBackend.scala:183) 
     at org.apache.spark.deploy.SparkHadoopUtil$$anon$1.run(SparkHadoopUtil.scala:69) 
     at org.apache.spark.deploy.SparkHadoopUtil$$anon$1.run(SparkHadoopUtil.scala:68) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.Subject.doAs(Subject.java:415) 
     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628) 

üzerinde 'sparkExecutor' "spark.executor.extraClassPath = yol// kavanoz için", ancak birkaç düğümlerle küme üzerinde yardımcı olmuyor.

(benim için) bilinen tüm denenmiş kullanım --jars, uygulamakla (ve hatta sürücü) ekstra sınıf ve kütüphane yolu olarak, sc.addJar da ... Faydası değildi gibi yaklaşımlar var.

O Kıvılcım org.apache.spark.util.Utils $ .classForName (Utils.scala: 173) 'de spesifik classloader kullanır bulundu yük serileştirici sınıfı için, ama gerçekten özel seri hale nasıl anlamıyorum yüklenebilen. Oozie - -> SparkSubmit -> İPLİK istemci - Uygulama akış teslim

daha karmaşıktır> Kıvılcım uygulama

soru - herkes özel kıvılcım serileştirici kullanılmalıdır ve nasıl ClassNotFound sorunu çözmek için nasıl biliyor Bununla ? peşin

teşekkürler!

+0

Kullanıcıları e-posta listesine göndermek için soru gönderildi http://apache-spark-user-list.1001560.n3.nabble.com/Spark-custom-serializer-leads-to-ClassNotFound-td26692.html –

+0

El ile koyarsanız İşçilerdeki kavanoz işe yarıyor mu? Bu sorunun özel serileştiriciye özgü olduğundan emin değilim, bana daha geniş görünüyor. –

+0

Yuval, haklısın, sorun ClassLoaders/classpath ile ilgili. Bir süre harcadıktan sonra aşağıdakileri buldum: –

cevap

0

Bunun nedeni nedeni, spark.executor.extraClassPath öneki /home/some_user ile kullanıyorum. Spark süreci sahibi, başka bir kullanıcı olduğu için /usr/lib/ her şey iyi çalışır gibi yol ısmarlanmak JAR putted kez o Kıvılcım, o yoldan herhangi bir sınıf yükleyemiyor görünüyor.

Yani, kullanıcılar ve Hadoop/Oozie/Kıvılcım süreçleri sahipleri ile karıştırılmamalıdır ama

yardımın için teşekkür ederim) = classloaders böyle bir davranış beklemiyordum!