2017-05-01 6 views
1

1つのマスターと2つのスレーブで正しくmesos cluserをセットアップしました。私がやろうとしているのは、クラスタ上でjarファイルを実行するためにmesos-executeフレームワークを使用することです。私はそれを使って次のような簡単なコマンドを実行することができます:mesos-executeを使ってjarを実行するにはどうすればいいですか

mesos-execute --master=mesosr:5050 --name="simple-test" --command=echo "hello" 

期待どおりに実行されます。しかし、 "hello"というechoコマンドを "java -jar helloWorld.jar"のように置き換えようとすると動作しません。

私はこの問題を特定することができましたが、それを修正する方法はわかりません。問題は、それは私が上のコマンドとして「PWD」を実行してそのパスを持ってこの

/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実行してください。

今、私の質問はどうやってそこから出るのですか? cdは動作しません。 ホームフォルダまたは特別なフォルダに移動してjosを置いて、それらをmesos-executeにアクセスできるようにする方法はありますか?

このアプリケーションのユースケースは、クラスタ上で実行する必要がある小さなjarファイルがたくさんあることです。彼らは生き残る必要はないので、私はこれらの瓶のためにマラソンのようなものを使用していません。

ありがとうございます。

答えて

1

--task_group=VALUEmesos-execute -hからの値は、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

リソースロールフィールドはこの例から削除する必要があります(https://issues.apache.org/jira/browse/MESOS-7805を参照) –

0

わかりましたので、私はそれを行う方法を考え出しました。

私はそれについてすべて間違っていました。おそらく、仕事の終わりに新しいものに取り組むための最良のアイデアではありません。

私がやってみたのは、ディレクトリをmesos-executeコマンドの一部としてホームディレクトリに変更することでした。これは許可されていません。ホームディレクトリにあるjarを実行する方法は、java -jarコマンドでjarのパスを指定することです。したがって、最終的なコマンドは次のようになります。

mesos-execute --master=mesosr:5050 --name="simple-test" --command="java -jar /home/user/jarFile.jar" 

これは動作し、jarはクラスタで実行されます。

関連する問題