S-JIS[2016-09-17] 変更履歴

Retz 0.0.24使用方法メモ

Retz 0.0.24(旧バージョン)の使い方。(→最新版の使い方


概要

Retzを使ってコマンドを実行するには、まず、“アプリケーション”をRetzに登録する必要がある。

$ retz-client load-app -A アプリケーション名 -F アーカイブファイルURL

これで、アーカイブファイルに名前(アプリケーション名)を付けて、Retz内に保存される。
(アーカイブファイルは必須ではないが、アプリケーション名は必ず登録する必要がある)

そして、コマンドを実行する際にそのアプリケーション名を使用する。

$ retz-client run -A アプリケーション名 -cmd 'コマンド'

このとき、Retz内部では以下のような手順で実行されることになる。

  1. 実行するマシンをMesosクラスター内から探し、決定する。
  2. アーカイブファイルをそのマシン上に転送・解凍する。
  3. そのマシン上でコマンド(シェル)を実行する。

例えばAsakusaアプリケーション(Asakusa Frameworkで作られたバッチ)の場合、通常は、実行環境にAsakusaアプリケーションのデプロイメントアーカイブを展開して置いておく(実行環境に事前にデプロイしておく)。

Retzを使う場合、このデプロイメントアーカイブファイルをRetzに登録しておくことで、事前デプロイが不要になる。(実行直前にRetzによって転送・解凍(つまりデプロイ)される為)

逆に、事前デプロイしてあるのであれば、Retzにアーカイブファイルを登録せず、デプロイしてある環境をそのまま使って実行することも出来る。

(AsakusaFWのデプロイメントアーカイブはバッチ数が多ければそれなりにサイズが大きくなる、つまり転送・解凍に時間がかかるので、どちらの方式が良いかはケースバイケース)


アプリケーションの登録

Retzにアプリケーション(アーカイブファイル)を登録するには、load-appコマンドを使う。

$ retz-client load-app -A アプリケーション名 〜

「-A」でアプリケーション名を付ける。
これは何でもいいが、後で(runコマンド等で)実行する際に使用する。

ちなみに、retz-serverを再起動した場合は、load-appを再度行う必要がある。


登録されているアプリケーション名の一覧は以下のコマンドで確認できる。

$ retz-client list-app

アーカイブファイルの置き場所

Retzにアーカイブファイルを登録する為には、各Mesosスレーブサーバーからそのアーカイブをダウンロードできるような、共通の場所にアーカイブファイルを置いておく必要がある。
Retzとしては、httpやhdfs(maprfs)でダウンロードすることを想定しているようだ。

load-appコマンドではそのアーカイブファイルの場所(URL)を指定するが、その時点ではURLを保存するだけで、アーカイブファイルの転送自体は行われない。
実際にコマンドが実行されるときに、Mesosスレーブサーバー上にそのアーカイブファイルをダウンロードしてくる。(アーカイブファイルがtar.gzの場合は、転送した後で解凍も行われる)


httpを使う場合は、どこかでウェブサーバーを立ち上げ、そこにアーカイブファイルを置いておく必要がある。

$ retz-client load-app -A asakusa -P http://example.com/asakusa-m3bp.tar.gz -disk 6000

hdfsを使う場合は、MesosスレーブサーバーからHDFS(Hadoop分散ファイルシステム)にアクセスできる必要がある。

$ hadoop fs -put asakusa-m3bp.tar.gz
$ retz-client load-app -A asakusa -P hdfs:///user/hishidama/asakusa-m3bp.tar.gz -disk 6000

アーカイブの転送・解凍方法

アーカイブファイルの転送(Mesosスレーブサーバーへのダウンロード)には、コマンド実行の度に毎回転送する方法と、そのサーバーで初めて実行するときだけ転送する方法がある。
また、そのサーバーに既にインストールされているファイルだけ使えばいい場合は、アーカイブファイルは不要となる。


コマンド実行の度に毎回転送(および解凍)するなら、「-F」オプションでアーカイブファイルを指定する。

$ retz-client load-app -A asakusa1 -F http://example.com/asakusa-m3bp.tar.gz

実行対象サーバー上で初めての場合だけ転送(および解凍)する場合は、「-P」オプションでアーカイブファイルを指定する。

$ retz-client load-app -A asakusa2 -P hdfs:///user/hishidama/asakusa-m3bp.tar.gz -disk 6000

「-disk」は、実行時に確保するディスクサイズを指定する。単位はMB。
アーカイブファイルのサイズと、解凍後のサイズの合計を指定する。
(Retzはこのディスクサイズを確保できるMesosスレーブサーバー上にアーカイブファイルを転送し解凍する)


アーカイブファイルを使う必要が無い場合は、アプリケーション名だけ指定すればよい。

$ retz-client load-app -A asakusa0

コマンド(ジョブ)の実行

retz-clientのrunコマンドでジョブを実行する。この場合、ジョブが終了するまでretz-clientは終わらない。
scheduleコマンドを使うと、ジョブを起動するだけで、retz-clientは終了する。

retz-clientのlistコマンドで、実行した/実行中のジョブ一覧を表示できる。
get-jobコマンドで、実行結果(ログ)を表示できる。


Asakusaアプリケーションを実行する例

事前に実行対象マシンにAsakusaデプロイメントアーカイブを展開してある前提(load-appでアーカイブファイルを指定しない)で、そのAsakusaアプリケーション(Asakusa on M3BP)をRetz経由で実行する例。

$ retz-client run -A asakusa0 \
    -cpu 16-16 \
    -mem 128000-128000 \
    -E ASAKUSA_M3BP_ARGS='--engine-conf com.asakusafw.m3bp.thread.max=$RETZ_CPU' \
    -E ASAKUSA_M3BP_OPTS='-Xmx64g' \
    -E ASAKUSA_HOME=/home/hishidama/asakusa \
    -E YAESS_OPTS='-Duser.home=.' \
    -cmd '$ASAKUSA_HOME/yaess/bin/yaess-batch.sh m3bp.example.summarizeSales -A date=2011-04-01' \
    -R -
オプション 説明
-A アプリケーション名。load-appで登録したアプリケーション名を指定する。
-cpu 必要なCPU数の上限・下限。
-mem 必要なメモリー量の上限・下限[MB]。
-E コマンドの実行時に使用する環境変数。
-cmd 実行するコマンド。
相対パスにすると、アーカイブファイルが解凍された場所からの相対パスとして扱われる。
「-E」で定義した環境変数およびRetzが定義した環境変数を使うことが出来る。
-R ログの出力先ディレクトリー。
「-」を指定すると、コンソールに出力する。ただし、サーバー上に出力されたstdout, stderrファイルを実行終了後に転送してくるものなので、実行中には何も表示されない。

「-E」や「-cmd」では、Retzが定義した環境変数を使うことが出来る。
これはMesosスレーブサーバー上でコマンドを実行する際に値が入るものなので、retz-clientで指定する際にはシングルクォーテーションで囲む必要がある。

Retzが定義する環境変数
環境変数名 説明
RETZ_CPU Retzが確保したCPU数
RETZ_MEM Retzが確保したメモリー量
RETZ_PVNAME アーカイブが解凍された場所(ディレクトリーのパス)

-E YAESS_OPTS='-Duser.home=.'」は、HOMEを指定しないと何故かYAESSが上手く動かないので、指定している。


load-appでAsakusaデプロイメントアーカイブファイルを登録している場合は、以下のような感じ。

$ retz-client run -A asakusa2 \
    -cpu 16-16 \
    -mem 128000-128000 \
    -E ASAKUSA_M3BP_ARGS='--engine-conf com.asakusafw.m3bp.thread.max=$RETZ_CPU' \
    -E ASAKUSA_M3BP_OPTS='-Xmx64g' \
    -E ASAKUSA_HOME='$RETZ_PVNAME' \
    -E YAESS_OPTS='-Duser.home=.' \
    -cmd '$ASAKUSA_HOME/yaess/bin/yaess-batch.sh m3bp.example.summarizeSales -A date=2011-04-01' \
    -R -

ASAKUSA_HOMEにRETZ_PVNAME(アーカイブが解凍された場所)を指定している。


Retz目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま