Apache、Nginx、Darwin(ビデオストリーミングサーバー)によって生成されたアクセスログを解析し、配信された各ファイルの統計を日付/リファラー/ユーザーエージェントごとに集計しています。
1時間ごとに大量のログが生成され、その数は近い将来劇的に増加する可能性があります。そのため、AmazonElasticMapReduceを介してその種のデータを分散して処理することは合理的と思われます。
これで、マッパーとレデューサーを使用してデータを処理し、次のフローでプロセス全体をテストする準備が整いました。
- アマゾンS3にアップロードされたマッパー、レデューサー、データ
- 適切なジョブを構成し、正常に処理しました
- 集計結果をAmazonS3からサーバーにダウンロードし、CLIスクリプトを実行してMySQLデータベースに挿入しました
私は、Amazon ERMについてインターネット上でグーグルできる何千ものチュートリアルに従って、手動でそれを行いました。
次に何をすればいいですか?このプロセスを自動化するための最良のアプローチは何ですか?
- APIを介してAmazonEMRjobTrackerを制御する必要がありますか?
- ログが2回処理されないようにするにはどうすればよいですか?
- 処理されたファイルをアーカイブに移動するための最良の方法は何ですか?
- 結果をPostgreSQL/MySQLに挿入するための最良のアプローチは何ですか?
- ジョブのデータを入出力ディレクトリにどのように配置する必要がありますか?
- APIを使用して毎回新しいEMRジョブを作成する必要がありますか?
- 生のログをAmazonS3にアップロードするための最良のアプローチは何ですか?
- 誰かがデータ処理フローの設定を共有できますか?
- ファイルのアップロードとジョブの完了を制御する方法は?
このトピックは、Amazon Elastic MapReduceを使用してアクセスログを処理しようとしたが、適切な資料やベストプラクティスを見つけることができなかった多くの人々に役立つと思います。
UPD:ここで明確にするために、最後の質問が1つあります。
Amazon Elastic MapReduceを利用したログ処理のベストプラクティスは何ですか?
関連記事: