クラスターのリソース不足による 1 日。hbase リージョン サーバーの広範囲が負荷の爆発により停止し、翌日には一部のクエリでエラーが報告されました。
クラスター内のテーブルに対する一部のクエリではリージョンを見つけることができません。
クラスターの再起動とクラスターのローリング再起動を試しましたが、ローリング再起動プロセスによってリージョン サーバー上のリージョンが移動されたり、移動されたりすることが考えられました。修理できるか試してみましたが、決定的な修理はできませんでした。転出や転入によって地域そのものが変わるわけではないからです。ただ出入りするだけ
hbase hbck -details 'hbsxx_bsdb:taj_xxx_ktgg' を実行してステータスを確認してください
発見する
hbck エラーの不整合が検出されました
Web UIのHBCKレポートを見てみました。
2 つの穴と 12 のオーバーラップがあります
おそらくメタデータに問題があると思われます。
直してみる
まず、付属の hbck ツールをインストールします。このツールは表示のみで操作はできません。hbase2 は hbck コンポーネントを放棄しました。HBCK2 は HBase から削除され、別のプロジェクトになりました。このツールを使用したい場合は、独自の HBase バージョンを使用する必要があるため、ソース コードをコンパイルします。
GitHub アドレスは: https://github.com/apache/hbase-operator-tools.git
pom 内の hbase バージョンを実際の hbase2.x バージョンに置き換え、プロジェクトのルート ディレクトリでパッケージ化コマンドを実行します。
mvn clean install -DskipTests
をパッケージ化すると、複数の jar パッケージが存在するので、必要な hbck2 (hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.0.0-SNAPSHOT.jar) を取り出します。
cdh の場合は、公式 Web サイト https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/admin_hbase_hbck.html からダウンロードする必要があります。
埋め込む
hbase hbck -j /path/hbck2.jar addFsRegionsMissingInMeta hbxxxsdb:taj_n04xxxktgg
決断力は無駄だ
そして実行します
hbase hbck -j /hbase-hbck2-<version>.jar extraRegionsInMeta --fix hbxxxsdb:taj_n04xxxktgg
私に返された、不一致の領域はありません、このテーブルは良好です、また無効です
別のコマンドを試してください
hbase hbck -j hbase-hbck2-<version>.jar filesystem --fix hbxxxsdb:taj_n04xxxktgg
一瞬も終わらないのを見て、使えるかも知れないと思ったのですが、結局1時間以上も応答なしでハングアップしてしまいました。失敗
hbase hbck -j hbase-hbck2-<version>.jar extraRegionsInMeta --fix hbxxxsdb:taj_n04xxxktgg
それでも、「このテーブルは良好な不一致領域は無効です」というプロンプトが表示されます。
戻ってhbaseのUIを確認してください
前回の HBCK レポートを確認したところ、問題が報告されたリージョンが空であることが判明したため、このリージョンを他のリージョンとマージすることにしました。Web 上のホールは 1 つ減りましたが、コマンド ラインの hbck は変更されておらず、依然として競合領域があることを示すメッセージが表示されます。
online_merge によるホット マージ リージョン
hbase shell
merge_region '39erijidsfd8s098fen32j3i8d9','48jfidnxoskd023843257822j3i'
Region的hash值就是Region名称的最后那段在两个.之间的字符串部分
しかし、穴がなくなったので、get でもう一度テストすることにし、思い切って RowKey が正常に見つからないという空のリターンを返しました。もうエラーはありません。次に、開発者にテストしてもらいます。開発フィードバックは通常どおりに照会できます