【LINE DEV DAY 2017】HBase at LINE 2017 #line_devday


LINEのトラフィックを支えるHBaseという技術について

LINEのメッセージングサービスにおけるHBaseエンジニアリングについて
運用環境の改善、HBase 0.90.6から1.2.5へのサービス無停止でのアップグレード、HBaseの新機能の活用事例などについて

HBaseについて

LINEで使われているOSSのNoSQLデータベース

どこで使っているか?

Messaging
GAME Platform
Timeline
Statistics

どんなデータを入れているか?

user
addressbook
backup
など

オペレーション

HBase運用専用チームはいない
Operator = Developer

モニタリング環境

プロメテウス(Prometheus)を使用している
クラスターごとのPrometheusを集めるためのPrometheusも使用している。(こちらはポーリング間隔は長めにしている)

HBase Versions

最新版は1.3。
今までLINEでは、安定版0.90.6-cdh3u5を使用していて、順次1.2へアップグレードしている。

バージョン切り替え手順

dual write (0.9と1.2のDB両方に書き込み)
bulk copy (0.9のデータを1.2にコピー)
testing phase (移行したデータの確認)

HBaseアップグレード当たって

パフォーマンスの測定
Kafka -> Shadow環境に本番運用とほぼ同じ負荷で測定可能にしている。

HBase 0.90から1.20への切り替え

HBaseクライアントにパッチを当てた。
2~3週間はちゃんと動いていたが、徐々にレスポンスタイムが悪くなっていった。

アップグレードして良かったか?

BucketCache

昔はCacheをJVMのヒープに持っていたが、1.2からはヒープ外に持つようになったため、GCの対象にならずパフォーマンスがあがった。
しかし、移行は簡単ではなく色々な課題を解決する必要があった。

まとめ

機能面でも性能面でも恩恵を受けている。
もうすぐHBase 2.0が出るという噂。
今後も継続してアップグレードしていく必要がある。