Apache spark 使用Dispatcher的Spark Mesos群集模式
我只有一台机器,希望使用mesos群集模式运行spark作业。使用节点集群运行可能更有意义,但我主要想首先测试mesos,以检查它是否能够更有效地利用资源(在没有静态分区的情况下同时运行多个spark作业)。我尝试了很多方法,但都没有成功。以下是我所做的: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
sudo ./sbin/start-mesos-dispatcher.sh --master mesos://localhost:5050
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集群不支持集群模式,但它们为集群模式提供了另一条指令。所以有点困惑?我的问题是:
谢谢。我使用您的场景进行尝试,这可能是可行的。 有一点不同,我使用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 ...