障害のあるテーブルの修復に少し行き詰まっています(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
を数回実行したことがありますが、役に立ちました。しかし、今回はもうありません。
さて、これはこれを修正するために手動介入を行うことを述べています。誰かがこれを行う方法について正しい方向に私を向けることができますか?レシピ、ウェブページ、例、何でも役に立ちます。
ありがとう、マリオ
マリオ、
したがって、リージョンが移行でスタックする理由の1つは、リージョンサーバー間で移動されるときに、ソースリージョンサーバーから割り当てられていないが、別のリージョンサーバーに割り当てられていないためです。私にとって常に機能する修正の1つは、hbaseシェルから強制的に割り当てることです:-
assign regionName
地域を強制的に割り当てようとしましたが、うまくいきませんでした。私は以下を試しましたが、うまくいきました:
手順:
次のコマンドを使用してhbckを実行し、問題を修正します
Sudo -u hbase hbase hbck -repair
HbaseShellからテーブルを有効にする
HBaseのバージョンが十分に新しい場合は、-repairだけでなくhbck-repairHolesを試すこともできます。それは最近の「穴を修正する」問題で私のためにトリックをしました。
私は同じ問題を抱えていました
create_namespace'tst1 'エラー:Java.io.IOException:テーブル名前空間マネージャーが完全に初期化されていません。後で再試行してください
「hbasehbck-repair」
「エラー:との間のリージョンチェーンに穴があります。穴を塞ぐには、hdfsに新しい.regioninfoとリージョンディレクトリを作成する必要があります」が返されました。
「hbasehbck-repairHoles」を実行すると、問題が修正されました。以前に保存したデータもスキャンできました。
注:-hbase hbckコマンドはhbaseユーザーから実行する必要があります
まず、hdfsにその特定の領域のファイルがあるかどうかを確認する必要があります。
ある場合は、修正されるまでhbck -fixHdfsHoles-fixMetaのみを使用する必要があります。 (2、3回試す必要があるかもしれません)。
移行中の領域にそのようなファイルがない場合(/ hbase/data ///の下にある必要があります)、HBaseは、そのディレクトリにその領域に有効なHFileがあるはずであると見なし、それを修正することはできません。通常の修復コマンド。
ここで最新の応答の1つにあることを実行し、hdfsで有効なHFileを作成する必要があります。
http://comments.gmane.org/gmane.comp.Java.hadoop.hbase.user/31308
私の場合、別のクラスターからコピーされたリージョンデータの所有者を変更するのを忘れています。
次に、hbase hbck -repair
を実行しようとしましたが、INFO 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
そのため、自分自身とグループを他の人として変更した後、問題は解決しました。これで、テーブルを正常にスキャンできます。
私も同じ問題を抱えていました。 1つのリージョンがRegion still in transition, waiting for it to become assigned:
でスタックしました。すべてのオプションですべてのリージョンが割り当てられている必要があるため、-repair
オプションはいずれも機能しませんでした。
Hdfsからリージョンを削除する必要がありました。 hdfs$ hdfs dfs -rm -r /hbase/data/default/<table>/<region>
リージョンを削除した後、すべての-repair
オプションは機能しましたが、飼育係のキャッシュが原因で、リージョンはまだ移行中であると報告されました。
として FAILED_OPEN状態で打たれたHBASEの領域を取得する方法は? zookeeperから遷移キャッシュを削除し、HBASEマスターを再起動すると、すべて問題ありませんでした。