我如何使用mesos-execute来运行jar

时间:2017-05-01 11:55:48

标签: jar frameworks cluster-computing mesos marathon

我已经使用一个主服务器和两个服务器正确设置了我的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这样的东西。

谢谢。

2 个答案:

答案 0 :(得分:1)

来自mesos-execute -h

  

--task_group=VALUE该值可以是TaskGroupInfo的JSON格式字符串,也可以是包含JSON格式TaskGroupInfo的文件路径。路径必须采用file:///path/to/file/path/to/file的格式。 See the TaskGroupInfo message in mesos.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。