我已经使用一个主服务器和两个服务器正确设置了我的mesos cluser。我想要做的是使用mesos-execute框架在集群上运行jar文件。我可以用它来运行简单的命令,如:
mesos-execute --master=mesosr:5050 --name="simple-test" --command=echo "hello"
哪个会按预期运行。但是,如果我尝试用“java -jar helloWorld.jar”之类的东西替换echo“hello”命令,它将无效。
我设法识别问题,但我不知道如何修复它。问题是命令不从主目录运行,它从类似于
的东西运行/var/lib/mesos/slaves/3f5439b1-7fab-45d6-876e-7e75b7c15fc9-S0/frameworks/3f5439b1-7fab-45d6-876e-7e75b7c15fc9-0043/executors/java-test/runs/7c20baff-080f-48ee-95fc-3662c388744b
我通过在“mesos-execute”上运行“pwd”作为命令来获得该路径。
现在,我的问题是如何从那里出来? cd不起作用。 有没有办法让我到达主文件夹或一个特殊的文件夹,我可以放置我的罐子让它们可以访问mesos-execute?
此应用程序的用例是,必须在群集上运行许多小jar文件。他们没有必要活着,所以我没有在这些罐子里使用像Marathon这样的东西。
谢谢。
答案 0 :(得分:1)
--task_group=VALUE
该值可以是TaskGroupInfo
的JSON格式字符串,也可以是包含JSON格式TaskGroupInfo
的文件路径。路径必须采用file:///path/to/file
或/path/to/file
的格式。 See theTaskGroupInfo
message inmesos.proto
for the expected format。 注意:agent_id
无需设置。
示例:
{
"tasks":
[
{
"name": "Name of the task",
"task_id": {"value" : "Id of the task"},
"agent_id": {"value" : ""},
"resources": [{
"name": "cpus",
"type": "SCALAR",
"scalar": {
"value": 0.1
}
},
{
"name": "mem",
"type": "SCALAR",
"scalar": {
"value": 32
}
}],
"command": {
"value": "sleep 1000"
}
}
]
}
你最感兴趣的是command
部分。在那里,您可以使用下载所需的所有文件来定义您的任务,以便正确运行。命令的所有可能配置选项都在CommandInfo中指定。
答案 1 :(得分:-1)
好的,所以我想出了怎么做。
我认为这一切都错了,或许不是在工作日结束时解决新事物的最佳想法。
我试图做的是将目录更改为主目录,作为mesos-execute命令的一部分。这是不允许的。运行位于主目录中的jar的方法是在java -jar命令中指定jar的路径。所以有效的最终命令看起来像这样:
mesos-execute --master=mesosr:5050 --name="simple-test" --command="java -jar /home/user/jarFile.jar"
这样可以,并且在集群上执行jar。