14

障害のあるテーブルの修復に少し行き詰まっています(Hbase 0.92.1-cdh4.0.0、Hadoop 2.0.0-cdh4.0.0)

終了しない移行中の領域があります。

Region    State
bf2025f4bc154914b5942af4e72ea063 counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063. state=OFFLINE, ts=Tue Jun 12 11:43:53 CEST 2012 (0s ago), server=null

実行するsudo -u hbase hbase hbck -repairと、次のようになります。

Number of empty REGIONINFO_QUALIFIER rows in .META.: 0
ERROR: Region { meta => counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063., hdfs => hdfs://hbase001:8020/hbase/counter_traces/bf2025f4bc154914b5942af4e72ea063, deployed =>  } not deployed on any region server.
Trying to fix unassigned region...
12/06/12 11:44:40 INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned: {NAME => 'counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063.', STARTKEY => '1329773878.35_766a0b4df75e4381a686fbc07db9e333', ENDKEY => '1329793347.58_163865765c0a11e184ab003048f0e77e', ENCODED => bf2025f4bc154914b5942af4e72ea063,}

そしてそれはただループします。

私がしない場合-repair、私はこれを取得します:

Number of empty REGIONINFO_QUALIFIER rows in .META.: 0
ERROR: Region { meta => counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063., hdfs => hdfs://hbase001:8020/hbase/counter_traces/bf2025f4bc154914b5942af4e72ea063, deployed =>  } not deployed on any region server.
ERROR: Region { meta => counter_traces,1329816776.95_95b5561f3c1e496598421359a19ac665,1339425297099.ee1fd808d954c9adc9ed95ec2f29d119., hdfs => hdfs://hbase001:8020/hbase/counter_traces/ee1fd808d954c9adc9ed95ec2f29d119, deployed =>  } not deployed on any region server.
12/06/12 11:45:59 DEBUG util.HBaseFsck: There are 134 region info entries
ERROR: There is a hole in the region chain between 1329773878.35_766a0b4df75e4381a686fbc07db9e333 and 1329793347.58_163865765c0a11e184ab003048f0e77e.  You need to create a new .regioninfo and region dir in hdfs to plug the hole.
ERROR: There is a hole in the region chain between 1329816776.95_95b5561f3c1e496598421359a19ac665 and 1329847231.75_b3c50776778b43e088dd7ed865e11331.  You need to create a new .regioninfo and region dir in hdfs to plug the hole.
ERROR: Found inconsistency in table counter_traces

私は-repair前に数回走ったことがあります、そしてそれは助けになりました。しかし、今回はもうありません。

わかりました。これは、これを修正するために手動で介入することを示しています。誰かがこれを行う方法について正しい方向に私を向けることができますか?レシピ、ウェブページ、例、何でも役に立ちます。

ありがとう、マリオ

4

7 に答える 7

19

マリオ、

したがって、リージョンが移行でスタックする理由の1つは、リージョンがリージョンサーバー間で移動されるときに、ソースリージョンサーバーから割り当てられていないが、別のリージョンサーバーに割り当てられていないためです。私にとって常に機能する修正の1つは、hbaseシェルから強制的にASSIGNすることです:-

assign regionName
于 2012-07-03T17:34:18.633 に答える
5

リージョンを強制的に割り当てようとしましたが、うまくいきませんでした。私はフォローしてみましたが、うまくいきました:

手順:

  • hbaseシェルからテーブルを無効にする
  • 次のコマンドを使用してhbckを実行し、問題を修正します

    sudo -u hbase hbase hbck -repair

  • hbaseシェルからテーブルを有効にする

于 2017-02-23T08:08:58.767 に答える
1

HBaseのバージョンが十分に新しい場合は、-repairだけでなくhbck-repairHolesを試すこともできます。それは最近の「穴を修正する」問題で私のためにトリックをしました。

于 2014-04-24T07:56:19.927 に答える
1

まず、hdfsにその特定のリージョンのファイルがあるかどうかを確認する必要があります。

ある場合は、修正されるまでhbck-fixHdfsHoles-fixMetaのみを使用する必要があります。(2、3回試行する場合があります)。

移行中のリージョンにそのようなファイルがない場合(/ hbase / data ///の下にある必要があります)、HBaseは、そのディレクトリにそのリージョンの有効なHFileがあるはずであると見なし、それを修正することはできません。通常の修復コマンド。

ここで最新の応答の1つにあることを実行し、hdfsで有効なHFileを作成する必要があります。

http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/31308

于 2016-05-21T18:18:07.857 に答える
1

私は同じ問題を抱えていました

  • Ambariを介してすべてのサービスを開始している間、HDFSはセーフモードに移行し、長時間戻ってきませんでした。
  • HFDSが長時間セーフモードであったため、他のサービスは開始されませんでした。セーフモードからHDFSを手動で削除し、サービスを開始しようとしました。これにより、hbaseに影響を与えるいくつかのHDFSファイルが破損したようです。
  • 既存のテーブルをスキャンすると、「不明なテーブルエラー」が返されました
  • 新しい名前空間を作成すると、以下のエラーが返されます。

create_namespace'tst1'エラー:java.io.IOException:テーブル名前空間マネージャーが完全に初期化されていません。後で再試行してください

「hbasehbck-repair」

「エラー:との間の領域チェーンに穴があります。穴を塞ぐには、hdfsに新しい.regioninfoと領域dirを作成する必要があります」が返されました。

「hbasehbck-repairHoles」を実行すると、問題が修正されました。以前に保存したデータもスキャンできました。

注:-hbasehbckコマンドはhbaseユーザーから実行する必要があります

于 2019-02-08T10:41:41.970 に答える
0

私の場合、別のクラスターからコピーされたリージョンデータの所有者を変更するのを忘れています。

それから私はやろうとしますhbase hbck -repairINFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned 、エラーが表示されますUnable to complete check or repair the region, failed to move out of transition within timeout 120000ms

hbase:metaすでに地域情報があります。

テーブルをスキャンしている間、このようなエラーが発生します

ERROR: No server address listed in hbase:meta for region X

次に試してみhbase hbck -fixAssignmentsますが、それでも以前のように失敗しました。

次に、テーブル領域データを確認し、このテーブル自体とグループのみが

drwxr-xr-x   - hdfs  hbase

しかし、このような他の

drwxr-xr-x - hbase hbase

そのため、自分自身とグループを他の人として変更した後、問題は解決しました。これで、テーブルを正常にスキャンできます。

于 2017-08-10T02:32:57.523 に答える
0

私も同じ問題を抱えていました。1つの地域が立ち往生しましたRegion still in transition, waiting for it to become assigned:-repairすべてのオプションですべてのリージョンが割り当てられている必要があるため、どのオプションも機能しませんでした。

hdfsからリージョンを削除する必要がありました。 hdfs$ hdfs dfs -rm -r /hbase/data/default/<table>/<region>

リージョンを削除した後、すべて-repairのオプションが機能しましたが、zookeeperキャッシュのため、リージョンはまだ移行中であると報告されました。

FAILED_OPEN状態で打たれたHBASEのリージョンを取得する方法として?遷移キャッシュをzookeeperから削除し、HBASEマスターを再起動したところ、すべて問題ありませんでした

于 2019-08-26T13:24:49.383 に答える