0

刚开始试验 JobServer 并想在我们的生产环境中使用它。

我们通常在 yarn-client 模式下单独运行 spark 作业,并希望转向 Ooyala Spark JobServer 提供的范例。

我能够运行官方页面中显示的 WordCount 示例。我尝试运行将我们的自定义 Spark 作业提交到 Spark JobServer,但出现此错误:

{
 "status": "ERROR",
 "result": {
   "message": "null",
  "errorClass": "scala.MatchError",
  "stack": ["spark.jobserver.JobManagerActor$$anonfun$spark$jobserver$JobManagerActor$$getJobFuture$4.apply(JobManagerActor.scala:220)",
   "scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)",
    "scala.concurrent.impl.Future   $PromiseCompletingRunnable.run(Future.scala:24)", 
    "akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)", 
    "akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)",
    "scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)",
        "scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java 1339)",
    "scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)", 
    "scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)"]
}

我进行了必要的代码修改,例如扩展 SparkJob 和实现 runJob() 方法。

这是我使用的 dev.conf 文件:

# Spark Cluster / Job Server configuration
spark {
  # spark.master will be passed to each job's JobContext
     master = "yarn-client"

  # Default # of CPUs for jobs to use for Spark standalone cluster
    job-number-cpus = 4

    jobserver {
      port = 8090
      jar-store-rootdir = /tmp/jobserver/jars
      jobdao = spark.jobserver.io.JobFileDAO
      filedao {
        rootdir = /tmp/spark-job-server/filedao/data
      }

     context-creation-timeout = "60 s"
    }

  contexts {
    my-low-latency-context {
    num-cpu-cores = 1                 
    memory-per-node = 512m        
   }
  }

  context-settings {
    num-cpu-cores = 2         
    memory-per-node = 512m        
  }

  home = "/data/softwares/spark-1.2.0.2.2.0.0-82-bin-2.6.0.2.2.0.0-2041"
}

spray.can.server {
    parsing.max-content-length = 200m
}

spark.driver.allowMultipleContexts = true
YARN_CONF_DIR=/home/spark/conf/

另外,如何为 spark 作业提供运行时参数,例如 --files、--jars ?例如,我通常像这样运行我们的自定义 Spark 作业:

./spark-1.2.0.2.2.0.0-82-bin-2.6.0.2.2.0.0-2041/bin/spark-submit --class com.demo.SparkDriver --master yarn-cluster --num-executors 3 --jars /tmp/api/myUtil.jar --files /tmp/myConfFile.conf,/tmp/mySchema.txt /tmp/mySparkJob.jar 
4

1 回答 1

0

通过配置文件以不同的方式传递执行程序和额外 jar 的数量(请参阅dependent-jar-uris 配置设置)。

YARN_CONF_DIR 应该在环境中设置,而不是在 .conf 文件中。

至于其他问题,谷歌群是问的正确地方。您可能想搜索它的纱线客户端问题,因为其他几个人已经想出了如何让它工作。

于 2015-04-13T16:30:30.433 回答