[HADOOP] hbase는 기존 테이블을 찾을 수 없습니다.
HADOOPhbase는 기존 테이블을 찾을 수 없습니다.
내가 opbasedb에서 데이터를 저장할 hbase 클러스터를 설정합니다. 최근에 일부 노드의 재부팅으로 인해 hbase이 "tsdb"테이블을 손실했습니다. 난 여전히 hbase의 마스터 노드 페이지에서 그것을 할 수 있지만 그것을 클릭하면 나에게 tableNotFoundException을 준다.
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)
......
hbase 쉘에 입력하여 'tsdb'테이블을 찾으려고 시도했지만 비슷한 메시지가 나타납니다.
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의 행을 찾을 수 없다고 말합니다. 실제로 .META에는 tsdb 행이 있습니다.
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
다음은 클러스터에서 "hbck"을 실행 한 결과입니다.
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
나는 달렸다.
bin/hbase hbck -fix
불행히도 내 문제를 해결하지 못한다.
누군가 나를 도와 줄 수 있니?
명령:
# 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
많은 감사!
해결법
-
==============================
1.왜 스캔 할 수 없는지 잘 모르겠습니다. 그러나 테이블을 다시 작성하려면 다음을 시도하십시오.
왜 스캔 할 수 없는지 잘 모르겠습니다. 그러나 테이블을 다시 작성하려면 다음을 시도하십시오.
1)이 테이블에 대한 .META 테이블의 모든 항목을 수동으로 삭제하고
2)이 테이블에 해당하는 디렉토리를 HDFS에서 삭제합니다.
그 후에 테이블을 다시 만들어보십시오.
-
==============================
2.조금 늦었습니다. 아마도 검색 자에게 도움이 될 것입니다.
조금 늦었습니다. 아마도 검색 자에게 도움이 될 것입니다.
-
==============================
3.cdh4.3을 사용하고 있다면 사육사의 경로는 / hbase / table94 /
cdh4.3을 사용하고 있다면 사육사의 경로는 / hbase / table94 /
-
==============================
4.@Devin Bayer의 답변을 확장하려면 다음을 실행하십시오.
@Devin Bayer의 답변을 확장하려면 다음을 실행하십시오.
delete /hbase/table/<name_of_zombie_table>
사육사가 관리하는 좀비 테이블을 발견하면 이 문제에 대한 도움이 필요하면 google 'HBase zombie tables'를 참조하십시오.
-
==============================
5.메타를 고치려고
메타를 고치려고
후에 다시 시도하십시오.
-
==============================
6.표 삭제에 대한 추가 지침 :
표 삭제에 대한 추가 지침 :
~/hbase-0.94.12/bin/hbase shell > truncate 'tsdb' > truncate 'tsdb-meta' > truncate 'tsdb-uid' > truncate 'tsdb-tree' > exit
또한 tsd 데몬을 다시 시작해야했습니다.
-
==============================
7.HBase 시스템에 액세스 할 수있는 TCP 권한이없는 시스템에서 Java 클라이언트의 HBase 연결을 시도 할 때 유사한 오류 메시지가 나타납니다. 실제로 HBase 시스템 자체에서 hbase 쉘을 사용할 때 표가 실제로 존재합니다.
HBase 시스템에 액세스 할 수있는 TCP 권한이없는 시스템에서 Java 클라이언트의 HBase 연결을 시도 할 때 유사한 오류 메시지가 나타납니다. 실제로 HBase 시스템 자체에서 hbase 쉘을 사용할 때 표가 실제로 존재합니다.
opentsdb에 HBase 시스템에 액세스하기위한 모든 권한 / 포트 구성이 있습니까?
-
==============================
8.나는 직장에서 이러한 문제에 직면 해있다. 나는 일반적으로 z 노드를 삭제하고 해당 테이블을 제거하거나 HMbase와 Hregionserver를 모두 다시 시작하여 hbck 상태를 OK로 만듭니다.
나는 직장에서 이러한 문제에 직면 해있다. 나는 일반적으로 z 노드를 삭제하고 해당 테이블을 제거하거나 HMbase와 Hregionserver를 모두 다시 시작하여 hbck 상태를 OK로 만듭니다.
-
==============================
9.사육사 경로에서 지정된 테이블을 제거하면 충분합니다. 예를 들어 zookeeper.znode.parent가 hbase-site.xml에서 blob로 구성된 경우 zookeeper 서버 쉘에서 zkCli.sh를 시작하고 rmr / blob / table / tsdb 명령으로 해당 디렉토리를 제거해야합니다.
사육사 경로에서 지정된 테이블을 제거하면 충분합니다. 예를 들어 zookeeper.znode.parent가 hbase-site.xml에서 blob로 구성된 경우 zookeeper 서버 쉘에서 zkCli.sh를 시작하고 rmr / blob / table / tsdb 명령으로 해당 디렉토리를 제거해야합니다.
-
==============================
10.hbase-clean.sh --cleanZk
hbase-clean.sh --cleanZk
그것은 잘 작동하고, 충분히 간단합니다.
from https://stackoverflow.com/questions/10586246/hbase-cannot-find-an-existing-table by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop : "start-all.sh"를 입력 한 후 루트 암호가 필요합니다. (0) | 2019.06.07 |
---|---|
[HADOOP] Hadoop의 Sort Comparator와 Group Comparator의 차이점은 무엇입니까? (0) | 2019.06.07 |
[HADOOP] 하이브 테이블 추가 또는 삭제 열 변경 (0) | 2019.06.07 |
[HADOOP] Spark 플랫폼에 native-hadoop 라이브러리를로드 할 수 없습니다. (0) | 2019.06.07 |
[HADOOP] E0902 받기 : 예외 발생 : [사용자 : oozie는 oozie로 가장 할 수 없습니다] (0) | 2019.06.07 |