大規模なログファイル分析の実装
質問
誰もが、彼らが操作して、特にウェブ解析のために行うことをログ解析(例えば、マルチTBの範囲)を参照に私を指すか、Facebookの、ヤフー、グーグルなどアルのような企業が大規模に実行する方法の高レベルの概要を提供することができます?
特にウェブ解析を中心に、私は2つの密接に関連する側面に興味がある:クエリのパフォーマンスとデータストレージ
私は一般的なアプローチは、マップを使用(例えばHadoopの使用)クラスタ上に各クエリを配布するために減少させることであることを知っています。ただし、使用するための最も効率的な保存形式は何ですか?これは、ログデータであるので、我々は、各イベントは、タイムスタンプを持っており、一般的にデータが構造化し、スパースでないと仮定することができます。ほとんどのウェブ解析クエリは、任意の二つのタイムスタンプ間のデータのスライスを分析し、そのデータで集計統計や異常を取り出す伴うます。
大きなテーブル(又はHBaseの)のような列指向DBう格納するための効率的な方法であり、より重要なことに、そのようなデータを照会?あなたは(タイムスタンプに基づいて)行のサブセットを選択しているという事実は、このタイプのストレージの基本的な前提に対して動作しますか?例えば、非構造化データとして保存する方が良いだろう。逆インデックス?
解決
残念ながらワンサイズは、すべての答えに合っていないがあります。
私は現在、AWSの内部上演パイプラインを通じて100日目のライブを処理するために、カスケーディング、Hadoopの、S3、及びアスターデータを使用しています。
それはHadoopの上のプロセスをカスケード接続することによって洗浄し、解析された大規模なデータセットにSQLインターフェースを提供するので、アスターデータがクエリとレポートのために使用されます。カスケードJDBCインターフェースを使用して、アスターデータをロードすることは非常に些細なプロセスである。
非常に有用である、帯域外結合を実行するためにアプリをカスケード/ MapReduceのの助けを借りずにキー/バリューストアがあるのHBaseとHypertableのような心のツールに保管してください、そうアドホッククエリを実行しないと合流パターンます。
全面開示を、私は、カスケーディング・プロジェクトの開発者です。
他のヒント
ブックのHadoop:オライリーによって決定的なガイドには、Hadoopのが、二つの実世界の企業で使用されている方法について説明し章を持っている。
。紙を見てくださいデータの解釈:によってにSawzallと平行分析をグーグル。これは、Googleがログ分析のために使用するツールについての論文です。