我一直试图在mesos上学习火花,但是火花壳一直在忽视这些优惠。这是我的设置:
所有组件都在同一子网中
EC2实例上的1个mesos master(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实例上的1个spark-shell(客户端)(t2.micro) 我在启动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
在启动spark shell之前,两个代理上都有/home/ubuntu
。
一旦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之前的任何事情之前就已经看到了,即使我在火花壳中运行了上面的代码,它们也会继续出现)
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客户端进行验证,并且主人的报价似乎很好。这可能是什么问题?
答案 0 :(得分:0)
SPARK_EXECUTOR_URI
为local
,因此将其更改为http
。 local
我想是为hadoop(在这里纠正我)。
将URI更改为local
后,作为mesos-executor(作为任务,粗模式)启动的spark执行器的一部分运行的netty blockmanager服务由Mesos Containerizer启动,即由mesos-agent启动,用于尝试绑定到公共IP失败,因为我已将主机名作为公共IP传递给mesos-agent,这在EC2中必然会失败。事实上,我最初是通过私人IP,但不记得为什么我将主机名更改为公共IP。可能,我想要检查沙盒日志。 Mesos master将它重定向到mesos-agent的私有IP,阻止我查看stderr日志。 (我位于EC2 VPC之外)。注意,上面的问题将私有IP传递给代理,这是正确的。最初,上面的问题是针对第一个问题发布的。