コードはGitHubのリンクされています。
クイックスタート
GitHubの White Elephantプロジェクトでコードを確認するか、***スナップショット版をダウンロードしてください。
テストデータを使ってこのサービスを試すことができます:
cd server 
ant 
./startup.sh 
サーバー側
サーバー側はJRubyのWebアプリケーションで、本番環境ではtomcatへデプロイし、収集したデータをHadoopから直接読み込むことができます。データは HyperSQL提供するインメモリ型データベースに格納され、グラフは Rickshaw提供します。
使い始める
このサービスを使い始めるには、まず環境をセットアップする必要があります:
cd server 
ant 
デフォルトでは以下のようになります:
- .rbenv以下のローカルディレクトリにJRubyをインストールします。 
- 上記のディレクトリにRubyRuby gemsをインストールします。 
- JARパッケージのダウンロード 
- テストデータの作成 
この時点で、以下のコマンドでサービスを開始できます:
./startup.sh
ここではJRubyのWebアプリケーションをtrinidad開発環境で実行しています。これは開発モードなので、アプリケーションはローカルデータが利用可能であると仮定しています。
コンフィグ
サーバ側の設定はconfig.ymlで指定します。sample_config.ymlに例があります。
開発モードで実行する場合、./startup.shを使用して開発モードで実行する場合、sample_config.ymlが使用され、ローカルディレクトリの設定と共に有効になります。ここで設定可能な唯一のパラメータはfile_patternで、ローカルにデータをロードするディレクトリを指定します。
WARとしてパッケージ化され、hadoopで指定された設定を使用して本番モードで実行される場合、収集されたデータが利用可能であると仮定して、以下の設定を指定する必要があります:
file_pattern: Hadoop から使用状況ファイルをロードするためのグローバルなファイルパターン。
libs: Hadoop JAR ファイルを含むディレクトリ。
conf_dir: Hadoopコンフィギュレーションを含むディレクトリ。
principal: 安全なHadopにアクセスするためのユーザー名。
keytab: セキュアな Hadoop にアクセスするための keytab ファイルへのパス。
White Elephant は特定のバージョンの Hadoop に基づいているわけではないので、JAR は WAR パッケージにパッケージ化されていません。そのため、Hadoop JARへのパスを設定に指定する必要があります。
展開
tomcat にデプロイできる WAR ファイルをコンパイルします:
ant war -Dconfig.path=<path-to-config> 
指定した設定ファイルconfig.ymlは、WARファイルにまとめてパッケージ化されます。
Hadoopログのアップロード
hadoop/scripts/statsupload.pl スクリプトは、Hadoop ログファイルを HDFS にアップロードするために使用できます。
Hadoopの課題
合計2つのHadoopジョブがあり、どちらも1つのジョブ実行者によって管理され、必要な作業を追跡します。
*** このジョブはHadoopログパーサーで、Hadoopに保存されたファイルからログを読み込み、適切な情報を解析し、Avroフォーマットで書き出します。
2つ目のジョブは、ログデータをAvroフォーマットで読み込み、1時間単位で集計し、データはAvroフォーマットで書き出されます。
コンフィグ
サンプルの設定は hadoop/config/jobs に格納されています。
base.properties: コンフィギュレーションのほとんどを含みます。
white-elephant-full-usage.job: すべてのログを処理するときに使用されるジョブファイルです。
base.properties ファイルには、White Elephant によって指定された構成が含まれ、Hadoop の構成も含まれます。すべての Hadoop 設定パラメータは hadoop-conf で始まります。設定項目はどちらのジョブでも同じですが、もちろんその値はジョブに応じて設定する必要があります。
Hadoopログ
これはパーサーが Hadoop ログを探すルートディレクトリです。解析ジョブは、ログが以下のディレクトリ形式で Hadoop デイリーディレクトリに保存されていることを想定しています:
<logs.root>/<cluster-name>/daily/<yyyy>/<MMdd> 
/data/hadoop/logs/prod/daily/2013/0123 
ドギーバッグを頼む(レストランで)
すべてのファイルを含むzipパッケージを作成するには、次のコマンドを実行します:
    ant zip -Djob.config.dir=<path-to-job-config-dir>
job.config.dirは.propertiesと.jobファイルを含んでいなければなりません。
ジョブスケジューラとしてAzkaban使用している場合、zipファイルはbase.propretiesで指定されたコンフィギュレーションの時間まで動作します。
うごく
zipファイルを解凍したら、run.shスクリプトを実行します。run.shスクリプトを実行するには、2つの環境変数を設定する必要があります:
- HADOOP_CONF_DIR: Hadoop configuration directory 
- HADOOP_LIB_DIR: Hadoop JARs directory 
すべてのジョブを実行します:
./run.sh white-elephant-full-usage.job 
増分ジョブを実行します:
./run.sh white-elephant-incremental-usage.job 
増分ジョブは増分データのみを処理し、完全ジョブは全データを処理します。





