高負荷データ処理の各社の事例

http://highscalability.com/blog/2014/3/24/big-small-hot-or-cold-examples-of-robust-data-pipelines-from.html

1 comment | 1 point | by WazanovaNews 3年以上前 edited


Jshiike 3年以上前 edited | ▲upvoteする | link

Hakka LabsのFounderのPete Soderlingが、「何でもBig Dataと称する風潮は行き過ぎだが、処理すべきデータが増えてきているのは確か。」として、データ処理プロセスでの各社の取り組みを紹介しています。

Stripe

HDFSには、JSONやBSONなど多様なフォーマットのデータを送っている。Thriftとでロジカルな構造を定義し、Parquetでディスクに保存するフォーマットを決めている。複雑なバッチ処理のツールとして利用しているTwitterのScaldingフレームワークとの相性もよい。

次のポイントは分析クエリを高速化するための非正規化処理。Scaldingでほとんどのjoin処理をし、Thriftのスキーマを用意する。同時に、IPアドレスのジオコーディング、ユーザエージェントstringの解析、抜けている値の整理などをする。その結果、ネスト構造のスキーマとなり、それはScaldingでの処理とParquetでの保存には問題ないが、ClouderaのImpalaクエリエンジンは処理できないので、内製ツールでParquetデータのネストを解消している。

Tapad

メッセージキューを介してのデータの流れは、Kafkaを利用して、pub/sub方式で時間あたり数テラバイトをプッシュしている。

AvroProtocol Buffersでデータは非正規化されたスキーマにエンコードされており、schema evolutionをサポートしている。

ほとんどのデータはメッセージキューを使うプロセスでリアルタイムに更新される。アクセス頻度の高いデータはAerospikeCassandraにプッシュ。リアルタイムでキューにできるデータはVerticaへ。Aerospikeのクラスタと絡んだローイベントデータはHDFSに保存される。

高度な分析はHDFS上の非正規化データを使っている。

リアルタイムの更新は、HDFSのデータを利用したオフラインのバッチ処理でも再現できる。

Kafkaは、高スループットで並列pub/subを実現できるが、配信/遅延の保障が厳密でなく、データの保持にも制限があり、クエリができない。Aerospikeは、超高速のランダムアクセスread/writeパフォーマンス、データセンタ間のレプリ(32億個のキーで4TBのレプリデータ)、高可用性があるが、クエリ処理が限られている。Cassandraは、ランダムアクセスread/writeパフォーマンスは中庸だが、アトミックカウンタ、時系列の保存ができるデータモデル、データの一貫性がフレキシブルで、データセンタ間のレプリができる。HDFSは、高スループットで安価なストレージ。Verticaは、高速でパワフルな任意のクエリ処理をインタラクティブにできるが、ネスト構造とマルチバリュー属性のサポートがない。ストレージベースの課金なので、多くは利用できない。

Etsy

データ分析のパイプラインは、まずは、ブラウザで実行、もしくはバックエンドから呼び出されるイベントloggerで構成されている仕組み。ともに内部のビーコンサーバを利用している。 Apacheのアクセスログが一定量になるとHDFSに保存され、Hadoopで処理される。MySQLにある本番データは夜間にスナップショットが撮られ、これもHDFSにコピーされることで、クリックデータと取引データを紐付けている。

Hadoopジョブの結果はVerticaに送り、そこには本番データのレプリも置いていて、内製の分析ツールで利用している。

etsy.comでHadoopジョブの結果を利用できるように、内製ツールを使って、シャーディングされたMySQLクラスタに保存している。今年の作業予定としては、Kafkaをパイプラインに組み込むことで、データをイベントloggerの仕組みからHadoopに、そしてストリーミング分析ツールに移せるようにする。また同時に、分析プラットフォームの結果をサイトに反映できるようにもする。

Square

課金ベンダーとして、データはパイプラインの中で一貫して、監査 & 検証が可能な状態にするというポリシーを持っている。ここで問題になるのはスケーラビリティ。入金のたびに、10-15件の会計記帳が必要で、それを監査 & 検証できるようにするには、その10倍のスケールが必要になる。そこでストリームプロセッシングを応用している。


Twitter: データ分析基盤改善の取り組み


#stripe #tapad #etsy #square #hdfs #cassandra #thrift #parquet #kafka

Back