반응형
2021.09.01 - [SQL/NoSQL] - NoSQL이란? (1) : 개념 및 사용 목적, RDBMS와의 차이점
지난 포스팅에서는 NoSQL의 개념과 탄생 배경, 그리고 RDBMS와의 차이점을 알아보았다. 오늘은 Apache에서 운영하는 HBase에 대해 알아보도록 하자. HBase는 Hadoop 플랫폼을 위한 Non-relational 분산 DB로서, HDFS 위에서 동작한다.
학습목표
1. HBase DB란 무엇인지, 그 특징과 적용 범위를 알아보자.
2. HBase의 기본 구조(Master-Slave)와 구성요소(Hmaster, Region Server, Zookeeper 서버)에 대해 알아보자.
3. HBase - HDFS 연동 구조를 이해하고 각 구성 요소의 역할에 대해 이해하자.
HBase 데이터베이스
1. HBase는 무엇인가?
HBase의 개념
- HBase는 오픈소스 Apache 프로젝트로서, HDFS 위에서 실행되는 NoSQL의 일종으로 가용성과 분할 허용 (Availability - Partition tolerance)을 보장한다. 구글의 BigTable에서 영감을 얻어 Cloudera에서 개발하였다.
- 용어
- Node : 개별 서버
- Cluster : 작업을 수행하기 위해 여러 Node가 협업하는 그룹
- Master Node : 조정(coordination) 작업을 수행하는 Node
- Worker Node : Master Node가 할당한 작업을 수행하는 Node
- Daemon : 백그라운드(bg)에서 실행하는 process
- WAL(Write Ahead Log) : 분산 파일 시스템 위의 파일로서 아직 permanent storage에 저장되지 않은 새로운 데이터를 저장하기 위한 파일
- BlockCache : 자주 읽는 데이터를 메모리에 저장하는 Read Cache
- MemStore : Disk에 아직 쓰이지 않은 새로운 데이터를 저장하는 Write Cache
- HFile : Disk 상에 정렬된 key - value로 row를 저장한다. 하나의 HFile은 여러 Block으로 이루어져 있으며 기본 Block의 size는 64KB이다. 이 size가 작을수록 random access 속도가 증가하며, size가 커질수록 Scan 성능이 향상된다.
- Node : 개별 서버
HBase의 특징
- 구조
- HBase 테이블에 데이터가 저장되며, 해당 테이블에 저장된 데이터는 HDFS Block으로 분할되어 클러스터의 여러 Node에 저장된다.
- 테이블은 rows / columns / column families로 구성된다.
- 모든 행에는 빠른 검색을 위한 Row Key가 포함된다. (RDBMS의 primary key와 유사한 개념)
- column은 테이블의 데이터를 보관하며, 특정 column family에 귀속되며, row의 해당 column에 데이터가 있는 경우에만 존재한다.
- HBase 테이블에 데이터가 저장되며, 해당 테이블에 저장된 데이터는 HDFS Block으로 분할되어 클러스터의 여러 Node에 저장된다.
- 특징
- Distributed : HBase는 여러 기계를 사용하여 테이블 데이터를 저장하고 제공하도록 설계되었다.
- Sorted Map : 테이블 데이터를 Map으로 저장하고, 인접한 key가 디스크에 연속해서 저장되도록 한다.
- Multi-dimensional : 단일 column family에 잠재적으로 저장될 수 있는 수많은 column로 이루어져 있다.
- Cell size는 약 10KB 미만인 경우 최적의 성능을 보이며 빈 cell은 저장되지 않지만 필요 시 저장할 수 있다.
- Distributed : HBase는 여러 기계를 사용하여 테이블 데이터를 저장하고 제공하도록 설계되었다.
- 대규모 테이블 처리와 많은 칼럼 수를 가지는 분산된 행을 가진 데이터를 처리하기에 용이하다. 읽기 연산에 최적화되어 있기 때문에 범위 기반의 Scan 연산에 적합하다.
장점 단점 - HBase random access 데이터에 적합
- 확장성이 좋아 빅데이터 저장/처리에 적합
- Columns를 동적으로 정의가능 (Schema-less)
- TB부터 PB까지 처리 가능
- High read/write 처리속도- SQL 지원이 안되어 HBase table에 접근하기 위한 다른 방법 사용 (Hive, Impala, Phoenix 등)
- Transaction 제약 O
- 단일 테이블에 대한 Multiple index 기능 제공 X
- Hive 작업 시 메모리 및 지연
- 전체 table scan이나 전체 row 집계 연산에 부적합하며, ad-hoc analytics 사용 시에는 HBase 대신 Kudu + Impala의 조합을 추천하는 편이다. 또한, 필요한만큼의 index column을 설정할 수 있는 RDBMS와 다르게, HBase는 단 하나의 index key를 생성하기 때문에 테이블 생성 시 row key 계획을 해야 한다.
- Use Case
Messaging Measuring Graph Data 일반 처리 - Facebook messaging
- SMS/MMS service
- SNS Feed
- 실시간 랜덤 write
- 상위 항목 read- Sensor 데이터
- Click/노출 수
- 실시간 업데이트 지표- 금융 transaction
- Click stream
- NW 트래픽
- Batch/실시간 read/write- 지리 위치 정보
- 검색 index 생성
- 실시간 랜덤 read
2. HBase Architecture
HBase 구성요소
- Region Server
- 테이블의 row를 수평분할한 Region을 서비스하고 관리하는 서버로, HDFS 블록을 저장하는 책임이 있는 주체인 DataNode에서 실행된다.
- Client와 직접 커뮤니케이션하면서 read/write 요청을 처리한다.
- Apache에서는 메모리 Flush, Master Node의 과부하 등을 방지하기 위해 Region count를 낮게 유지하는 것을 권장합니다.
http://hbase.apache.org/book.html#too_many_regions
- 테이블의 row를 수평분할한 Region을 서비스하고 관리하는 서버로, HDFS 블록을 저장하는 책임이 있는 주체인 DataNode에서 실행된다.
- HBase Master
- 모든 Meta Data 변경 사항에 대해 클러스터 I/F의 모든 Region Server instance를 모니터링한다.
- DDL 명령어를 실행하며, Client가 변경하기를 원하는 Schema 또는 Meta data에 대한 작업을 책임진다.
- Region을 Region Server에 할당하고 해당 server를 관리한다.
- 모든 Meta Data 변경 사항에 대해 클러스터 I/F의 모든 Region Server instance를 모니터링한다.
- ZooKeeper
- HBase용 구성 정보를 중앙에서 관리하기 위해 사용되는 분산형 Coordination framework
- HBase Master에 속한 Slave인 Region Server가 ZooKeeper로 보내는 heartbeat를 감지하여 서버가 정상 동작하는지 모니터링한다. 마찬가지로 HBase Master 역시 ZooKeeper로 heartbeat를 보내면서 HBase Master가 내리는 의사결정을 지원한다.
- .META 서버의 path를 관리하여 어떤 Client든 Region을 검색할 수 있게 한다. 여기서의 Meta Table은 시스템 내의 모든 region 리스트를 유지하는 테이블로서 key (region id) - value (region server) 구조를 띤다.
- HBase용 구성 정보를 중앙에서 관리하기 위해 사용되는 분산형 Coordination framework
HBase 데이터 저장 구조
종류 | Write Mechanism | Read Mechanism |
특징 |
|
|
HBase Operation
- Get : 데이터 검색 명령어로서, key를 사용하여 단일 row를 검색한다.
- Scan : 데이터 검색 명령어로서, 모든 row를 검색할 수 있으며 start row key와 end row key 사이를 검색하도록 제한할 수 있다.
- Put : 데이터 추가 명령어로서 row key로 새 row를 추가하며, 여러 row를 삽입하기 위한 다중 Put 호출이 가능하다.
- Delete : row key로 식별된 row를 제거한다. 명령 호출 중에는 HDFS에서 데이터가 제거되지 않지만 삭제로 표시한다. (실제 삭제는 나중에 수행함)
- Increment / allows / atomic / counters
2021.09.02 - [SQL/NoSQL] - [데이터베이스 DB] NoSQL이란? (2-2) : HBase 사용법(Shell, command)
참고문헌
- mySUNI : NoSQL 이해와 활용 (정진석 강사님)
- https://jdm.kr/blog/189
- https://loustler.io/data_eng/hbase-architecture/
- https://joswlv.github.io/2018/07/07/HBase_basics/
반응형
'SQL > NoSQL' 카테고리의 다른 글
[데이터베이스/DB] NoSQL이란? (3-2) : 카산드라(Cassandra) DB의 구조 및 CQL 사용법 (1) | 2021.09.25 |
---|---|
[데이터베이스/DB] NoSQL이란? (3-1) : 카산드라(Cassandra) 개념 및 장단점 (0) | 2021.09.15 |
[데이터베이스 DB] NoSQL이란? (2-3) : HBase 사용법 (feat. Hive & Impala) (0) | 2021.09.03 |
[데이터베이스 DB] NoSQL이란? (2-2) : HBase 사용법(Shell, command) (0) | 2021.09.02 |
[데이터베이스/DB] NoSQL이란? (1) : 개념 및 사용 목적, RDBMS와의 차이점 (0) | 2021.09.01 |
댓글