2012-05-14 14 views
15

私はopentsdbからのデータを格納するためのhbaseクラスタを設定しました。最近、いくつかのノードのリブートにより、hbaseはテーブル "tsdb"を失いました。私がすることができますまだそれのHBaseのマスターノードページで、私はそれをクリックしたときに、それは私にtableNotFoundExceptionを与えるhbaseは既存のテーブルを見つけることができません

org.apache.hadoop.hbase.TableNotFoundException: tsdb 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:952) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:818) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:782) 
    at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:249) 
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:213) 
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:171) 
...... 

は、私が「TSDB」テーブルを見つけるためにしようと、HBaseの殻に入ったが、同様のメッセージ

を得ました私はこのテーブルを再作成しようとしたが
hbase(main):018:0> scan 'tsdb' 
ROW               COLUMN+CELL 

ERROR: Unknown table tsdb! 

は、HBaseのシェルはテーブルが既に

hbase(main):013:0> create 'tsdb', {NAME => 't', VERSIONS => 1, BLOOMFILTER=>'ROW'} 

ERROR: Table already exists: tsdb! 

...存在し、私もHBaseのシェルでテーブルを一覧表示することができます私に言った

hbase(main):001:0> list 
TABLE 
tsdb 
tsdb-uid 
2 row(s) in 0.6730 seconds 

ログを見てみると、私は私の問題の原因であるべきこれを見つけた

2012-05-14 12:06:22,140 WARN org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation: Encountered problems when prefetch META table: 
org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in .META. for table: tsdb, row=tsdb,,99999999999999 
    at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:157) 
    at org.apache.hadoop.hbase.client.MetaScanner.access$000(MetaScanner.java:52) 
    at org.apache.hadoop.hbase.client.MetaScanner$1.connect(MetaScanner.java:130) 
    at org.apache.hadoop.hbase.client.MetaScanner$1.connect(MetaScanner.java:127) 

それはで.META。tsbbの行を見つけることができないと言いますが、TSDB行では確かにあります.META。ここで

hbase(main):002:0> scan '.META.' 
ROW               COLUMN+CELL 
tsdb,\x00\x00\x0FO\xA2\xF1\xD0\x00\x00\x01\x00\x00\x0E\x00\ column=info:regioninfo, timestamp=1336311752799, value={NAME => 'tsdb,\x00\x00\x0FO\xA2\xF1\xD0\x00\x00\x01\x00\x00\x0E\x00\x00\x02\x00\x00\x12\x00\x00\x03\x00\x00\x13\x00\x00\x 
x00\x02\x00\x00\x12\x00\x00\x03\x00\x00\x13\x00\x00\x05\x00 05\x00\x001,1336311752340.7cd0d2205d9ae5fcadf843972ec74ec5.', STARTKEY => '\x00\x00\x0FO\xA2\xF1\xD0\x00\x00\x01\x00\x00\x0E\x00\x00\x02\x00\x00\x12\x00\x00\x03\x00\x00\x13\x00\ 
\x001,1336311752340.7cd0d2205d9ae5fcadf843972ec74ec5.  x00\x05\x00\x001', ENDKEY => '\x00\x00\x10O\xA3\x8C\x80\x00\x00\x01\x00\x00\x0B\x00\x00\x02\x00\x00\x19\x00\x00\x03\x00\x00\x1A\x00\x00\x05\x00\x001', ENCODED => 7cd0d2205d9ae5f 
                  cadf843972ec74ec5,} 
tsdb,\x00\x00\x0FO\xA2\xF1\xD0\x00\x00\x01\x00\x00\x0E\x00\ column=info:server, timestamp=1337011527000, value=brycobapd01.usnycbt.amrs.bankofamerica.com:60020 
x00\x02\x00\x00\x12\x00\x00\x03\x00\x00\x13\x00\x00\x05\x00 
\x001,1336311752340.7cd0d2205d9ae5fcadf843972ec74ec5. 
tsdb,\x00\x00\x0FO\xA2\xF1\xD0\x00\x00\x01\x00\x00\x0E\x00\ column=info:serverstartcode, timestamp=1337011527000, value=1337011518948 
...... 

tsdb-uid,,1336081042372.a30d8074431c6a31c6a0a30e61fedefa. column=info:server, timestamp=1337011527458, value=bry200163111d.usnycbt.amrs.bankofamerica.com:60020 
tsdb-uid,,1336081042372.a30d8074431c6a31c6a0a30e61fedefa. column=info:serverstartcode, timestamp=1337011527458, value=1337011519807 
6 row(s) in 0.2950 seconds 

は、私は、クラスタ

ERROR: Region hdfs://slave-node-1:9000/hbase/tsdb/249438af5657bf1881a837c23997747e on HDFS, but not listed in META or deployed on any region server 
ERROR: Region hdfs://slave-node-1:9000/hbase/tsdb/4f8c65fb72910870690b94848879db1c on HDFS, but not listed in META or deployed on any region server 
ERROR: Region hdfs://slave-node-1:9000/hbase/tsdb/63276708b4ac9f11e241aca8b56e9def on HDFS, but not listed in META or deployed on any region server 
ERROR: Region hdfs://slave-node-1:9000/hbase/tsdb/e54ee4def67d7f3b6dba75a3430e0544 on HDFS, but not listed in META or deployed on any region server 
ERROR: (region tsdb,\x00\x00\x0FO\xA2\xF1\xD0\x00\x00\x01\x00\x00\x0E\x00\x00\x02\x00\x00\x12\x00\x00\x03\x00\x00\x13\x00\x00\x05\x00\x001,1336311752340.7cd0d2205d9ae5fcadf843972ec74ec5.) First region should start with an empty key. You need to create a new region and regioninfo in HDFS to plug the hole. 
ERROR: Found inconsistency in table tsdb 
Summary: 
    -ROOT- is okay. 
    Number of regions: 1 
    Deployed on: master-node,60020,1337011518948 
    .META. is okay. 
    Number of regions: 1 
    Deployed on: slave-node-2,60020,1337011519845 
Table tsdb is inconsistent. 
    Number of regions: 5 
    Deployed on: slave-node-2,60020,1337011519845 slave-node-1,60020,1337011519807 master-node,60020,1337011518948 
    tsdb-uid is okay. 
    Number of regions: 1 
    Deployed on: slave-node-1,60020,1337011519807 
5 inconsistencies detected. 
Status: INCONSISTENT 

の "hbck" を走った後、私は残念ながら

が誰かでした私の問題を解決していません

bin/hbase hbck -fix 

を実行した結果であり、これで私を助けてください

  1. このテーブル "tsdb"を回復することはできますか?
  2. 1を実行できない場合は、「tsdb」を正常に削除して新しいものを作成することをお勧めしますか?
  3. 誰かが私にノードを再起動する最も提案された方法を教えてもらえると大変感謝しますか?現在、私はマスターノードを常に立ち上げています。他のノードでは、再起動後すぐにこのコマンドを実行します。

コマンド:

# start data node 
bin/hadoop-daemon.sh start datanode 
bin/hadoop-daemon.sh start jobtracker  
# start hbase 
bin/hbase-daemon.sh start zookeeper 
bin/hbase-daemon.sh start regionserver 

多くの感謝!

+0

もう一度試してHBaseの診断を実行します(HBaseのhbck)とそれが言うか見てみてください。また、リストを入力するとhbaseシェルで表示されますか? –

+0

@ ArnonRotem-Gal-Ozありがとうございました!編集した投稿に "list"と "hbck"の結果を掲載しました。 tsdbの矛盾をどのように取り除くことができるか教えてください。 – Sheng

+0

try 'hbase hbck -fix' –

答えて

2

なぜスキャンできないのかよく分かりません。

1)は、手動でこのテーブルの.METAテーブル内のすべてのエントリを削除し、

2) HDFS

からこのテーブルに対応するディレクトリを削除します。ただし、表を再作成するために、あなたはこれを試すことができます

その後、再度テーブルを作成してみてください。

+0

.META。で問題のある行を削除しようとしていますが、deleteallコマンドが機能しません。コマンドが "hbase(main):027:0> deleteall '.META'、 'tsdb、\ x00 \ x00 \ x0FO \ xA2 \ xF1 \ xD0 \ x00 \ x00 \ x01 \ x00 \ x00 \ x0 \ x00 \ x00 \ x02 \ x00 \ x00 \ x0 \ x00 \ x00 \ x13 \ x00 \ x00 \ x05 \ x00 \ x001,1336311752340.7cd0d2205d9ae5fcadf843972ec74ec5 ' – Sheng

+0

.META。から行を削除するためのJavaプログラムを作成しましたが、私の問題はまだ解消できません。 tの場合、 -ls/hbase/tables: の代わりに – Sheng

7
hbase zk_cli 

-ls /hbase/tables 

テーブルはまだZookeeperにありました。

テーブルを動物園(rmr)から削除しました。あなたがcdh4.3を使用している場合

+0

テーブルを削除してください。 ls/hbase/table – user3123372

2

その後、飼育係のパスは、テーブルを削除するには/ HBaseの/ table94/

0

詳しい説明をする必要があります:

~/hbase-0.94.12/bin/hbase shell 

> truncate 'tsdb' 
> truncate 'tsdb-meta' 
> truncate 'tsdb-uid' 
> truncate 'tsdb-tree' 
> exit 

私もTSDデーモンを再起動する必要がありました。

0

HBaseマシンにアクセスするためのTCP権限を持たないマシン上のJavaクライアントからHBase接続を試すと、同様のエラーメッセージが表示されます。 HBaseマシン自体でhbaseシェルを実行すると、テーブルが実際に存在します。

opasesdbには、HBaseマシンにアクセスするためのすべての特権/ポート設定がありますか?

0

私は職場でこれらの問題に直面しています。私は通常、zノードを削除し、対応するテーブルを削除するか、HMbaseとHregionserverの両方を再起動してhbckステータスをOKにします。

0

指定したテーブルを飼育係のパスから削除するだけで十分です。 zookeeper.znode.parentはHBaseの-site.xmlでブロブに設定されている場合たとえば、あなたはあなたの飼育係サーバシェルにzkCli.shを開始する必要がありますし、rmr /blob/table/tsdbコマンドでそのディレクトリを削除します。

0

hbase-clean.sh --cleanZk

十分に簡単です。

delete /hbase/table/<name_of_zombie_table> 

あなたは飼育係によって維持されているすべてのゾンビのテーブルを見つけた場合:、@Devinバイエルの答えに拡大実行するに

1

。この問題の詳細については、Googleの「HBaseゾンビテーブル」を参照してください。

5

少し遅れて、おそらくサーチャーに役立つかもしれません。

  1. メタ修正する
+1

HDP 2.6とKerberosを有効にするコマンドは、 'hbase zkcli -server ls/hbase-secure/table'および/または' hbase zkcli -server rmr/hbase-secure/table/ ' –

1

試しシェルの実行ではls /hbase/table

  • 実行rmr /hbase/table/TABLE_NAME
  • 再起動のHBaseをhbase zkcli
  • シェルのZooKeeperを実行します

    1. のHBase hbck
    2. HBaseのhbck -fixMeta
    3. HBaseのhbck -fixAssignments
    4. HBaseのhbck -fixReferenceFiles

    後と