BT

Pinterest、OpenTSDBから独自の時系列データベースに切り替え

| 作者: Hrishikesh Barua フォローする 15 人のフォロワー , 翻訳者 sasai _ フォローする 0 人のフォロワー 投稿日 2018年10月17日. 推定読書時間: 3 分 | ディスカッション

原文(投稿日:2018/09/16)へのリンク

2014年以降、Pinterestのエンジニアリングチームは、メトリクスのストアおよびクエリのためのエンジンとしてOpenTSDBを使ってきた。しかし、メトリクスデータ量の増大による様々なパフォーマンス問題のため、彼らは独自の時系列データベースを開発することにした。それはGokuと呼ばれ、C++で書かれており、OpenTSDBに準拠したAPIを備えている。

Pinterestの開発チームは、Statsboardというシステムを使っている。これはGraphiteGanglia、OpenTSDBからのメトリクスをYAMLによる宣言的な設定で統合するダッシュボードだ。2012年初め、PinterestのモニタリングにはGangliaが使われており、システムメトリクスだけを収集し、アプリケーションメトリクスを収集していなかった。その後、アプリケーションメトリクスのためにstatsdを使ったGraphiteが開発され、続いてクラスタ化したGraphiteがデプロイされた。2014年にはOpenTSDBがデプロイされた。カスタムのメトリクスエージェントを使って、処理パイプライン経由でデータをKafkaクラスタにプッシュし、それをOpenTSDBとGraphiteにプッシュした。数年前の時点で、OpenTSDBのスループットは150万ポイント/秒だったという。PinterestチームはJavaのGC問題と、OpenTSDBがバックエンドストアとして使っているHBaseの頻繁なクラッシュに直面した。Pinterestには、多数のサービスのために巨大なHBaseデプロイメントがあったのだ。

彼らの自社製時系列データベースエンジンであるGokuは、OpenTSDBの特定の領域を改善しようとしている。これには、HBaseスキャンの代わりに転置インデックスを使用すること、データポイントの圧縮改善、クラスタ化したクエリ集約、高速なシリアライゼーション形式といったものが含まれる。GokuはFacebook Gorillaインメモリストレージエンジンを使って最近のデータを格納し、NFS上の永続ストレージを備えている。PinterestはEC2にホストされているが、彼らがAWS EFSを使っているのか、自前のソリューションを使っているのかは、記事からはわからない。著者によると、再起動時にはディスクからメモリにデータを読み戻すという。

Gokuのクエリモデルは、OpenTSDBと同等だ。シャード間でクエリを展開・集約するため、チームは独自のクエリ集約レイヤーを書いた。Gokuは2レベルのシャーディング戦略を用いている。これはメトリクス名のあとにタグキー-バリューのペアを続けることに基づいている。クエリはGoku proxyによって処理され、個々のGokuシャードに送られる。シャードは転置インデックスを使ってリクエストされた時系列のidを得てデータを取得し、個々のアグリゲーター(ダウンサンプリング、集計など)を実行し、それをproxyに送り返す。proxyは2周目の集約後、それをクライアントに送り返す。Gokuによるもうひとつの改善は、OpenTSDBのJSON形式の代わりに、Apache Thriftのバイナリデータ型を使うことだ。

Gokuは、Pinterestにおけるデータセットサイズだけでなく、遅延やリソース要件も低下させた。GokuはC++で書かれており、OpenTSDB APIに完全に準拠している。Javaで書かれたYuviという別のPinterestプロジェクトはGokuと多くの類似点がある。この他、VivintUberImprobableCriteoといった時系列メトリクス収集/クエリシステムが作られ、あるいはカスタマイズされている。

 

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント Watch Thread

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

特集コンテンツ一覧

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT