Tag Archives: Spark

Sparkと機械学習と時々MPI

はじめに

こんにちは、LINEで機械学習エンジニアを担当している久保です。この記事はLINE Advent Calendar2016の14記事目です。 今回の記事は、機械学習の(勾配などの)基本的な知識を持ち、Sparkにおける機械学習に興味がある人向けの内容となっています。

Sparkは大規模なデータのための分散処理フレームワークとして人気があり、弊社でも機械学習関連の開発において利用しています。 弊社では機械学習の特徴量の元となるデータがHDFSに格納されているため、それらを容易に読み込むことができる親和性の高さと、分散処理のコードが容易に実装できる所がSparkを利用する上での大きな魅力となっています。

具体的な利用方法として、例えば機械学習エンジンに入力する特徴量を作成するためのETL(抽出、変換、ロード)処理に利用しています。 また、LINE STOREにおける着せ替えの商品ページの右枠にあるアイテムベースのレコメンドやLINEアプリ内でLINE NEWSを立ち上げた際にトップ画面に出てくる「FOR YOU」枠のためのユーザベースのレコメンドなどにおいて、Sparkの機械学習ライブラリであるMLlibを用いてモデルの学習を行っています。

Spark、Mesos、Zeppelin、HDFSを活用した大容量セキュリティデータの解析

LINE Plusでゲームセキュリティ開発を担当しているWJ、KHです。

莫大なユーザーがモバイルからアクセスするLINEゲームにおいて、データの迅速な解析と対応はそう容易なものではありません。LINEゲームへのアクセスと海外ユーザーの大幅な増加に伴い、様々なアビューズ(不正とされる操作を通じて不当な利益を得る行為)行為が次々と観察されています。アビューズ行為は、正常にゲームを利用する善意のユーザーに迷惑を掛けることはもとより、ゲームサービスそのものにも直接的な影響を及ぼします。ゲームの安定性を守り善意のユーザーを保護するためには、アビューズ行為に迅速に対処することがとても大事です。

アビューズ行為が探知されたら、異なった形式のログを関連付けて解析しその問題の原因を洗い出して修正する必要がありますが、このとき一番の障壁は、大容量のログデータの速やかな処理でした。LINEで扱う各種データ量の増加により、従来の伝統的なビッグデータ処理方式では現象が発生してから事象を確認するまで数十分、数時間が掛かってしまいます。また、データ形式(RDB、NoSQL、File、API)や大容量サービスのためのData Shardingのような技術導入などの理由から、すべてのデータを連携することも容易ではありませんでした。何よりも、人気ゲームの場合は流入されるデータ自体が非常に多いのです。いろんな観点から迅速なデータの処理を可能にする多彩なオープンソースを組合せ、その可能性をチェックしてみました。結果として、作業の分配とリソースの活用にはApache MesosとApache Sparkを活用し、データのビジュアライズ(可視化)にはApache Zeppelinを採用することが希望のデータ処理要件に最も近いことが分かり、適切な構成を試みることになりました。