夜間/毎時データの要約と大量のデータの統計収集を実行する一連の Python ETL スクリプトを置き換えることを検討しています。
私が達成したいことは
- 堅牢性 - 失敗したジョブ/ステップは自動的に再開する必要があります。場合によっては、代わりに回復手順を実行したいことがあります。
- フレームワークは、クラッシュから回復できる必要があります。ここは粘り強さが必要だと思います。
- 監視 - ジョブ/ステップの進行状況を監視できる必要があり、できればパフォーマンスに関する履歴と統計を確認できる必要があります。
- トレーサビリティ - 実行の状態を理解できなければなりません
- 手作業による介入 - あると便利です... API / UI / コマンドラインからジョブを開始 / 停止 / 一時停止できます。
- シンプルさ - 代替品を導入するときに、同僚から怒ったような目で見られたくない... シンプルで理解しやすい API が必要です。
現在のスクリプトは次のことを行います。
- 多くのマシンからテキスト ログを収集し、Hadoop DFS にプッシュします。将来、このステップで Flume を使用する可能性があります ( http://www.cloudera.com/blog/2010/07/whats-new-in-cdh3b2-flume/を参照)。
- データに対してHiveサマリー クエリを実行し、新しい Hive テーブル / パーティションに挿入 (上書き) します。
- 新しい集計データをファイルに抽出し、MySql テーブルにロード (マージ) します。これは、後でオンライン レポートに必要なデータです。
- 新しく追加された MySql データ (MySql テーブルから) に対して追加の結合を実行し、データを更新します。
私の考えは、スクリプトをスプリングバッチに置き換えることです。Scriptellaも調べましたが、この場合は「単純すぎる」と思います。
Spring-Batch (主に古い投稿) でいくつかの悪い雰囲気を見たので、ここでいくつかの情報を得たいと思っています。また、Spring-Batch と Hive の統合についてもあまり見たことがなく、面倒です。