2016-04-07 16 views
1

Ich bekomme einen Fehler, wenn ich einen Spark-Job auf dem Garncluster starte. Ich habe einige Male Glas gemacht und bin erfolgreich gelaufen. Ich weiß dieses Mal nicht, dass ich nicht einmal ein einfaches WordCount-Programm ausführen kann. Hier ist der Fehler, den ich bekomme.FEHLER yarn.ApplicationMaster: Benutzerklasse hat Ausnahme ausgelöst: java.lang.reflect.InvocationTargetException java.lang.reflect.InvocationTargetException

16/04/06 20:38:13 INFO cluster.YarnClusterSchedulerBackend: SchedulerBackend is ready for scheduling beginning after reached minRegisteredResourcesRatio: 0.8 
16/04/06 20:38:13 INFO cluster.YarnClusterScheduler: YarnClusterScheduler.postStartHook done 
16/04/06 20:38:13 ERROR yarn.ApplicationMaster: User class threw exception: null 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.apache.spark.io.CompressionCodec$.createCodec(CompressionCodec.scala:68) 
    at org.apache.spark.io.CompressionCodec$.createCodec(CompressionCodec.scala:60) 
    at org.apache.spark.broadcast.TorrentBroadcast.org$apache$spark$broadcast$TorrentBroadcast$$setConf(TorrentBroadcast.scala:73) 
    at org.apache.spark.broadcast.TorrentBroadcast.<init>(TorrentBroadcast.scala:79) 
    at org.apache.spark.broadcast.TorrentBroadcastFactory.newBroadcast(TorrentBroadcastFactory.scala:34) 
    at org.apache.spark.broadcast.TorrentBroadcastFactory.newBroadcast(TorrentBroadcastFactory.scala:29) 
    at org.apache.spark.broadcast.BroadcastManager.newBroadcast(BroadcastManager.scala:62) 
    at org.apache.spark.SparkContext.broadcast(SparkContext.scala:1051) 
    at org.apache.spark.SparkContext.hadoopFile(SparkContext.scala:761) 
    at org.apache.spark.SparkContext.textFile(SparkContext.scala:589) 
    at com.demo.WordCountSimple$.main(WordCountSimple.scala:24) 
    at com.demo.WordCountSimple.main(WordCountSimple.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:480) 
Caused by: java.lang.IllegalArgumentException 
    at org.apache.spark.io.SnappyCompressionCodec.<init>(CompressionCodec.scala:152) 
    ... 21 more 
16/04/06 20:38:13 INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 15, (reason: User class threw exception: null) 
16/04/06 20:38:13 INFO yarn.ApplicationMaster: Invoking sc stop from shutdown hook 
16/04/06 20:38:13 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/metrics/json,null} 
16/04/06 20:38:13 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/stages/stage/kill,null} 

Ich bin mit Spark-1.6.0 mit Scala 2.11.7 und mein sbt ist als unten-

import sbt.Keys._ 

lazy val root = (project in file(".")). 
    settings(
    name := "SparkTutorials", 
    version := "1.0", 
    scalaVersion := "2.11.7", 
    mainClass in Compile := Some("WordCountSimple") 
) 

exportJars := true 
fork := true 

libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "1.6.0" % "provided", 
    "org.apache.spark" %% "spark-streaming" % "1.6.0", 
    "org.apache.spark" %% "spark-mllib" % "1.6.0", 
"org.apache.spark" %% "spark-sql" % "1.6.0") 

assemblyJarName := "WordCountSimple.jar" 
// 
val meta = """META.INF(.)*""".r 

assemblyMergeStrategy in assembly := { 
    case PathList("javax", "servlet", [email protected]_*) => MergeStrategy.first 
    case PathList([email protected]_*) if ps.last endsWith ".html" => MergeStrategy.first 
    case n if n.startsWith("reference.conf") => MergeStrategy.concat 
    case n if n.endsWith(".conf") => MergeStrategy.concat 
    case meta(_) => MergeStrategy.discard 
    case x => MergeStrategy.first 
} 

Während jar einreichen, ich tue wie this-

./bin/spark-submit --class com.demo.WordCountSimple --master yarn-cluster --num-executors 8 --executor-memory 4g --executor-cores 10 /users/hastimal/WordCountSimple.jar /test/sample.txt /test/output 

Ich mache ein paar andere Sachen mit Spark GraphX, aber da dies den gleichen Fehler zeigte, dachte ich, zuerst WordCount Tests zu machen. Immer noch derselbe Fehler. folgte ich link und auch stack aber kein Glück. Gibt es ein Problem in Jar? oder irgendein Problem in Cluster? oder irgendein Problem in den Abhängigkeiten? Bitte helfen Sie mir !!

FYI: Code-

package com.demo 

import java.util.Calendar 

import org.apache.spark.{SparkContext, SparkConf} 

/** 
* Created by hastimal on 3/14/2016. 
*/ 
object WordCountSimple { 
    def main(args: Array[String]) { 
    //System.setProperty("hadoop.home.dir","F:\\winutils") 
    if (args.length < 2) { 
     System.err.println("Usage: WordCountSimple <inputPath> <outputPath>") 
     System.exit(1) 
    } 
    val inputPath = args(0) //input path as variable argument 
    val outputPath = args(1) //output path as variable argument 
    // Create a Scala Spark Context. 
    val conf = new SparkConf().setAppName("WordCountSimple") 
    val sc = new SparkContext(conf) 
    val startTime = Calendar.getInstance().getTime() 
    println("startTime "+startTime) 
// val input = sc.textFile(inputPath,8) 
    val input = sc.textFile(inputPath,4) 
     // Split it up into words. 
    val words = input.flatMap(line => line.split(" ")) 
    val counts = words.map(word => (word, 1)).reduceByKey{case (x, y) => x + y} 
    counts.saveAsTextFile(outputPath) 
    //counts.foreach(println(_)) 
    val endTime = Calendar.getInstance().getTime() 
    println("endTime "+endTime) 
    val totalTime = endTime.getTime-startTime.getTime 
    println("totalTime "+totalTime) 
    } 
} 
+0

vielleicht wäre ein Code hilfreich! – eliasah

+0

Ich habe auch Code hinzugefügt !! – ChikuMiku

+0

Können Sie versuchen, den Code in Ihrem Spark-Shell ohne Garn und Ausführen einer Aktion nach jeder Transformation oder RDD-Erstellung, um zu isolieren, wo die Null ist. Das Problem ist in der App und nicht Garn. – eliasah

Antwort

0

Es wurde Problem IO im Zusammenhang mit snapply so, wenn ich wie diesem Job vorgelegt: ./bin/spark-submit --class com.demo.WordCountSimple --master yarn-cluster --num-executors 8 --executor-memory 4g --executor-cores 10 --conf spark.io.compression.codec=lz4 /users/hastimal/WordCountSimple.jar /test/sample.txt /test/output ich in der Lage war, erfolgreich zu tun !! Danke @zsxwing