1

我的 Apache 作业服务器和 SparkJob 的 .jar 有问题。我有带 DataStax 的 VirtualBox。有 Cassandra 和 Spark。我从git job-server安装 Apache job -server 。我想运行示例,所以我编写sbt job-server-tests/package并接下来从终端运行作业服务器sbt re-start

来自工作服务器工作的示例

  1. curl --data-binary @/home/job-server/job-server-tests/target/job.jar localhost:8090/jars/test
  2. curl -d "" 'localhost:8090/jobs?appName=test&classPath=spark.jobserver.LongPiJob'

问题是当我制作我的 .jar 时,我在带有 Scala IDE 的 Windows 上使用 eclipse。我安装了 sbteclipse 插件,并C:\Users\user\scalaWorkspace\LongPiJob用 scala 项目创建了文件夹。我运行 cmd,转到此文件夹并运行sbt eclipse sbt compilesbt package. 然后我将 .jar 复制到 VirtualBox。接下来我使用1。卷曲命令。当我使用2时。curl命令我得到一个错误

作业服务器 [错误] 线程“pool-25-thread-1”中的异常 java.lang.AbstractMethodError: com.forszpaniak.LongPiJob$.validate(Ljava/lang/Object;Lcom/typesafe/config/Config;)Lspark/作业服务器/SparkJobValidation;作业服务器 [错误] 在 spark.jobserver.JobManagerActor$$anonfun$spark$jobserver$JobManagerActor$$getJobFuture$4.apply(JobManagerActor.scala:225) 作业服务器 [错误] 在 scala.concurrent.impl.Future$PromiseCompletingRunnable .liftedTree1$1(Future.scala:24) job-server[ERROR] at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) job-server[ERROR] at java.util.concurrent.ThreadPoolExecutor。 runWorker(ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 作业服务器[错误] java.lang.Thread.run(Thread.run) 作业服务器[错误]爪哇:745)

在我启动服务器的终端中。在 curl 终端我得到

[root@localhost spark-jobserver]# curl -d "stress.test.longpijob.duration=15" 'localhost:8090/jobs?appNametestJob1.5&classPath=com.forszpaniak.LongPiJob' { "status": "ERROR", "结果“:{“消息”:“在[10000毫秒]之后,[Akka://JobServer/user/context-supervisor/4538158c-com.forszpaniak.LongPiJob#-713999361]]上的询问超时”,“errorClass” :“akka.pattern.AskTimeoutException”,“堆栈”:[“akka.pattern.PromiseActorRef$$anonfun$1.apply$mcV$sp(AskSupport.scala:333)”,“akka.actor.Scheduler$$anon$7.运行(Scheduler.scala:117)”,“scala.concurrent.Future$InternalCallbackExecutor$.scala$concurrent$Future$InternalCallbackExecutor$$unbatchedExecute(Future.scala:694)”,“scala.concurrent。Future$InternalCallbackExecutor$.execute(Future.scala:691)", "akka.actor.LightArrayRevolverScheduler$TaskHolder.executeTask(Scheduler.scala:467)", "akka.actor.LightArrayRevolverScheduler$$anon$8.executeBucket$1(Scheduler. scala:419)"、"akka.actor.LightArrayRevolverScheduler$$anon$8.nextTick(Scheduler.scala:423)"、"akka.actor.LightArrayRevolverScheduler$$anon$8.run(Scheduler.scala:375)"、"java .lang.Thread.run(Thread.java:745)"] }LightArrayRevolverScheduler$$anon$8.run(Scheduler.scala:375)", "java.lang.Thread.run(Thread.java:745)"] }LightArrayRevolverScheduler$$anon$8.run(Scheduler.scala:375)", "java.lang.Thread.run(Thread.java:745)"] }

我的 .jar 我使用来自示例 LongPiJob.scala 的代码。我已经搜索了有关此服务器错误的一些信息,我认为这可能是版本问题?

java.lang.AbstractMethodError: com.forszpaniak.LongPiJob$.validate(Ljava/lang/Object;Lcom/typesafe/config/Config;)Lspark/jobserver/SparkJobValidation;

我认为相反 Object 应该是 SparkContext ......

我使用 DataStax:4.6 作业服务器:0.5.1 scala:2.10.4 sbt:0.13 spark:1.1.0

我的测试代码

4

1 回答 1

4

Spark JobServer 0.5.1 与 spark 1.3.0 兼容,您使用的是 1.1.0。我会先尝试将其更改为 0.4.1。

  Version   Spark Version
   0.3.1    0.9.1
   0.4.0    1.0.2
   0.4.1    1.1.0
   0.5.0    1.2.0
   0.5.1    1.3.0

然后您可能想要修改 startup_server.sh 脚本,使其使用 DSE 类路径。这应该可以帮助您避免将来出现其他错误。

就像是

dse spark-submit --class $MAIN $appdir/spark-job-server.jar --driver-java-options "$GC_OPTS $JAVA_OPTS $LOGGING_OPTS" $conffile 2>&1 &

这是一个 repo,我修改了服务器启动脚本以使用 DSE(4.7 但它应该与 4.6 类似)

https://github.com/RussellSpitzer/spark-jobserver/blob/DSP-47-EAP3/bin/server_start.sh

于 2015-04-14T16:22:04.327 回答