hadoop - hbase no puede encontrar una tabla existente
opentsdb (10)
Basta con eliminar la tabla especificada de la ruta del guardián del zoológico. Por ejemplo, si zookeeper.znode.parent está configurado para blob en hbase-site.xml, debe iniciar zkCli.sh
en el shell del servidor zookeeper y eliminar ese directorio con el comando rmr /blob/table/tsdb
.
Configuré un clúster hbase para almacenar datos de opentsdb. Recientemente, debido al reinicio de algunos de los nodos, hbase perdió la tabla "tsdb". Todavía puedo hacerlo en la página del nodo maestro de hbase, pero cuando hago clic en ella, me da una excepción 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)
......
Ingresé a hbase shell, intentando localizar la tabla ''tsdb'', pero recibí un mensaje similar.
hbase(main):018:0> scan ''tsdb''
ROW COLUMN+CELL
ERROR: Unknown table tsdb!
Sin embargo, cuando intenté volver a crear esta tabla, hbase shell me dijo que la tabla ya existe ...
hbase(main):013:0> create ''tsdb'', {NAME => ''t'', VERSIONS => 1, BLOOMFILTER=>''ROW''}
ERROR: Table already exists: tsdb!
Y también puedo listar la tabla en hbase shell
hbase(main):001:0> list
TABLE
tsdb
tsdb-uid
2 row(s) in 0.6730 seconds
Echando un vistazo al registro, encontré esto que debería ser la causa de mi problema
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)
Dice que no se puede encontrar la fila de tsbb en .META., Pero de hecho hay filas de tsdb en .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
Aquí está el resultado después de ejecutar "hbck" en el clúster
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
he corrido
bin/hbase hbck -fix
que lamentablemente no resuelve mi problema
¿Podría alguien ayudarme en esto que
- ¿Es posible recuperar esta tabla "tsdb"?
- Si no se puede hacer 1, ¿es una forma sugerida de eliminar con gracia ''tsdb'' y crear uno nuevo?
- Me agradecería mucho que alguien me hiciera saber cuál es la forma más sugerida de reiniciar un nodo. Actualmente, estoy dejando mi nodo maestro siempre arriba. Para otros nodos, ejecuto este comando inmediatamente después de su reinicio.
mando:
# 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
¡Muchas gracias!
Más instrucciones para borrar las tablas:
~/hbase-0.94.12/bin/hbase shell
> truncate ''tsdb''
> truncate ''tsdb-meta''
> truncate ''tsdb-uid''
> truncate ''tsdb-tree''
> exit
También tuve que reiniciar el demonio tsd.
Me enfrento a estos problemas en mi lugar de trabajo. Por lo general, elimino los znodes y ellos eliminan la tabla correspondiente o reinician hbase tanto HMaster como Hregionserver para obtener el estado de hbck OK.
No estoy muy seguro de por qué no puede escanearlo. Sin embargo, para recrear la tabla, puedes intentar esto:
1) Borre manualmente todas las entradas en la tabla .META para esta tabla, y
2) Eliminar el directorio correspondiente a esta tabla de HDFS
Intenta crear la tabla de nuevo después de eso.
Para expandir la respuesta de @Devin Bayer, ejecute:
delete /hbase/table/<name_of_zombie_table>
si encuentras alguna mesa zombie mantenida por el guardián del zoológico. Para obtener más ayuda sobre este tema, debes buscar en Google ''Tablas de zombies HBase''.
Recibo un mensaje de error similar cuando intento una conexión HBase desde un cliente Java en una máquina que no tiene el privilegio de TCP para acceder a las máquinas HBase. La tabla existe de hecho cuando hago shell hbase en la máquina HBase.
¿Opentsdb tiene todos los privilegios / configuración de puerto para acceder a la máquina HBase?
Si está utilizando cdh4.3, la ruta en zookeeper debería ser / hbase / table94 /
Un poco tarde, tal vez sea útil para el buscador.
- Ejecute el shell de ZooKeeper
hbase zkcli
- En la shell ejecuta
ls /hbase/table
- Ejecute
rmr /hbase/table/TABLE_NAME
- Reiniciar Hbase
intenta arreglar meta
- hbase hbck
- hbase hbck -fixMeta
- hbase hbck -fixAssignments
- hbase hbck -fixReferenceFiles
después y vuelve a intentarlo
hbase-clean.sh --cleanZk
Funciona bien, lo suficientemente simple.