• Home
  • About
    • JOOS photo

      JOOS

      Joos's blog

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

HBase란?

24 Jan 2021

Reading time ~2 minutes

제 블로그의 모든 글은 IMHO로 쓴 것입니다. 서로에 대한 존중을 담은 덧글을 남겨 소통을 하신다면 더 좋은 글로 발전이 될 수 있을 것 같습니다. 존중이 담기지 않은 덧글은 언제든 삭제될 수 있습니다. 감사합니다:)
—

Hbase

  • 분산되고 확장 가능하면서 큰 데이터를 저장하기 위한 비관계형 Database
  • 대량의 흩어져 있는 데이터 저장을 위한 무정지 방법을 제공
  • HBase에 있는 테이블들은 하둡에서 동작하는 맵리듀스 작업을 위한 입출력을 제공
  • 빠른 Write와 Read를 지원하며 HMaster(Master Server)와 Regionserver(Slave Server) 로 구성
  • 컬럼식 데이터베이스는 데이터에 대한 실시간 분석적 접근 기능을 제공하는데 강점이 있지만 Hbase는 특정 데이터 셀에 키 기반으로 접근 하거나 어떤 범위의 셀에 순차적으로 접근하는데 탁월한 성능

HBase의 장점

  1. 대용량의 데이터를 안정적으로 다루는데 효과적
    중앙의 전체 분산 시스템을 통제하는 마스터를 두고 전체 데이터의 일관성을 관리하여 복제 데이터 사이의 일관성을 보장
  2. 대량의 데이터 분석 처리 지원에 적합
    HDFS, mapreduce등과 함께 사용하기에 최적화
  3. region 서버를 추가하면 확장 및 성능을 유지할 수 있음

HBase의 단점

  1. 특정 region 서버에 특정 table의 region이 집중되기 쉬워 성능저하로 이어질 수 있음.
  2. 적절한 세팅을 위한 조건자료가 있으나 클러스터 규모나 기본 스팩차이가 있어 적용이 힘들 수 있음
  3. 연결시 dns에 민감하기 때문에 local환경을 셋팅하는데 허들이 있다.

Hbase Data Model

  • 셀(Cell)
  • 컬럼(Column)
  • 컬럼패밀리(ColumnFamily)
  • 로우(Row)
  • 테이블(Table)
  • 타임스탬프(TimeStamp)

기능

  • create
    • create 테이블명, 컬럼페밀리
      create 'neverland', 'user'
      
  • 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

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



DataBasenosql Share Tweet +1