我已经用一个主和两个奴隶正确地设置了我的中物cluser。我要做的是使用Mesos-Execute框架在群集上运行JAR文件。我可以使用它来运行以下简单命令,例如:
mesos-execute --master=mesosr:5050 --name="simple-test" --command=echo "hello"
将按预期运行。但是,如果我尝试用" java -jar helloworld.jar"之类的东西替换该回声" 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上可以访问?
此应用程序的用例是,将有很多小罐子文件必须在群集上运行。他们不必活着,所以我没有在这些罐子里使用像马拉松这样的东西。
谢谢。
来自 mesos-execute -h
--task_group=VALUE
值可以是TaskGroupInfo
的JSON-formatting字符串,也可以是包含JSON-FormattedTaskGroupInfo
的文件路径。路径必须为file:///path/to/file
或/path/to/file
的形式。有关预期格式,请参见mesos.proto
中的TaskGroupInfo
消息。注意: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中指定。
好吧,所以我想出了如何做。
我犯了这一切都错了,也许不是在工作日结束时解决新事物的最佳主意。
我想做的是将目录作为Mesos-Execute命令的一部分更改为主目录。这是不允许的。运行位于主目录中的JAR的方法是指定Java -Jar命令中的jar的路径。因此,有效的最终命令看起来像这样:
mesos-execute --master=mesosr:5050 --name="simple-test" --command="java -jar /home/user/jarFile.jar"
这有效,罐子在群集上执行。