9

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を利用したログ処理のベストプラクティスは何ですか?

関連記事:

ElasticMapReduceHDFSにデータを出し入れする

4

1 に答える 1

3

これは非常に広く開かれた質問ですが、ここで検討できるいくつかの考えがあります。

  • Amazon SQSの使用:これは分散キューであり、ワークフロー管理に非常に役立ちます。ログが利用可能になるとすぐにキューに書き込むプロセスがあり、そこから読み取る別のプロセスがキューに記述されたログを処理しますメッセージを送信し、処理が完了すると削除します。これにより、ログが1回だけ処理されるようになります。
  • おっしゃるように、ApacheFlumeはログの集計に非常に役立ちます。これは、リアルタイムが必要ない場合でも、少なくとも標準化された集計プロセスを提供するため、考慮する必要があります。
  • Amazonは最近SimpleWorkFlowをリリースしました。調査を始めたばかりですが、データパイプラインのすべてのステップを管理することは有望に思えます。

それがあなたにいくつかの手がかりを与えることを願っています。

于 2012-04-14T19:42:26.343 に答える