DMM.comラボエンジニアブログ

DMM.comラボのエンジニアブログです。DMM.comを支える技術について書いています。

DMM insideに引っ越しました。 移転先はこちら -> https://inside.dmm.com/

DMMゲームのログ解析~ハマりポイント~

こんにちは、オンラインゲームのバックエンド、KPIシステムを担当していますマサヨシです。
【DMMオンラインゲームで実際に実装しているログとKPI】に関してご紹介する最終回となる第3回です。
前回、前々回はこちらです。
今回はログを実装する際に困ったハマリポイントをご紹介します。

 

ログ実装のハマりポイント

webが最新の技術に追い付いていない

ハマりポイントは結構沢山あったのですが、まず最新技術の情報にWebの情報が追い付いていないということが結構ありました。
検索結果の上位や、半年前の記事は正しくないことが往々にしてあります。

実際に「php hive」の検索結果1ページ目の10件中9件が古く使えない記事だったこともありました。新しめの技術を使う際には注意が必要です。

 

ストレージを消費する

ログの収集は開発環境でも結構ストレージを消費してしまいます。

空きスペースが不足すると、MapReduceのjobが作られなくなってしまい、動かなくなってしまうので注意が必要です。

 

Impalaの制限

ImpalaはHiveと互換性があるように作られているのですが、一部対応していないところがあります。

実際にハマったポイントとしては
・DATE型のパーティションが使えない
・FluentdのWebHDFSが出力したgzipファイルが読み込めない

 

Laravel5

今回はじめてLaravel5を利用したのですが、Laravel5のキャッシュと
ネームスペースのところで少し詰まりました。
ファイル名やクラス名をリネームしたらcomposer dump-autoloadをしないと読み込めなくなってしまい、ハマりました。

 

今後やりたいこと

Hive on Sparkの導入

こちらはclouderaが推奨しているようなので、興味を持っています。
HiveのMapReduceのエンジンをSparkに置き換えるというものです。
SparkのほうがImpalaよりもメモリ効率がいいので、期待しています。

 

Embulk

EmbulkというFluentdと同じようにログを収集するものがあるのですが、Embulkは既存のログをバッチで入力することができます。

これによって、過去にさかのぼってKPIを取得することができます。

 

まとめ

3回にわたってログフレームワークについて実装やParquet、ハマリポイントなどについてご紹介してきました。

今後よりパフォーマンスを向上させ、多様なゲームタイトルのログ集計に最適化させていきます。