제 블로그의 모든 글은 IMHO로 쓴 것입니다. 서로에 대한 존중을 담은 덧글을 남겨 소통을 하신다면 더 좋은 글로 발전이 될 수 있을 것 같습니다. 존중이 담기지 않은 덧글은 언제든 삭제될 수 있습니다. 감사합니다:)
—
Hbase
- 분산되고 확장 가능하면서 큰 데이터를 저장하기 위한 비관계형 Database
- 대량의 흩어져 있는 데이터 저장을 위한 무정지 방법을 제공
- HBase에 있는 테이블들은 하둡에서 동작하는 맵리듀스 작업을 위한 입출력을 제공
- 빠른 Write와 Read를 지원하며 HMaster(Master Server)와 Regionserver(Slave Server) 로 구성
- 컬럼식 데이터베이스는 데이터에 대한 실시간 분석적 접근 기능을 제공하는데 강점이 있지만 Hbase는 특정 데이터 셀에 키 기반으로 접근 하거나 어떤 범위의 셀에 순차적으로 접근하는데 탁월한 성능
HBase의 장점
- 대용량의 데이터를 안정적으로 다루는데 효과적
중앙의 전체 분산 시스템을 통제하는 마스터를 두고 전체 데이터의 일관성을 관리하여 복제 데이터 사이의 일관성을 보장 - 대량의 데이터 분석 처리 지원에 적합
HDFS, mapreduce등과 함께 사용하기에 최적화 - region 서버를 추가하면 확장 및 성능을 유지할 수 있음
HBase의 단점
- 특정 region 서버에 특정 table의 region이 집중되기 쉬워 성능저하로 이어질 수 있음.
- 적절한 세팅을 위한 조건자료가 있으나 클러스터 규모나 기본 스팩차이가 있어 적용이 힘들 수 있음
- 연결시 dns에 민감하기 때문에 local환경을 셋팅하는데 허들이 있다.
Hbase Data Model
- 셀(Cell)
- 컬럼(Column)
- 컬럼패밀리(ColumnFamily)
- 로우(Row)
- 테이블(Table)
- 타임스탬프(TimeStamp)
기능
- create
- create 테이블명, 컬럼페밀리
create 'neverland', 'user'
- create 테이블명, 컬럼페밀리
- put
- put ‘neverland’, ‘0000000541’, ‘user:age’, ‘23’
- put 테이블명, 로우, ‘컬럼 퀄리파이어:컬럼의 값’, ‘value’
hbase(main):022:0> put 'neverland', '0000000541', 'user:age', '23'
0 row(s) in 0.0110 seconds
hbase(main):023:0> put 'neverland', '0000000541', 'user:gender', 'MALE'
0 row(s) in 0.0040 seconds
- scan
- scan ‘테이블명’, ‘limit치기’
- 같은로우로 설정하면 같은로우인 애들이 나온다.
hbase(main):027:0> scan 'neverland', {'LIMIT' => 1} ROW COLUMN+CELL 0000000541 column=user:age, timestamp=1605793482487, value=23 0000000541 column=user:nickname, timestamp=1605793482487, value=joos 0000000541 column=user:gender, timestamp=1605793498436, value=MALE 1 row(s) in 0.0170 seconds
- colmun값 확인
hbase(main):007:0> scan 'neverland', {COLUMNS => 'user:gender', LIMIT=>1} ROW COLUMN+CELL 0000015171 column=user:gender, timestamp=1606201148829, value=MALE 1 row(s) in 0.0090 seconds
- time 기간으로 scan
scan 'neverland', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]}
- row로 scan
hbase(main):002:0> get 'neverland', '0000000070' COLUMN CELL user:age timestamp=1607886669664, value=27 user:gender timestamp=1607886669735, value=MALE user:hashtags timestamp=1607886670411, value= user:local_country_code timestamp=1607886669735, value=KR 1 row(s) in 0.0390 seconds
- delete
- disable 테이블명 후 drop 테이블명
``` hbase(main):015:0> disable ‘neverland’ 0 row(s) in 2.2600 seconds
- disable 테이블명 후 drop 테이블명
hbase(main):016:0> drop ‘neverland’ 0 row(s) in 1.2330 seconds
hbase(main):017:0> list TABLE comments neverland army 3 row(s) in 0.0060 seconds
=> [“neverland”, “army”, “toomon”] ```
참고: https://dydwnsekd.tistory.com/4