2015-12-03 23 views
8

Vorrei ottenere le stesse informazioni sulle regioni di una tabella visualizzate nell'interfaccia utente Web (ad esempio, nome della regione, server della regione, chiave di avvio/fine, località), ma tramite la shell di hbase.Come elencare le regioni in una tabella HBase attraverso la shell?

(l'interfaccia utente è traballante/lento, e inoltre voglio elaborare queste informazioni come parte di uno script.)

Dopo molto googling, non riesco a trovare il modo, e questo mi sorprende immensamente. la versione è 1.0.0.-cdh5.4.0

+0

Risulta che non è possibile (ancora). C'è un biglietto aperto https://issues.apache.org/jira/browse/HBASE-14925 per aggiungerlo. –

+0

FYI, una delle ragioni principali che volevo era che l'interfaccia utente non mostrasse sempre le regioni della tabella. Ho scoperto grazie alla fortuna che se si esegue un main_compact sul tavolo, in qualche modo questo aggiorna i metadati della tabella in un modo che fa sì che l'interfaccia utente mostri le regioni della tabella. Quindi almeno posso ottenere le informazioni ora. Ma sarebbe comunque super bello poter usare queste informazioni in uno script in un modo semplice che non usasse lo screen scraping! –

risposta

24

Per ottenere le informazioni sulla regione relative alla tabella, è necessario eseguire la scansione della tabella hbase:meta.

scan 'hbase:meta',{FILTER=>"PrefixFilter('table_name')"} 

Questo comando fornirà i dettagli di tutte le regioni. La chiave di riga avrà il nome della regione e ci saranno quattro qualificatori di colonna. Potrebbe essere necessario seguire due qualificatori di colonna:

info:regioninfo - Questo qualificatore contiene STARTKEY e ENDKEY.

info:server - Questo qualificatore contiene regione dettagli del server

+1

Ora c'è un comando ufficiale per questo, check out https://issues.apache.org/jira/browse/HBASE-14925 A partire dalla versione 1.4 – LearningToCode

1

Ecco una risposta dalla mailing list HBase:

stato 'dettagliata' avrebbe mostrato abbastanza informazioni esempio

t1,30,1449175546660.da5f3853f6e59d1ada0a8554f12885ab." 
    numberOfStores=1, numberOfStorefiles=0, 
    storefileUncompressedSizeMB=0, lastMajorCompactionTimestamp=0, 
    storefileSizeMB=0, memstoreSizeMB=0, storefileIndexSizeMB=0, 
    readRequestsCount=0, writeRequestsCount=0, rootIndexSizeKB=0, 
    totalStaticIndexSizeKB=0, totalStaticBloomSizeKB=0, totalCompactingKVs=0, 
    currentCompactedKVs=0, compactionProgressPct=NaN, completeSequenceId=-1, 
    dataLocality=0.0 

Tuttavia, questo ritorna informazioni da tutte i tavoli, ed è necessario analizzare le regioni del tavolo che ti interessa.

0

Utilizzare il comando "ufficiale" list_regions shell per elencare tutte le regioni. Si noti che questo strumento è disponibile solo a partire dalle versioni HBase 1.4 e successive.

Some examples are 
     Examples: 
     hbase> list_regions 'table_name' 
     hbase> list_regions 'table_name', 'server_name' 
     hbase> list_regions 'table_name', {SERVER_NAME => 'server_name', LOCALITY_THRESHOLD => 0.8} 
     hbase> list_regions 'table_name', {SERVER_NAME => 'server_name', LOCALITY_THRESHOLD => 0.8}, ['SERVER_NAME'] 
     hbase> list_regions 'table_name', {}, ['SERVER_NAME', 'start_key'] 
     hbase> list_regions 'table_name', '', ['SERVER_NAME', 'start_key'] 

dettagli sulla sua attuazione sono a: https://issues.apache.org/jira/browse/HBASE-14925

1

C'è uno strumento in HBase che viene utilizzato per il recupero tavolo e coerenza controllo, chiamato hbck HBase. Anche se questo non verrà eseguito all'interno della shell di hbase, ma può essere utilizzato per ottenere l'elenco delle regioni.

Il comando hbase hbck -details <tablename> può essere utilizzato per ottenere i dettagli della tabella e conterrà le informazioni sulla regione richieste.

L'output del comando sopra riportato può essere analizzato per ottenere le informazioni sulla regione per la tabella richiesta.