松崎さん
徳永@Tenginefw 開発チームです。
ご質問ありがとうございます。
インラインにて質問にお答えしたいと思います。
> hadoop_jobで実行されるJOBが失敗した場合の処理を定義する場合、rescueで例外を拾うのでしょうか?
残念ながら、DSL評価時の例外を検出することは出来ますが、Tengine でのジョブの実行は、別のコンテキストで
行われるため、job ,hadoop_job, hadoop_job_run の実行時に raise された例外をそれらの外の rescue節
で
検出することはできません。
ただし実行時のエラーに対応する方法として、recoverという特殊なジョブネットを考えています。
jobnet("jn1") do
job("j1", ....)
recover do
job("jr", ....) # j1の実行に失敗した場合に、ジョブjrが動作します。
end
end
また、finallyを用いてエラー発生時であっても必ず実行されるジョブを定義することができます。
http://tengine.github.com/developers_guide.html#finally
> 「失敗した時にどこまで戻るのか?」というフローを、DSLでどう書くのか知りたいです。
上記でもお伝えしたとおり、失敗時のリカバリ機能については、現時点の Tengine には実装されていません。
> Asakusaのバッチを実行する場合は、YAESSの「フェーズ単位の実行」でやるのかな?と思うのですが、
> その辺りのAsakusaとの連携についても知りたいです。
Asakusaとの連携についてですが、現時点では特別な連携機能は用意していません。
よって、Asakusaのバッチを実行するのであれば、ワークフロー制御についてはYAESSに任せてしまって
Tengineでは、jobメソッドを使って、以下のようなYAESSのバッチ全体の実行を行うようにする方が
よいかと思います。
* ジョブネット定義例
require 'tengine_job'
jobnet("asakusa_jobnet", :server_name => "serv1", :credential_name =>
"cred1") do
auto_sequence
job("yaess-bach", "yaess-batch.sh (バッチID)")
end
今後もフィードバック頂けますよう、お願い致します。
-----
Tenginefw開発チーム
徳永 貴久 <
tokun...@gmail.com>
On Feb 14, 12:24 pm, 松崎 学 <
matsum...@gmail.com> wrote:
> 松崎と申します。
>
> この度はリリースおめでとうございます!
>
> 早速ですが、AsakusaのバッチをTengineから実行してみようと思ってます。
> Asakusaバッチのジョブネット定義について教えて下さい。
>
> 以下のページにHadoopを使用したジョブネットの定義方法があったのですが、
> hadoop_jobで実行されるJOBが失敗した場合の処理を定義する場合、rescueで例外を拾うのでしょうか?
> 「失敗した時にどこまで戻るのか?」というフローを、DSLでどう書くのか知りたいです。
>
> ・ジョブネット定義 - Hadoopを使用したジョブネット
http://tengine.github.com/developers_guide_jobnet_dsl.html
>
> Asakusaのバッチを実行する場合は、YAESSの「フェーズ単位の実行」でやるのかな?と思うのですが、
> その辺りのAsakusaとの連携についても知りたいです。
> (AsakusaのMLに投げる質問かも知れませんが。。)
>
> ・YAESSユーザーガイド - フェーズ単位の実行
http://asakusafw.s3.amazonaws.com/documents/0.2/release/ja/html/yaess...
>
> 以上、よろしくお願いいたします。
>
> --
> 松崎 学 <
matsum...@gmail.com>