【问题标题】:Run my SparkJob on apache job-server在 apache 作业服务器上运行我的 SparkJob
【发布时间】:2015-06-20 05:06:00
【问题描述】:

我在使用 Apache 作业服务器和使用 SparkJob 的 .jar 时遇到问题。 我有带 DataStax 的 VirtualBox。有 Cassandra 和 Spark。我从git job-server 安装 Apache 作业服务器。我想运行示例,所以我写了sbt job-server-tests/package,然后从终端sbt re-start 运行job-server

工作服务器工作示例

  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 插件,并使用 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$$anonfun$spark$jobserver$JobManagerActor$$getJobFuture$4.apply(JobManagerActor.scala:225) scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) 的作业服务器 [错误] scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) 处的作业服务器 [错误] java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 处的作业服务器 [错误] java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 处的作业服务器 [错误] java.lang.Thread.run(Thread.java:745) 处的作业服务器[错误]

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

[root@localhost spark-jobserver]# curl -d "stress.test.longpijob.duration=15" 'localhost:8090/jobs?appNametestJob1.5&classPath=com.forszpaniak.LongPiJob' { “状态”:“错误”, “结果”: { "message": "在 [10000 ms] 之后 [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.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;

我认为 Object 应该是 SparkContext...

我用 数据税:4.6 作业服务器:0.5.1 斯卡拉:2.10.4 sbt: 0.13 火花:1.1.0

My test code

【问题讨论】:

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


    【解决方案1】:

    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 &
    

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

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

    【讨论】:

    • 谢谢,您的回复对我有帮助;)我的作业服务器版本错误。我还有一个问题,但我会在 SO 上提出新的话题。
    • 我使用你的 server_start.sh 脚本,但我有两个问题。我怎样才能停止作业服务器,因为 server_stop.sh 没有停止它,而且我在 SparkUI 中看不到任何作业,甚至 spark-sumbit --class spark.jobserver.JobServer 等?我只能在 JobserverUI 中查看我的工作
    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 2011-09-03
    • 2021-11-07
    • 2019-12-18
    • 2014-08-31
    • 2021-02-11
    • 1970-01-01
    • 2021-04-21
    相关资源
    最近更新 更多