本当はManagerの中に入れちゃおうと思ったんだけど、いろいろ無理が出る感じがしたので、分けたしだいです。まぁ、内部での使用もEManagerとManagerがあって、インターフェースで切り替えて、オンプレHadoopとEMRを使い分けてる感じなので、同じっちゃ同じなんですけど。
EManagerができることは、基本Managerと同じで以下のとおり。
- Job Flowの一覧取得
- Job Flowの詳細取得
- StepのKill
- キューの一覧取得
- キューの詳細取得
- キューの登録
まず、Managerと違う点。
Jobの一覧等がJob FlowとStepという感じでEMRのものになってます。キューはManagerと同じだけど、Jobの実行できるものがHive, Pig, Streaming, Custom JarとEMRで使えるものは基本的に使えます。
EManager独自の機能。
まず、Stepのkill。現状、EMRはJobのkillを行うにはEMR自体をターミネートするか、マスターインスタンスにログインしてkillするしか方法がありません。EManagerはManagerと組み合わせることでこの機能を実現しています。
クラスタ数の指定。複数のHadoopクラスタ(EMR)を起動し制御することができます(複数起動する場合は、インスタンスの上限値に注意する必要あり)。
コスト管理。EC2は時間課金なので1時間使用しようが5分使用しようが料金は同じです。Jobが終了したらEMRをターミネートするのではなく、起動したままで次のキューが登録されたら、起動しているEMRにJobを割り振ります。1時間未使用のままであれば自動的にEMRがターミネートされます。
Job(step)の実行。EMRはS3に保存してあるスクリプトなりを指定して実行しますが、EManagerのREST API(APIしかないんだけど)のメソッドでPOSTを指定した場合にファイルをS3に送信することができるのでオンデマンドで実行する時に楽です。オプションの指定で、実行が完了したスクリプトは削除もできます。
などなど。
一応これで、内部のツール系ものは出し切った感。
0 件のコメント:
コメントを投稿