BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Netflixがビッグデータ分析基盤を紹介

Netflixがビッグデータ分析基盤を紹介

原文(投稿日:2017/03/21)へのリンク

Netflixでシニアソフトウェアエンジニアを務めるTom Gianos氏とNetflixでビッグデータ計算のエンジニアリングマネージャを務めるDan Weeks氏は、QCon San Francisco 2016で同社のビッグデータ戦略と分析基盤について話をした。データの大きさやS3のデータウエアハウス、そして、ビッグデータのオーケストレーションシステムであるGenieが話題に上がった。

要件の説明で、Weeks氏はNetflixのビッグデータに関する最大の困難はスケールだ、と話した。全世界8600万人以上のユーザーがいて、動画の配信時間の合計は1日1億2500時間に及ぶ。その結果、データウエアハウスは60ペタバイトを超える。

普通、人々はこのような動画配信のデータはNetflixで分析に使われていると考えるかもしれない。Weeks氏の説明では、彼らが扱うのは別の種類のデータだ。例えば、様々なマイクロサービスやキャンペーンによって生成されるイベントのデータだ。Weeks氏は次のように詳述する。

Netflixはデータ駆動の会社です。エビデンスに基づいて意思決定するのを好みます。プラットフォームに対して、ユーザー体験の改善に結びつくということが立証されていない変更をすることは好みません。

Weeksはこの種のデータの利用方法の一つとしてA/Bテストを挙げた。データサイエンティストはユーザーのインタラクションを分析することができ、どのような機能を恒久的なものにするかを決める。

また、氏は同社のデータパイプラインアーキテクチャの概観を示した。ふたつの流れがある。一つはイベントデータの流れ、もう一つは次元データの流れだ。イベントデータはKafkaのデータパイプラインを流れる。一方、次元データはオープンソースのツールであるAegisthusを使ってCassandraクラスタから取り出される。最終的には全てのデータはS3にアップされる。

従来のデータウエアハウスはHDFSを使うが、氏はS3を使うことの優位性について説明した。99.99%の可用性、バージョニング、ストレージと計算処理の分離などが利点として挙げられた。特にストレージと計算処理の分離は重要だ。データの局所性の欠如から遅延が生まれるにも関わらず、分離して置けば、データの移動をすることなしに、計算クラスタを簡単にスケールし、アップグレードを実行できるからだ。

データウエアハウスから欲しいデータを取り出すため、Metacatと呼ばれるメタデータシステムを利用している。このシステムは、データの処理の仕方をそのデータが何であるか、どこにあるか、と共に提供してくれる。Metacatは連合システムなので、HiveやRDS、S3などで利用できる。

Weeks氏の説明に寄れば、データそのものはParquetフォーマットで保存されている。これのフォーマットは列志向であり、圧縮が改善される。Parquetファイルはメタデータも格納されている。列の長さの最大/最小、そしてそれらのサイズのような情報だ。これによってカウントやスキッピングのような処理がかなり高速に実行できる。

Parquetのチューニングについての詳細はNetflixのシニアソフトウェアエンジニアであるRyan Blue氏が公開している。

Weeks氏がビッグデータの低い層の話を説明した一方で、Gianos氏は高いレベルの視点から説明をした。主な話題はGenieだ。これは様々なHadoopやPig、Hiveのようなビッグデータジョブを管理するツールだ。

Genieの要件を説明するため、氏は数人のユーザーが全てのクラスタにアクセスする、というユースケースから話を始めた。このケースは素直に管理できるが、組織が大きくなると、多くのクライアントリソース、クラスタリソース、より複雑な配置が必要になる。こうなると、データサイエンティストがジョブが遅延したり、データ処理ライブラリが古くなったりして困ることになる。これらのイシューに管理者が素早く対応するのは難しい。

Gianos氏によれば、Genieを使うと管理者は、エンドユーザーから分離された状態で、クラスタを立ち上げ管理でき、バイナリをインストールしたりできる。ユーザーから見れば、クラスタへのアクセスの抽象であり、クラスタへの接続方法や何が実行されているかについて心配する必要がない。

クラスタをアップデートするために必要なのは、新しいクラスタのテストが通ってマイグレーションされるタグだ。Genieは全てをこのように差配するため、古いジョブは完了するまでは古いクラスタで実行され、新しいジョブは新しいクラスタで実行される。その結果、停止時間は生まれない。

また、Genios氏の説明によれば、Genieのタグシステムは負荷分散にも使える。タグをクラスタを跨いで複製することで負荷を分割するのだ。クライアントから見た場合、これは完全に透過的だ。

また、Genios氏はGenieのバイナリの更新の機能についても説明した。新しいバイナリは中心のダウンロード場所に置かれる。そして、次の実行で古いバイナリと置き換えられる。

Genios氏はデータサイエンティストからの視点でGenieのワークフローをデモした。Genieにジョブを登録する。ジョブにはクラスターのタグや利用したいビッグデータ処理エンジンなどのメタデータが含まれる。Genieは適切なクラスタを選択してジョブを実行する。GenieのUIは実行しているジョブのフィードバックをユーザーに提供する。

講演の全体はオンラインで確認できる。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT