在apache job-server上运行我的SparkJob

时间:2015-04-14 14:21:45

标签: cassandra sbt apache-spark datastax spark-jobserver

我的Apache job-server和我的.jar与SparkJob有问题。 我有VirtualBox和DataStax。有Cassandra和Spark。我从git job-server安装Apache作业服务器。我想运行示例,所以我写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'
  3. 问题是当我制作我的.jar时 我使用Scala IDE在Windows上使用eclipse。我安装了sbteclipse插件,并使用scala项目创建了文件夹C:\Users\user\scalaWorkspace\LongPiJob。我运行cmd,转到此文件夹并运行sbt eclipse sbt compilesbt package。然后我将.jar复制到VirtualBox。接下来我使用 1 。卷曲命令。当我使用 2 时。 curl命令我收到错误

      

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

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

      

    [root @ localhost spark-jobserver] #curl -d“stress.test.longpijob.duration = 15”'localhost:8090 / jobs?appNametestJob1.5& classPath = com.forszpaniak.LongPiJob'   {     “状态”:“错误”,     “结果”:{       “消息”:“在[10000 ms]”之后询问[Actor [akka://JobServer/user/context-supervisor/4538158c-com.forszpaniak.LongPiJob#-713999361]]时间,       “errorClass”:“akka.pattern.AskTimeoutException”,       “stack”:[“akka.pattern.PromiseActorRef $$ anonfun $ 1.apply $ mcV $ sp(AskSupport.scala:333)”,“akka.actor.Scheduler $$ anon $ 7.run(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)“]     }

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

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

    我认为对象应该是SparkContext ...

      

    我用   DataStax:4.6   job-server:0.5.1   斯卡拉:2.10.4   sbt:0.13   火花:1.1.0

    My test code

1 个答案:

答案 0 :(得分: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