2012-06-13 8 views
7

は、私は(、Hadoopの2.0.0-cdh4.0.0のHBase 0.92.1-cdh4.0.0に)障害のあるテーブルを修復立ち往生ビットは修理HBaseのテーブル(遷移内の未割り当て領域)

は地域があるんです移行に完了しないこと:

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,} 

、それだけでループ:

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を実行すると、私はこれを取得します。私は数回前-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をしない場合は

、私はこれを取得します。しかし、今回はもう ではありません。

[OK]これは、この問題を修正するために手動で介入することを示しています。誰か これを行う方法について正しい方向に私を指摘できますか?レシピ、ウェブページ、例、 何かが役に立ちます。それはregionserversを横切って移動しているとき

おかげで、 マリオ

答えて

12

マリオ、

だから領域が移行に立ち往生理由の一つは、それが元のリージョンサーバーから割り当てられていないですが、あるされて、ため、他のリージョンサーバーに割り当てられることはありません。あなたのHBaseのバージョンが、またhbck -repairHolesだけではなく-repairを試みる場合があります十分に最近のものである場合

assign regionName 
+0

それは正しい方向に私を得た。ダイレクト・アサインは機能しませんでしたが、少なくとも私はリージョン・チェーンの穴を埋めるのに役立つコードを見つけました。 – Mario

+0

コードを共有できますか?私も同様の問題があり、それを修正したいと考えています。 –

+0

私は申し訳ありませんが、その時に投稿してください。私はもうそれがないと思う。 – Mario

0

- :いつも私の作品 一つの修正は強制的でHBaseのシェルからそれを割り当てることです。それは最近の「穴を修正する」問題の私のためのトリックでした。

1

まず、特定の地域のファイルがあなたのhdfsにあるかどうかを確認する必要があります。

ある場合は、修正するまで、hbck -fixHdfsHoles -fixMetaを単独で使用する必要があります。 (数回試行するかもしれません)。

移行中のファイルがない(/ hbase/data ///の下にある)場合、HBaseはそのディレクトリにそのリージョンの有効なHFileが存在する必要があり、通常の修復コマンドで修復します。

あなたがここに最新の応答のいずれかである何、あなたHDFSにするために有効なHFILEを作成する必要があります。

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

0

私は地域の強力な割り当てを実行しようとしましたが、それは動作しませんでした私のために。私は、次の試してみました、それが働いた:

ステップ:

  • 無効にテーブルのHBaseからは、次のコマンドを

    sudo -u hbase hbase hbck -repair

  • を使用してproblmesを修正するために

  • 実行hbckシェルのHBaseからテーブルを有効にしますシェル

0

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

その後、私はhbase hbck -repairをやろうけどINFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned は、エラーが、私はhbase:metaはすでに地域情報を持って見つけるUnable to complete check or repair the region, failed to move out of transition within timeout 120000ms

表示されます。

スキャンテーブル一方で、あなたはhbase hbck -fixAssignmentsを試し、それでも前のように失敗した後、この

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

のようなエラーが発生します。

は、それから私は、表領域のデータをチェックし、唯一このテーブル自身のグループを見つける

drwxr-xr-x - hdfs hbase 

が、だから、問題は次のように独自の変更とグループの後に解決されたこの

drwxr-xr-x - hbase hbase

のような他のですその他。 これで、テーブルを正常にスキャンします。

関連する問題