9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Cloudera ManagerAdvent Calendar 2015

Day 22

Cloudera ManagerでHBaseの運用

Last updated at Posted at 2015-12-22

サイバーエージェントの秋葉原ラボで働いている鈴木といいます。
今回は、Cloudera Managerを使ったHBaseの運用の一部を紹介しようと思います。

はじめに

弊社ではHBaseの運用にCloudera Managerを使っています。
Cloudera Managerを使うことでクラスタの構築・管理が楽になるのはもちろんのこと、監視やトラブルシューティングも簡単になったりします。

既にCloudera Manager Advent Calendar 2015で紹介されているログ検索も便利ですし、
tsqueryというチャート生成専用のクエリ言語もかなり便利です。

今回はHBaseを運用する上で普段見ているチャートのtsqueryを紹介したいと思います。

tsqueryについて

tsqueryはCloudera Manager内に蓄積されているメトリクスなどの時系列DBにアクセスできるSQLライクな言語です。Cloudera Managerのチャートビルダーからtsqueryなどを指定することでチャートが作成できます。

詳細については、以下をご覧ください。

サーバリソース系のメトリクス

ここからは実際に普段見ているチャートのtsqueryを紹介します。

まずは、サーバリソース系です。

CPU

最初にCPUのメトリクスから紹介します。

項目
tsquery select cpu_percent
Chart Type Line
Facets All Combined

tsqueryで指定している cpu_percent はCPUの使用率を表すメトリクスを見ることができます。

Cloudera Managerではチャートを作成する際に、tsqueryを指定する他に「Chart Type」や「Facets」を指定できます。
Chart Typeを「Line」にすると折れ線グラフになります。
台数が多くなってくるとグラフが多くなると見づらくなるのでFacetsは「All Combined」にして全サーバのメトリクスを1つのグラフで見れるようにしています。

以下のようなチャートになります。

chart1

全体的なCPU使用率の傾向がわかったり、異常なCPU使用率になっているRegionServerを特定することができます。

ディスク

次にディスクです。

項目
tsquery select utilization_across_disks
Chart Type Line
Facets All Combined

普段はディスクの使用率を見ています。
tsqueryで指定している utilization_across_disks はサーバにある全てのディスクの総使用率を見ることができます。

ディスク使用率も、Chart TypeはLine、FacetsはAll Combinedにしています。

チャートの画像はCPUと同じような感じになるので割愛します。

ネットワーク

ネットワークはInとOutで別チャートにして見ています。
ネットワークに関しても、Chart TypeはLine、FacetsはAll Combinedにしています。

  • In
項目
tsquery select bytes_receive_rate
Chart Type Line
Facets All Combined
  • Out
項目
tsquery select bytes_transmit_rate
Chart Type Line
Facets All Combined

以下は、ネットワークのInのチャートになります。

chart2

HBaseのメトリクス

ここからはHBaseのメトリクスについて紹介します。

IPC系のメトリクス

IPC系のメトリクスとして、「Queue Time」と「Process Time」の99パーセンタイルを見ています。
HBaseでは、リクエストはまずキューイングされ、ハンドラースレッドがそこからリクエストを取り出し処理するという仕組みになっています。Queue Timeはリクエストがキューの中にいる時間を示していて、Process Timeはハンドラースレッドがリクエストを処理する時間を示しています。
Queue Timeが大きくなることはハンドラースレッドが処理に間に合わず詰まってきていることになり、Process Timeが大きくなると重いリクエストが来ているか、何らかの原因で処理速度が遅くなっていることになります。

  • Queue Time
項目
tsquery select ipc_queue_time_99th_percentile
Chart Type Line
Facets All Combined
  • Process Time
項目
tsquery select ipc_process_time_99th_percentile
Chart Type Line
Facets All Combined

以下はProcess Timeのチャートです。

chart3

オペレーション(Get, Incrementなど)のメトリクス

IPC系のメトリクス以外にも、GetやIncrementなどのオペレーション毎のメトリクスも見ています。
秒間オペレーション数やレイテンシの99パーセンタイルを見ています。

  • Getの秒間オペレーション数
項目
tsquery select get_rate
Chart Type Line
Facets All Combined
  • Getのレイテンシの99パーセンタイル
項目
tsquery select get_99th_percentile
Chart Type Line
Facets All Combined

Get以外にも、例えばIncrementの秒間オペレーション数は increment_rate で取得できますし、レイテンシの99パーセンタイルは increment_99th_percentile で取得できます。

Block Cacheのメトリクス

HBaseではBlock Cacheにどれだけヒットしているかが参照系のパフォーマンスに大きく影響してきます。
ヒット率が低くなってきた場合やEvictionが増えてきた場合には、増設の検討やRegionのバランシングの改善などの対策が必要となります。

ただし、私たちがメトリクスとして普段見ているのはヒット率ではなくキャッシュミスカウントを見ています。これは、ヒット率にはあまり影響していないがキャッシュミスが増えているケースがあるからです。

  • Block Cacheのキャッシュミスカウント
項目
tsquery select block_cache_miss_rate
Chart Type Line
Facets All Combined
  • Block Cacheのeviction数
項目
tsquery select block_cache_evicted_rate
Chart Type Line
Facets All Combined

コンパクションのメトリクス

コンパクションは非常に重い処理であり、頻発すると全体のパフォーマンスに影響を与えてしまうので普段から見ておく必要があります。
HBaseではコンパクションの要求が発生するとコンパクションキューにキューイングされる仕組みになっているので、コンパクションキューのサイズを見ています。

項目
tsquery select compaction_queue_size
Chart Type Line
Facets All Combined

以下のようなチャートになります。

chart4

Region毎のメトリクス

最後にRegion毎のメトリクスを紹介します。

これまでは、Chart TypeがLineの折れ線グラフばかりでしたが、Region毎のメトリクスを見るのには「Heatmap」が便利です。

例えば、Region毎にIncrementのオペレーション数がどれくらい来ているのかを見たいとします。

項目
tsquery select last(increment_rate)
Chart Type Heatmap
Facets All Combined

このように指定すると、以下のようなチャートが表示されます。

heatmap.png

この1つ1つの四角がRegionを表しています。色の濃い四角がIncrementのオペレーション数がより来ているRegionとなります。四角の上にカーソルを持っていくことでRegionの情報が表示され、クリックすると更に詳細な情報が表示されます。

このように、Heatmapを使うことでRegion間の偏りやホットリージョンなどを見つけることができます。

まとめ

今回は、HBaseを運用する上で普段見ているチャートのtsqueryの一部を紹介しました。

tsqueryの補足として、今回紹介した例ではwhere句を使っていませんでしたが、where句を用いることにより対象ホストを絞ったりすることなどができます。

Cloudera Managerを使う前はgangliaを使っていたのですが、クラスタの台数が増えてくると重くなったり、Viewの追加がめんどくさかったりするので(慣れの問題かもしれませんが)、Cloudera Managerのtsqueryはかなり便利に感じています。

ご興味のある方は一度使ってみてはいかがでしょうか。

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?