あなたが参照しているプロジェクトは、この Jira チケットに関連しているようです。
現在、JobControl クラスはかなりむき出しであり、ユーザーの生活を楽にする多くの機能が欠けています。例えば:
- ジョブの状態が変化したときに通知を受け取る機能: 今は電話するだけです
JobControl.run
が、実際には、ジョブで何かが変化したときに通知を受け取ることができれば面白いかもしれません。
- 失敗したジョブの再送信: ジョブが失敗した場合にジョブを再送信する機能を実装できます。たとえば、
ControlledJob
クラスに再試行パラメーターの最大数を設定し、失敗したという通知を送信する前にその時点まで再試行することができます。
- 毎週、毎日、毎時など、多くのジョブが定期的に実行されます。これは通常、crontab を介して実行されるため、この機能を Hadoop に組み込むことは興味深いかもしれません。期間を指定すると、JobControl はこれらの定期的な間隔でそれを実行します。
- ジョブフローと各ジョブの依存関係を視覚化するための UI があれば、どのステップが既に完了しており、どのステップが完了していないかがわかります。
- Map/Reduce ジョブだけでなく、Hive、Pig などを起動する機能があれば興味深いかもしれません。ユーザーがあらゆる種類のジョブを送信し、それらをシームレスに監視できる汎用インターフェイスを提供できます。
最後に、完全に新しいフレームワークを再発明する必要はないと思いますJobControl
。クラスはすでに適切な出発点を提供しています。ユーザーの視点で、ジョブの送信と管理をより簡単かつ短時間で行うために何ができるかを考えてみてください。こことチケットのアイデアは一例にすぎません。独自のアイデアを自由に取り入れてください。
Oozieに関する限り、ジョブフローを制御するための抽象度が高くなりますが、セットアップがより複雑になるため、より複雑なジョブ用に予約する必要があります。アプリケーションのオーバーヘッドが増えるため、Oozie の使用をためらう人がいることは事実です。また、大きな違いは、OozieがサーバーでありJobControl
、クライアント マシンで実行されるだけであることです。これは追加のオーバーヘッドです。上記の機能のいくつかは何らかの形でOozieに存在しますが、 Oozieのように余分な作業を必要とせずにクライアント マシン上でシンプルに実行できることが、プロジェクトの鍵であると私は考えています。