IT 삽질기

HBase 데이터 쓰기/읽기 과정 본문

BigData/HBase

HBase 데이터 쓰기/읽기 과정

화이팅빌런 2021. 5. 15. 01:44

HBase에서 데이터를 읽고 쓰는 과정에 대해서 알아보도록 하자.

 

HBase 데이터 쓰기

HBase에서 데이터를 저장할 때는 두 가지 장소에 저장하게 되는데,

WAL(Write Ahead Log)와 Memstore이다.

WAL에 대한 내용은 아래의 글을 확인하기 바란다.

2021.05.14 - [개발] - WAL(Write-ahead logging)란 ?

 

위의 두 가지 방법을 활용하여 정상적으로 쓰기 과정이 끝나는 것은 WAL과 Memstore에서 모두 변경이 일어난 시점이 된다.

HBase에 데이터 적재 요청이 오면 먼저 적절한 region server을 찾게 된다.

region server를 찾아 commit log를 추가 하고 메모리 내의 Memstore에 추가되게 된다.

Memstore에 저장되어 있던 데이터는 설정되어 있는 설정값에 따라 가득차게 되면 HFile이라는 형태로 디스크에 Flush되며 메모리를 비우고 다시 요청을 기다리게 되며, WAL에도 이에 대한 기록을 하게 된다.

memstore flush는 hbase.hregion.memstore.flush.size 값을 넘기는 경우 발생하는데 단위는 byte로 134217728(128MB)로 설정되어 있다.

HFile란?

HFile는 HBase에 데이터를 저장하기 위한 포맷으로 컬럼 패밀리 내에 속하며 컬럼 패밀리는 여러개의 HFile를 가질 수 있다.

 

HBase 데이터 읽기

다음으로 HBase에서 데이터를 읽는 과정에 대해서 알아보자.

위의 HBase에서 데이터 쓰기 과정에 대해서 이야기 했는데, 데이터를 읽어오는 과정도 비슷한 과정을 거치게 된다.

HBase에 요청이 들어오는 경우 먼저 Memstore를 살펴보게 되는데, Memstore에서 원하는 데이터를 찾으면 해당 데이터를 반환하게 된다.

그렇지 않은 경우 최근 Flush된 파일부터 오래된 순으로 쿼리를 만족하는 적합한 데이터를 발견하거나 더 이상 Flush 파일이 없을때까지 반복하게 된다.

 

참고자료

https://datacookbook.kr/40

'BigData > HBase' 카테고리의 다른 글

HBase Thrift Server SocketTimeOut  (0) 2021.07.01
HBase Compaction  (0) 2021.06.23
HBase tools를 이용한 HBase balancing  (0) 2021.03.10
HBase 튜닝하기  (0) 2021.03.07
HBase 테이블별 용량 확인  (0) 2019.04.27
Comments