36. 36? Cloudera, Inc. All rights reserved.
-fixHdfsOverlaps -fixMeta -fixAssignments
Region A と B が重複しているとする
1. と のクローズ
2. の作成
3. と のhfile を に移動
4. と のディレクトリを削除
5. hbase:meta から と のエントリを削除
6. と のリージョンディレクトリが復活(中?は空)
7. がオンラインにならない
8. が重複した状態となる
Region A
Region C
Region B
Region A Region B Region C
Region A Region B
Region A Region B
Region A Region B
Region C
Region A Region B Region C
37. 37? Cloudera, Inc. All rights reserved.
? と に実データがない ( .regioninfo のみ)
? に実 hfile が存在
1. と を HDFS ディレクトリごと強制退避
2. をベースにリージョン情報を強制更新することで修正
-fixEmptyMetaCells -fixMeta -fixAssignments <table name>
3. ログを?て問題が再発していないことを確認
対処
Region A Region B
Region C
Region A Region B
Region C
38. 38? Cloudera, Inc. All rights reserved.
? 材料
? Read Replica を使?している
? リージョン merge が発?している
? HBASE-18025
? Read Replica 使?時に、split/merge した古いリージョンの
情報がマスターに残り続け、実データを持たないリージョン
ディレクトリを再作成してしまう
原因
39. 39? Cloudera, Inc. All rights reserved.
? HBase レプリケーションが進まない
? ターゲットクラスタでレプリケーションが滞留
? ソース ? ターゲット間のラグが埋まらない
?かったこと②
40. 40? Cloudera, Inc. All rights reserved.
? ダイレクトバッファのメモリリーク
? RegionServer のログ、ヒープダンプ、メトリクスよりリークを確認
? 参考
? http://www.evanjones.ca/java-bytebuffer-leak.html
? https://bugs.openjdk.java.net/browse/JDK-8147468
? アプリケーションのバッドデザイン
? 1 GiB 近くの WAL を?成するような書き込みの設計
原因
java.io.IOException: com.google.protobuf.ServiceException: java.lang.OutOfMemoryError:
Direct buffer memory on XXX,60020,1518078103721
41. 41? Cloudera, Inc. All rights reserved.
? リークの対処
? -Djdk.nio.maxCachedBufferSize=262144
? レプリケーションラグ
1. ターゲットクラスタのテーブルを削除
2. ソースクラスタで HBase スナップショットを取得
3. ターゲットクラスタにクローン
? アプリケーション設計
? WAL の中?から問題となっているキーを指摘
? アプリケーション、スキーマの再設計を依頼
or
? お客様??でできない場合はコンサルティングサービスの提案(有償)
対処
44. 44? Cloudera, Inc. All rights reserved.
? -repair オプションは使わないこと
? 計 10 個のオプションが?動実?される
à それぞれが何をするものか理解しているか?
à 全てのオプションが必要なケースを?たことがない
? 重複しているリージョンを /hbase/data の外側に退避してしまう
à ?時的にデータロストの状態になる
à 再ロードするのは?変
hbck 実?時の注意
45. 45? Cloudera, Inc. All rights reserved.
? -fixHdfsHoles/-fixHdfsOverlaps 実?時のリージョンサイズ
? リージョン merge が?る
? merge 後のリージョンが hbase.hregion.filesize を越えると
リージョン split が?動的に?る
à hbck による修正と衝突すると新たな不整合を招く
hbck 実?時の注意