HBase는 ByteArray 베이스의 NoSQL이면서 [Columnal DBMS임] RefY
- MemStore와 HFile에 저장.
- Bloom Filter라는게 HFile마지막에 저장되면서 속도를 냄. (옵셔널)
- ColumnFamily라는 개념이 존재. (prefix맞춰서 columnFamily로 만들면.., 자동으로 timestamp같은게 기록된다고라)
sameID: (cf:name timestamp value=kim)
sameID: (cf:score timestamp value=50) 내부적으론 이런식으로 dup해서 기록된다고 하네요.. 흠. REFY
ColumnFamily는 저장소 분리 및 압축에 사용됨. (유사한 type들을 모아놓아야 columnFam단위로 압축이 되거나 안되거나 함)
- extremely Low Latency & Low time delay..
- MapReduce와는 별도로 실행도 가능하고, 동시에 실행도 가능하다. (not mutually exclusive)
실행) $sudo /etc/init.d/hadoop-hbase-master start
====hbase shell=============
$hbase shell
hbase> list (ALL hbase Table listing)
hbase> desc 'MY:TABLE'
hbase> scan 'MY:TABLE' ( log라는 테이블 전체 조회)
hbase>
설계 룰:
- 가능한 적은 table을 만든다
- up front디자인에 많은 시간 투자!
- data loading은 최소한으로 한다.(모아서)
(Java API 지원)
Put = new Put()
Get = new Get()
---------------
Hive 은 ETL(Extract, Transform, Load) 툴.-> query타임이 중요치 않을때 사용
Hbase 는 온라인 access가 가능한 DB. -> query타임이 중요할 때 사용.
hive 예제. $hive 이후에 REFY
hive> add jar file:///usr/lib/hive-0.13.1-bin/lib/hive-contrib-0.13.1.jar;
hive> load data inpath 'hdfs:/wiki-access.log'
hive> select * from access;
ㅁ hBase/hive mapping된 테이블 생성
hive에는 hbase_table_access테이블을, hbase에는 log테이블을 생성.