【发布时间】:2017-05-21 19:14:09
【问题描述】:
我一直在尝试在 mesos 上学习 spark,但 spark-shell 一直无视这些提议。这是我的设置:
所有组件都在同一个子网中
-
EC2 实例上的 1 个 mesos 主节点 (t2.micro)
命令:
mesos-master --work_dir=/tmp/abc --hostname=<public IP> -
2 个 mesos 代理(每个具有 4 核、16 GB 内存和 30 GB 磁盘空间)
命令:
mesos-slave --master="<private IP of master>:5050" --hostname="<private IP of slave>" --work_dir=/tmp/abc -
ec2 实例 (t2.micro) 上的 1 个 spark-shell(客户端) 在启动 spark-shell 之前,我已经在这个实例上设置了以下环境变量
export MESOS_NATIVE_JAVA_LIBRARY=/usr/lib/libmesos.so export SPARK_EXECUTOR_URI=local://home/ubuntu/spark-2.1.1-bin-hadoop2.7.tgz然后我按如下方式启动 spark-shell
./bin/spark-shell --master mesos://172.31.1.93:5050(主服务器的私有 IP)
我已确保将
spark-2.1.1-bin-hadoop2.7.tgz放置在/home/ubuntu在两个代理上,在启动 spark shell 之前。
一旦 spark-shell 启动,我会运行最简单的程序
val f = sc.textFile ("/tmp/ok.txt");
f.count()
.. 我在 spark-shell 上不断收到以下日志
(0 + 0) / 2]17/05/21 15:13:34 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
17/05/21 15:13:49 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
17/05/21 15:14:04 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
主端日志:(这些日志我什至在 spark-shell 中执行任何操作之前就看到了,即使在我在 spark-shell 中运行上述代码之后它们也会继续出现)
I0521 15:14:12.949108 10166 master.cpp:6992] Sending 2 offers to framework 64c1ef67-9e4f-4236-bb86-80d7aaab540f-0000 (Spark shell) at scheduler-7a375e65-7a0d-4267-befa-e69937404d5f@172.31.1.203:45596
I0521 15:14:12.955731 10164 master.cpp:4731] Processing DECLINE call for offers: [ 64c1ef67-9e4f-4236-bb86-80d7aaab540f-O34 ] for framework 64c1ef67-9e4f-4236-bb86-80d7aaab540f-0000 (Spark shell) at scheduler-7a375e65-7a0d-4267-befa-e69937404d5f@172.31.1.203:45596
I0521 15:14:12.956130 10167 master.cpp:4731] Processing DECLINE call for offers: [ 64c1ef67-9e4f-4236-bb86-80d7aaab540f-O35 ] for framework 64c1ef67-9e4f-4236-bb86-80d7aaab540f-0000 (Spark shell) at scheduler-7a375e65-7a0d-4267-befa-e69937404d5f@172.31.1.203:45596
我在 Ubuntu 16.04 上使用 Mesos 1.2.0 和 spark 2.1.1。我已经通过编写一个基于 node.js 的小型 http 客户端进行了验证,并且来自主人的报价似乎很好。这里可能出了什么问题?
【问题讨论】:
-
你见过this吗?您可以发布被拒绝的工人信息和优惠吗?这可能是与IP有关的问题。您能否确认提供的 IP 与配置匹配?优惠包含您用来连接的相同主 IP?
-
它基本上无法处理以“local”开头的执行程序uri。我将其更改为“http”,它继续进行,但由于其他原因而失败。以下是日志:pastebin.ca/3815427
-
好的,问题解决了。代理内部的执行器尝试绑定到在 ec2 中运行时必然会失败的公共 IP。将 mesos-agent 的主机名参数设置为私有 Ip,它就可以工作了。
-
酷,将其添加为答案并接受。你可以设置
LIBPROCES_IP来达到类似的效果。 -
发布答案,谢谢!
标签: apache-spark mesos mesosphere