blog

Hadoopログ分析ツール:ホワイト・エレファント

White Elephantは、世界最大のプロフェッショナル向けソーシャルネットワーキングサイトであるLinkedinによって開発された、Hadoopジョブログを分析するためのシステムで、完全にオープ...

Jul 20, 2025 · 5 min. read
シェア

コードは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 

増分ジョブは増分データのみを処理し、完全ジョブは全データを処理します。

Read next

モバイルアプリの「精神的反応性」を高める

どのようにモバイルアプリケーションを高速化するには?この質問は、明らかにそのようなインタフェースグラフィックリソースや技術的なソリューションの開発の妥当性など、多くの要因が含まれ、今日、我々は方法の使用中のいくつかの典型的なシナリオで、設計スキルの詳細のいくつかの "心理的 "観点から、探索するつもりです。

Jul 20, 2025 · 5 min read