Apache spark 使用Dispatcher的Spark Mesos群集模式

Apache spark 使用Dispatcher的Spark Mesos群集模式,apache-spark,mesos,Apache Spark,Mesos,我只有一台机器,希望使用mesos群集模式运行spark作业。使用节点集群运行可能更有意义,但我主要想首先测试mesos,以检查它是否能够更有效地利用资源(在没有静态分区的情况下同时运行多个spark作业)。我尝试了很多方法,但都没有成功。以下是我所做的: 构建mesos并运行mesos主设备和从设备(在同一台机器中有2个从设备) 运行spark mesos调度程序 sudo ./sbin/start-mesos-dispatcher.sh --master mesos://localhost

我只有一台机器,希望使用mesos群集模式运行spark作业。使用节点集群运行可能更有意义,但我主要想首先测试mesos,以检查它是否能够更有效地利用资源(在没有静态分区的情况下同时运行多个spark作业)。我尝试了很多方法,但都没有成功。以下是我所做的:

  • 构建mesos并运行mesos主设备和从设备(在同一台机器中有2个从设备)

  • 运行spark mesos调度程序

    sudo ./sbin/start-mesos-dispatcher.sh --master mesos://localhost:5050
    
  • 提交以dispatcher作为主url的应用程序

    spark-submit  --master mesos://localhost:7077 <other-config> <jar file>
    
    如果使用spark submit--deploy模式群集,则会收到另一条错误消息:

        Exception in thread "main" org.apache.spark.deploy.rest.SubmitRestConnectionException: Unable to connect to server
    
    如果我不使用dispatcher,而是直接使用mesos master url:--master,那么它可以完美地工作mesos://localhost:5050 (客户端模式)。根据,Mesos集群不支持集群模式,但它们为集群模式提供了另一条指令。所以有点困惑?我的问题是:

  • 我怎样才能让它工作
  • 如果我直接从主节点提交app/jar,我应该使用客户机模式而不是集群模式吗
  • 如果我只有一台计算机,我应该生成一个或多个mesos从进程吗。基本上,我有很多工作要做,不想对资源进行静态分区。但是当使用没有静态分区的介观时,它似乎要慢得多

  • 谢谢。

    我使用您的场景进行尝试,这可能是可行的。 有一点不同,我使用ip地址来代替“localhost”和“127.0.0.1” 所以,只要再试一次,并检查(在浏览器上)是否存在

    这是我的spark提交命令:

    $spark-submit --deploy-mode cluster --master mesos://192.168.11.79:7077 --class "SimpleApp"  SimpleAppV2.jar
    
    如果成功,你可以看到如下

    {
      "action" : "CreateSubmissionResponse",
      "serverSparkVersion" : "1.5.0",
      "submissionId" : "driver-20151006164749-0001",
      "success" : true
    }
    

    当我将您的错误日志作为您的日志时,我将重新启动计算机并重试您的步骤。它也起作用

    有两件事让您感到困惑:在集群中启动Spark应用程序(而不是本地启动)和在集群中启动驱动程序

    从顶部开始:

    spark的bin目录中的spark submit脚本用于在集群上启动应用程序。它可以通过一个统一的界面使用Spark支持的所有群集管理器,因此您不必为每个群集管理器专门配置应用程序

    因此,Mesos是受支持的集群管理器之一,因此您可以

    Mesos在编写本文时不支持的是将驱动程序启动到集群中,这是
    /bin/spark submit
    的命令行参数
    --deploy mode
    指定的。由于
    --deploy mode
    的默认值是
    client
    ,因此您可以省略它,或者如果您想显式指定它,则使用:

    ./bin/spark-submit --deploy-mode client ...
    

    尝试使用6066端口而不是7077端口。Spark的较新版本更喜欢RESTAPI来提交作业

    {
      "action" : "CreateSubmissionResponse",
      "serverSparkVersion" : "1.5.0",
      "submissionId" : "driver-20151006164749-0001",
      "success" : true
    }
    
    ./bin/spark-submit --deploy-mode client ...