Nghiên cứu sinh Spark, tôi khá mới với Spark, đó là lý do tôi hy vọng sự giúp đỡ của bạn thực sự.Cụm tia lửa độc lập. Không thể gửi công việc theo lập trình -> java.io.InvalidClassException
Tôi đang cố lên lịch công việc khá đơn giản trên cụm tia lửa từ máy tính xách tay của mình. Mặc dù nó hoạt động, khi tôi gửi nó với ./spark-submit
, nó ném một ngoại lệ, khi tôi cố gắng làm điều đó theo chương trình.
Môi trường: - Spark - 1 nút chính và 2 nút công nhân (chế độ độc lập). Spark không được biên soạn, nhưng các tệp nhị phân đã được tải xuống. Phiên bản Spark - 1.0.2 - phiên bản java "1.7.0_45" - Chứa ứng dụng được đặt ở mọi nơi (trên máy khách và trên các nút của nhân viên ở cùng một nơi); - Tệp README.md cũng được sao chép vào mọi nút;
Ứng dụng Tôi đang cố gắng để chạy:
val logFile = "/user/vagrant/README.md"
val conf = new SparkConf()
conf.setMaster("spark://192.168.33.50:7077")
conf.setAppName("Simple App")
conf.setJars(List("file:///user/vagrant/spark-1.0.2-bin-hadoop1/bin/hello-apache-spark_2.10-1.0.0-SNAPSHOT.jar"))
conf.setSparkHome("/user/vagrant/spark-1.0.2-bin-hadoop1")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
...
Vì vậy, vấn đề là, rằng ứng dụng này chạy trên cụm thành công, khi tôi làm:
./spark-submit --class com.paycasso.SimpleApp --master spark://192.168.33.50:7077 --deploy-mode client file:///home/vagrant/spark-1.0.2-bin-hadoop1/bin/hello-apache-spark_2.10-1.0.0-SNAPSHOT.jar
Nhưng nó không hoạt động, khi tôi cố gắng thực hiện tương tự bằng cách gọi sbt run
Đây là ngăn xếp chồng, mà tôi nhận được trên nút chính:
14/09/04 15:09:44 ERROR Remoting: org.apache.spark.deploy.ApplicationDescription; local class incompatible: stream classdesc serialVersionUID = -6451051318873184044, local class serialVersionUID = 583745679236071411
java.io.InvalidClassException: org.apache.spark.deploy.ApplicationDescription; local class incompatible: stream classdesc serialVersionUID = -6451051318873184044, local class serialVersionUID = 583745679236071411
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at akka.serialization.JavaSerializer$$anonfun$1.apply(Serializer.scala:136)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
at akka.serialization.JavaSerializer.fromBinary(Serializer.scala:136)
at akka.serialization.Serialization$$anonfun$deserialize$1.apply(Serialization.scala:104)
at scala.util.Try$.apply(Try.scala:161)
at akka.serialization.Serialization.deserialize(Serialization.scala:98)
at akka.remote.serialization.MessageContainerSerializer.fromBinary(MessageContainerSerializer.scala:58)
at akka.serialization.Serialization$$anonfun$deserialize$1.apply(Serialization.scala:104)
at scala.util.Try$.apply(Try.scala:161)
at akka.serialization.Serialization.deserialize(Serialization.scala:98)
at akka.remote.MessageSerializer$.deserialize(MessageSerializer.scala:23)
at akka.remote.DefaultMessageDispatcher.payload$lzycompute$1(Endpoint.scala:55)
at akka.remote.DefaultMessageDispatcher.payload$1(Endpoint.scala:55)
at akka.remote.DefaultMessageDispatcher.dispatch(Endpoint.scala:73)
at akka.remote.EndpointReader$$anonfun$receive$2.applyOrElse(Endpoint.scala:764)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498)
at akka.actor.ActorCell.invoke(ActorCell.scala:456)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237)
at akka.dispatch.Mailbox.run(Mailbox.scala:219)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Giải pháp này có thể là gì? Cảm ơn bạn trước.
Bạn đã thử chạy cục bộ với 'sbt run' chưa? –
Cảm ơn, Như Lai, để được giúp đỡ của bạn. Có, tôi đã thử nó localy với địa phương [10] - nó hoạt động. Đó là lý do tại sao nó trông rất lạ, mà ví dụ rất đơn giản như vậy là khó khăn để chạy trên cluster –
@ Dr.Khu: Tôi muốn làm chính xác như nhau. chương trình trên bằng cách bạn gửi một bình để kích hoạt? Tôi hơi bối rối. giúp đỡ một cách tử tế. – chaosguru