以前の記事「Spark、Mesos、Zeppelin、HDFSを活用した大容量セキュリティデータの解析」に続き、今回はAirArmor※注1から得られる検知情報をほぼリアルタイムで処理するために使用したクラウド技術とストリーミング処理方式についてご紹介します。 ※注1: LINEのゲームセキュリティ開発室で開発し、LINE Gameに適用しているモバイル向けゲームセキュリティソリューションの名称 AirBorne DataCenter & Mesos (with DC/OS) Apache Mesosをベースにセキュリティデータを解析する全体的な仕組みをAirBorne DataCenterと称しています。この仕組みには、ビックデータを処理するためのKafka、Spark、Elasticsearch、Hadoop、Zeppelin、Springなどのオープンソースが含まれています。 導入の背景 2015年初頭にスタートしたAirBorneは、大量のデータを迅速に照会することを目的に作られたものです。MesosベースのSparkを主に使用しており、データの照会およびビジュアライズ(可視化)のためにZeppelinとSpringを採用しています。これにより、DBMSで対応しにくい大量のデータの処理やJSON形式の大量のDBデータとログデータの処理など、これまで不可能または困難だった処理が可能になりました。なお、ユーザビリティの改善と解析タイプの増加に伴い、物理的なノードの拡張や各エンドポイントのモニタリングといった業務の自動化、高いユーザビリティ、安定性などへのニーズが継続的に発生しました。 特に、定期的にデータを処理する業務だけでなく、リアルタイムでデータを処理してその都度通知を受け取り、変化量をコントロールできるようにする業務も必要となってきました。 このような業務環境の変化を受け、AirBorne DataCenterの構造の設計を見直し、リアルタイム処理に対応する新しい領域を追加しました。 Apache Mesosは、多数の物理的なノードのリソースを論理的に一つのリソースとして提供できるように、フレームワークを提供しています。Kafka、Elasticsearchのように固定されたリソースを使用するケースもあれば、Spark Executorのように余分のリソースを瞬間的に最大限に活用するケースもあるなど、リソースの無駄を省き、効率的な使用を図ることができます。なお、Constraint、Role、Quotaなどを設定することで、様々な方法でリソースを予約できるようになります。 DC/OSは、Mesosフレームワークに対応するオープンソースパッケージを提供しています。Kafka、Elasticsearch、MySQL、Spark、Zeppelinなど多様なオープンソースがパッケージでサポートされます。基本的には、パッケージのインストールと運営のためのツール、障害対応、柔軟な水平拡張などの追加機能が含まれています。一定期間のテストと試験運営を経てユーザビリティの検証を終え、一部の領域に導入しています。 ストラクチャー AirBorne DataCenterは上図のような構成となっており、データ処理をリアルタイムと非リアルタイムに区分しています。データ処理においてリソースを予約・活用する方法、対象となるデータの保存期間もそれぞれ異なります。そのため、リアルタイムデータ処理については、適切な量のリソースを固定的に予約・活用するようにしました。一方、非リアルタイムデータ処理については、長期間のデータを保存するシステムで余分のCPUとメモリリソースを活用するように設計しました。 DC/OSは、上記のような環境を迅速に構築できるというメリットを持っていますが、DC/OS一つでAirBorne DataCenterの二つの領域(DC/OS AとDC/OS B)を運営するには、設計コンセプト上まだこのソリューションに適していない部分がありました。ただ、今回のプロジェクトでは、リアルタイムデータ処理環境の早期構築や柔軟な拡張、モニタリングの自動化などにおいてはDC/OSが大きく貢献しました。今後、独自の環境に適したMesosベースの開発プロジェクトを準備する予定です。 ビックデータを処理するためのパッケージで構成されているクラウド環境は、マルチユーザーのためのシステムというよりは、余分のリソースを大きな作業に活用したり、固定されたリソースを小さな作業に予約しておいたりと、リソースを自由に操作できるという観点から通常のクラウド環境とは大きく異なるといえます。実際、リアルタイム処理の場合は、対象が1,000万件あるとしても100個の処理部で並列処理すれば、一つの処理部が担当するのは10万件のみとなります。リソースが多い大きいノードを使用して拡張するとリソースが余ってしまいますが、適量のリソースを持つノードを使用するとリソースの余剰を最小限に抑えて拡張することができます。 このように、AirBorne DataCenterの構成におけるMesosは、多様な方法でリソースを予約して使用するための重要な役割を果たしています。 特徴 AirBorne DataCenterは、次のような特徴があります。 Web UIを用いたクラスタの運営(パッケージのインストール、スケールアウト)とモニタリング Mesosベースの多様なビックデータ関連オープンソースパッケージに対応 柔軟な拡張 Quota、Constraint、Roleの設定よる多様なリソース予約方法 OAuthによる認証/認可の提供 障害対応 リアルタイムデータ処理と非リアルタイムデータ処理との比較 DC/OS A DC/OS B 用途 リアルタイムデータ処理 非リアルタイムデータ処理 性能 30万EPSの処理能力 1日前のデータを5秒以内に照会(in memory) 全日付のデータを処理(in HDFS) Mesos quota Cluster:UNIQUE Role: *, Spark, HDFS Spark: 16 CPUs, 32GB memory HDFS: 4 CPUs, 8GB memory, disk * Spark mode Standalone mode Mesos coarse mode Business logic feature Local & global data aggregation Message transformation & filter Programmatic data processing Message transformation & filter Machine learning & graph Tools Elasticsearch: search, aggregation Kibana: (…)
↧