2013-11-15 24 views
7

Può spiegare, qual è la corellazione tra HCatalog e HBase, per favore?Qual è la correlazione tra HBase e HCatalog?

ho trovato queste definizioni:

Apache HCatalog HCatalog è un livello di astrazione di metadati per fare riferimento i dati senza utilizzare i nomi di file o formati sottostanti. Isola gli utenti e gli script da come e dove i dati sono archiviati fisicamente.

Apache HBase HBase (Hadoop DataBase) è un database distribuito e orientato alle colonne. HBase utilizza HDFS per lo storage sottostante. Supporta sia calcoli in stile batch che utilizzano MapReduce e query point (letture casuali).

Mentre utilizziamo CREATE TABLE in Hive, crea una tabella in HCatalog. Io proprio non capisco. Perché non nel vero DATABASE che è HBase?

HCatalog sembra essere una sorta di repository metedata per tutti gli archivi di dati. Significa che mantiene anche informazioni su database e tabelle in HBase?

sarò grato per la spiegazione

saluti Pawel

+0

Controlla questa risposta [per la correlazione HBase e HCatalog] (https://stackoverflow.com/a/46844329/1592191) – mrsrinivas

risposta

8

Quando si Crea una tabella in HIVE registra in HCatalog. Un tavolo in Hive può essere un tavolo HBase ma può anche essere un'astrazione sopra i file e le directory HDFS

È possibile trovare una bella spiegazione di HCatalog on HortonWorks' site

+0

Non penso che tu possa usare Hive per interrogare HBase ... –

+2

Quindi hai torto, dal momento che puoi vedere https://cwiki.apache.org/confluence/display/Hive/HaseIntegration –

+0

Hai ragione. Non lo sapevo –

0

Perché ho notato che la questione è molto popolare, I' Ho deciso di risponderle dato che l'ho trovato abbastanza bene da quando l'ho chiesto a Quindi, prima di tutto poiché Hadoop 2.0 HCatalog e Hive sono trattati come un unico prodotto. Hive crea tabelle in HCatalog per impostazione predefinita. Significa che l'interfaccia naturale per HCatalog è Hive. Quindi è possibile utilizzare tutti i DML SQL-92 (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML) e DDL (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL), a partire da create/alter/drop database, tramite create/alter/drop table per finire con select, insert into ecc. L'unica eccezione è che l'inserimento funziona solo come inserto in ... come da selezione. Per inserto tipico dobbiamo usare:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] 

Le tabelle possono avere partizioni, indici (ma dal mio experioence non funziona bene), ma non è un database relazionale, quindi non è possibile utilizzare chiavi esterne .

Con HBase è abbastanza diverso. Questo è uno dei database noSQL (ma come risposta in previous post, Hive può essere un'interfaccia HBase per query SQL) Ha tabelle chiave-> valore organizzato. Lets confrontare alcuni comandi (create table, inserire dati nella tabella, selezionare una tabella, drop table

Hive:

create table table_name (
    id    int, 
    value1  string, 
    value2    string 
) 
partitioned by (date string) 

LOAD DATA INPATH 'filepath' ] INTO TABLE table_name [PARTITION (partcol1=val1, partcol2=val2 ...)] 

INSERT INTO table_name as select * from othertable 

SELECT * FROM table_name 

DROP TABLE table_name 

HBase:

hbase> create 'test', 'cf' 

hbase> put 'test', 'row1', 'cf:a', 'value1' 

hbase> get 'test', 'row1' 

hbase> disable 'test' 
hbase> drop 'test' 

Come si può vedere la sintassi è completamente Diverso: per gli utenti SQL, lavorare con HCatalog è naturale, quelli che lavorano con database noSQL si sentiranno a loro agio con HBase.

+2

la tua risposta è sbagliata (come è il tuo commento sul mio) - HCatalog è usato di default da Hive ma loro non sono lo stesso prodotto e HCatalogis utilizzabile anche da altri prodotti come Pig o Impala. –