Download - HBaseサポート最前線 #hbase_ca
![Page 1: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/1.jpg)
HBaseサポート最前線HBase徹底入門刊行記念セミナー
Daisuke Kobayashi | Customer Operations Engineer
![Page 2: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/2.jpg)
2© 2014 Cloudera, Inc. All rights reserved.
自己紹介
• 小林大輔
• 2012年入社
• カスタマーオペレーションズエンジニア• いわゆるカスタマーサポート
• 日本国内のすべてのお客様、海外のお客様(24x7)のトラブルシューティングのお手伝い
• 担当製品: HDFS, HBase, Cloudera Manager, Security, Solr etc.
• email: [email protected]
• twitter: d1ce_
![Page 3: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/3.jpg)
3© 2014 Cloudera, Inc. All rights reserved.
今日話すこと
• ClouderaサポートとHBase
• クラスタ構築時の注意点
• HBaseトラブルシューティング例
(特に断りがない限り、CDH5.2.1をベースに話します)
![Page 4: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/4.jpg)
4© 2014 Cloudera and/or its affiliates. All rights reserved.
ClouderaサポートとHBase
![Page 5: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/5.jpg)
5© 2014 Cloudera, Inc. All rights reserved.
2010年からHBaseの製品サポートを開始。トラブルシューティングから機能改善まで多くの対応を行ってきた
HBaseはスケールアウトする。お客様のビジネスの発展により、総サポートノード数も増加中
サポートを購入したお客様の半数以上が利用。国内でも金融、製造業、ゲーム業界のお客様をサポート
HBaseサポートは5年目 総サポートノード数 HBaseの使用率
5年 20000ノード
60%
ClouderaサポートとHBase
![Page 6: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/6.jpg)
6© 2014 Cloudera, Inc. All rights reserved.
CSI
全文検索システム
スタックトレース検索システム
ClouderaサポートとHBase
• Clouderaでは社内サポートシステムにHBaseを採用
参考: https://blog.cloudera.com/blog/2012/12/secrets-of-cloudera-support-the-champagne-strategy/
![Page 7: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/7.jpg)
7© 2014 Cloudera, Inc. All rights reserved.
CSI
全文検索システム
スタックトレース検索システム
ClouderaサポートとHBase
• サポートエンジニアはまずCSIからクラスタの全体像を把握する
![Page 8: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/8.jpg)
8© 2014 Cloudera, Inc. All rights reserved.
CSI
全文検索システム
スタックトレース検索システム
ClouderaサポートとHBase
• 過去事例は調査における貴重な資源
参考: http://blog.cloudera.com/blog/2013/09/secrets-of-cloudera-support-impala-and-search-make-the-customer-experience-even-better/
![Page 9: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/9.jpg)
9© 2014 Cloudera, Inc. All rights reserved.
CSI
全文検索システム
スタックトレース検索システム
ClouderaサポートとHBase
• 類似のスタックトレースを検索できる仕組みもある
参考: http://blog.cloudera.com/blog/2014/02/secrets-of-cloudera-support-inside-our-own-enterprise-data-hub/
![Page 10: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/10.jpg)
10© 2014 Cloudera and/or its affiliates. All rights reserved.
クラスタ構築時の注意点
![Page 11: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/11.jpg)
11© 2014 Cloudera, Inc. All rights reserved.
クラスタ構築時の注意点
• THP(Transparent Huge Page)は無効にする• 有効になっていると深刻なパフォーマンス劣化を招きます [1]
• リージョン数の見積もり、モニタリングは慎重に• リージョンが多すぎるとMTTR (Mean Time to Recovery: 平均修復時間)の増加、パフォーマンス劣化につながります
• HBase徹底入門を読みましょう• 2015/01時点で最新の情報が網羅されている
• 実際の構築経験をベースに執筆されている
[1] http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_admin_performance.htmlを確認
![Page 12: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/12.jpg)
12© 2014 Cloudera, Inc. All rights reserved.
適切なリージョン数の見積もり
リージョンサーバヒープサイズ 10GB
フラッシュサイズ (hbase.hregion.memstore.flush.size) 128MB
Memstoreサイズ (hbase.regionserver.global.memstore.upperLimit) 0.4 4GB
Memstoreサイズ (4GB) / フラッシュサイズ (128MB)
• Memstoreサイズと書き込み量から見積もる
![Page 13: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/13.jpg)
13© 2014 Cloudera, Inc. All rights reserved.
適切なリージョン数の見積もり
リージョンサーバヒープサイズ 10GB
フラッシュサイズ (hbase.hregion.memstore.flush.size) 128MB
Memstoreサイズ (hbase.regionserver.global.memstore.upperLimit) 0.4 4GB
Memstoreサイズ (4GB) / フラッシュサイズ (128MB)
= サーバあたりのリージョン数 (32)
• Memstoreサイズと書き込み量から見積もる
![Page 14: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/14.jpg)
14© 2014 Cloudera, Inc. All rights reserved.
適切なリージョン数の見積もり
((全データ量 * 1024) / リージョンサイズ (10GB)) / リージョンサーバ数 (100台)
全データ量 50TB
リージョンサイズ (hbase.hregion.max.filesize) 10GB
リージョンサーバ数 100
• 全データ量とリージョンサーバ数から見積もる
![Page 15: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/15.jpg)
15© 2014 Cloudera, Inc. All rights reserved.
適切なリージョン数の見積もり
((全データ量 * 1024) / リージョンサイズ (10GB)) / リージョンサーバ数 (100台)
= サーバあたりのリージョン数 (102)
全データ量 50TB
リージョンサイズ (hbase.hregion.max.filesize) 10GB
リージョンサーバ数 100
• 全データ量とリージョンサーバ数から見積もる
![Page 16: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/16.jpg)
16© 2014 Cloudera, Inc. All rights reserved.
リージョンスプリットポリシー
• ConstantSizeRegionSplitPolicy
• CDH4.1 (0.92) までのスプリットポリシー
• 一定のサイズに達したリージョンを分割
• IncreasingToUpperBoundRegionSplitPolicy
• CDH4.2 (0.94) 以降でデフォルトのスプリットポリシー
• 以下の条件を比較し、小さい方を上限として採用1. リージョン数 (同一サーバ上、同一テーブル内) ^ 3 ([2]) * フラッシュサイズ * 2
2. hbase.hregion.max.filesizeの設定値
• リージョンをクラスタ全体へ分散し、パフォーマンスの向上を図ることが目的
• ローリング再起動 (デコミッション)時にリージョン数が増加する場合あり [3]
[2] CDH5.0以前、5.1以降で算出式が変更されているので注意。詳しくはHBASE-10501[3] 一時的にリージョン数が減ることが原因。詳しくはHBASE-12451
![Page 17: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/17.jpg)
17© 2014 Cloudera, Inc. All rights reserved.
リージョンスプリットポリシー
• ConstantSizeRegionSplitPolicy
• CDH4.1 (0.92) までのスプリットポリシー
• 一定のサイズに達したリージョンを分割
• IncreasingToUpperBoundRegionSplitPolicy
• CDH4.2 (0.94) 以降でデフォルトのスプリットポリシー
• 以下の条件を比較し、小さい方を上限として採用1. リージョン数 (同一サーバ上、同一テーブル内) ^ 3 ([2]) * フラッシュサイズ * 2
2. hbase.hregion.max.filesizeの設定値
• リージョンをクラスタ全体へ分散し、パフォーマンスの向上を図ることが目的
• ローリング再起動 (デコミッション)時にリージョン数が増加する場合あり [3]
[2] CDH5.0以前、5.1以降で算出式が変更されているので注意。詳しくはHBASE-10501[3] 一時的にリージョン数が減ることが原因。詳しくはHBASE-12451
![Page 18: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/18.jpg)
18© 2014 Cloudera, Inc. All rights reserved.
リージョンスプリットポリシー
• ConstantSizeRegionSplitPolicy
• CDH4.1 (0.92) までのスプリットポリシー
• 一定のサイズに達したリージョンを分割
• IncreasingToUpperBoundRegionSplitPolicy
• CDH4.2 (0.94) 以降でデフォルトのスプリットポリシー
• 以下の条件を比較し、小さい方を上限として採用1. リージョン数 (同一サーバ上、同一テーブル内) ^ 3 ([2]) * フラッシュサイズ * 2
2. hbase.hregion.max.filesizeの設定値
• リージョンをクラスタ全体へ分散し、パフォーマンスの向上を図ることが目的
• ローリング再起動 (デコミッション)時にリージョン数が増加する場合あり [3]
[2] CDH5.0以前、5.1以降で算出式が変更されているので注意。詳しくはHBASE-10501[3] 一時的にリージョン数が減ることが原因。詳しくはHBASE-12451
![Page 19: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/19.jpg)
19© 2014 Cloudera and/or its affiliates. All rights reserved.
HBaseクラスタのトラブルシューティング
![Page 20: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/20.jpg)
20© 2014 Cloudera, Inc. All rights reserved.
トラブルシューティング
• HBaseクラスタにおけるトラブルの種類1. リージョン不整合処理中に突然サーバの電源が落ち、メタ情報に食い違いが生じたなど
2. 高負荷時のGC特に書き込み過多の場合はGCチューニングが必要となる
3. ホットスポット
![Page 21: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/21.jpg)
21© 2014 Cloudera, Inc. All rights reserved.
トラブルシューティング
• HBaseクラスタにおけるトラブルの種類1. リージョン不整合処理中に突然サーバの電源が落ち、メタ情報に食い違いが生じたなど
2. 高負荷時のGC特に書き込み過多の場合はGCチューニングが必要となる
3. ホットスポット
![Page 22: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/22.jpg)
22© 2014 Cloudera, Inc. All rights reserved.
トラブルシューティング(1)
• リージョン不整合の検知
• hbckユーティリティ [1]• hbck -details > /tmp/hbase-`date`.txt
• 主に以下の検査を行う1. Region Consistency (一貫性)
• META、HDFS内の.regioninfo、実際のリージョンアサイン状況がすべて合致しているか
2. Integrity (整合性)
• 複数のリージョンでキーの範囲が重複していないか
• キーの順序が後退していないか
• リージョン間に穴が空いていないか
• 最後に表示される不整合件数が0であればOK0 inconsistencies detected
[1] 詳細は http://hbase.apache.org/book.html#hbck.in.depth
![Page 23: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/23.jpg)
23© 2014 Cloudera, Inc. All rights reserved.
トラブルシューティング(1)
• まずはRegion Consistencyの確認、修復を行う
• 不整合の例1. Region X, key=Y, not on HDFS or in hbase:meta but deployed on Z
キーYで始まるリージョンXがHDFS/META上に存在しないにも関わらずリージョンサーバZにアサインされている
2. Region X on HDFS, but not listed in hbase:meta or deployed on any
region server
リージョンXはHDFSに存在するが、METAになくどのリージョンサーバにもアサインされていない
3. Region X should not be deployed according to META, but is deployed
on Z
METAの情報によるとリージョンXはアサインされるべきではないが、リージョンサーバZにデプロイされている
![Page 24: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/24.jpg)
24© 2014 Cloudera, Inc. All rights reserved.
トラブルシューティング(1)
• 修復コマンド• hbck –fixAssignments -fixMeta
• 実行前に直前の状況をファイルに出力しておくこと
• 実行後は再度 hbck -details を実行してアサインの不整合が修復されているか確認する
注意: 0.90時代の -fix オプションは -fixAssignmentsに置き換えられました。後方互換性のためオプションとしては残っていますが、後者を利用すること。
![Page 25: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/25.jpg)
25© 2014 Cloudera, Inc. All rights reserved.
トラブルシューティング(1)
• Integrityの確認、修復
• 不整合の例
ERROR ... Multiple regions have the same startkey
複数のリージョンが同じ開始キーを持っている
• 修復コマンド• hbase hbck -repairHoles
注意: hbckには他にもオプションがありますが、HDFSの内容を操作するオプションも含まれます。動作を把握しない状況で使用するのは危険です
![Page 26: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/26.jpg)
26© 2014 Cloudera, Inc. All rights reserved.
トラブルシューティング(2)
• Garbage Collection
• リージョンサーバは高負荷時にGCの影響を受けやすい
• GCによる影響を疑うときのキーワード: slept
• 詳細発生時刻付近に以下のメッセージが出力されていないか確認する1. We slept 67160ms instead of 3000ms, this is likely due to a long garbage collecting pause
and it's usually bad
2. Detected pause in JVM or host machine (eg GC): pause of approximately 62182msGC pool 'ParNew' had collection(s): count=3 time=69msGC pool 'ConcurrentMarkSweep' had collection(s): count=2 time=62425ms
• old世代のGCに60秒以上かかっている
• GCログから詳細を確認する
![Page 27: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/27.jpg)
27© 2014 Cloudera, Inc. All rights reserved.
トラブルシューティング(2)
• 下記オプションを追加することでより詳細なログを出力-XX:+PrintPromotionFailure (promotion failedの詳細出力)-XX:PrintFLSStatistics=1 (連続領域の最大サイズなど詳細を出力)-XX:+PrintTenuringDistribution (new領域のオブジェクトの遷移を出力)
• 典型的なFull GC発生のシナリオ• promotion failed
old領域に十分な連続領域が確保できず、new領域からのオブジェクトの移動に失敗した(断片化が原因)
• concurrent mode failureold世代の回収が間に合わず、空き領域が不足していると判断された
参考資料: http://shop.oreilly.com/product/0636920028499.dohttp://blog.cloudera.com/blog/2011/02/avoiding-full-gcs-in-hbase-with-memstore-local-allocation-buffers-part-1/
![Page 28: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/28.jpg)
28© 2014 Cloudera, Inc. All rights reserved.
promotion failed
new generation
old generation
![Page 29: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/29.jpg)
29© 2014 Cloudera, Inc. All rights reserved.
promotion failed
new generation
old generation
new世代のGC (Stop-the-World)
![Page 30: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/30.jpg)
30© 2014 Cloudera, Inc. All rights reserved.
promotion failed
new generation
old generation
new世代のGC後
![Page 31: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/31.jpg)
31© 2014 Cloudera, Inc. All rights reserved.
promotion failed
new generation
old generation
new世代のGC (Stop-the-World)、old世代のGC (アプリケーションと並行)を繰り返す
![Page 32: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/32.jpg)
32© 2014 Cloudera, Inc. All rights reserved.
promotion failed
new generation
old generation
new世代のGC (Stop-the-World)、old世代のGC (アプリケーションと並行)を繰り返す
![Page 33: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/33.jpg)
33© 2014 Cloudera, Inc. All rights reserved.
promotion failed
書き込み負荷が高まり、Memstoreのフラッシュが多発
![Page 34: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/34.jpg)
34© 2014 Cloudera, Inc. All rights reserved.
promotion failed
オブジェクトの移動 (promotion) に失敗 (failed)
![Page 35: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/35.jpg)
35© 2014 Cloudera, Inc. All rights reserved.
promotion failed
• CMSはオブジェクトのマージ(コンパクション)
を行わないため、断片化が発生する• new世代からのオブジェクトを配置できる連続領域がなくなる
• 全アプリケーションスレッドを止めFull GCが発生する
![Page 36: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/36.jpg)
36© 2014 Cloudera, Inc. All rights reserved.
promotion failed対策
• グラフ化• x軸: 時刻
• y軸: GB
• 赤: 空き領域(free space)
• 青: 最大連続領域(max chunk)
• old世代の空き領域は6GB程度確保• 連続領域(max chunk)は1GB強で推移
![Page 37: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/37.jpg)
37© 2014 Cloudera, Inc. All rights reserved.
promotion failed対策
• グラフ化• x軸: 時刻
• y軸: GB
• 赤: 空き領域(free space)
• 青: 最大連続領域(max chunk)
• max chunkが急減したタイミングでpromotion
failedが発生し、リージョンサーバが停止
![Page 38: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/38.jpg)
38© 2014 Cloudera, Inc. All rights reserved.
promotion failed対策
1. GCログからmax chunkサイズの推移状況を確認
2. 障害発生時に残っていたchunk分では足りなかった• 今回のケースでは1GBほど
3. ヒープサイズを1GB-2GB増やし、再度経過観察を行う
![Page 39: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/39.jpg)
39© 2014 Cloudera, Inc. All rights reserved.
Cloudera Managerのチャート機能
![Page 40: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/40.jpg)
40© 2014 Cloudera, Inc. All rights reserved.
まとめ
![Page 41: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/41.jpg)
41© 2014 Cloudera, Inc. All rights reserved.
まとめ祝!
![Page 42: HBaseサポート最前線 #hbase_ca](https://reader031.vdocuments.site/reader031/viewer/2022013108/55a93a9e1a28ab34648b458b/html5/thumbnails/42.jpg)
42© 2014 Cloudera, Inc. All rights reserved.
Thank you