HBase 필수 지식

Q·2023년 8월 29일
0

✅ Region 이란?

  • 리전(Region)은 HBase의 기본 데이터 저장 단위
  • 리전 하나에 저장되는 데이터의 양은 설정에 따라 다릅니다. 일반적으로, HBase 리전의 크기는 기본값으로 10GB로 설정되어있습니다.
  • HBase의 hbase.regionserver.region.split.policyhbase.hregion.max.filesize 설정을 통해 변경할 수 있습니다.

✅ Hbase 특정 row 키 값 데이터 읽어오기

⚡ HBase에서 특정 로우 값을 읽어오는 기본 메커니즘

만약 리전 하나가 10GB 정도의 데이터가 있고 리전 갯수가 8000개 정도라면, HBase는 원하는 row_key 값을 찾기 위해 다음과 같은 과정을 거칩니다.

✨ 1. HBase는 row_key를 통해 어떤 리전에 데이터가 위치하는지 찾습니다.

1.1. Meta Table 검색

  • HBase는 특별한 테이블인 Meta Table을 사용하여 모든 리전의 시작 row_key 정보를 저장합니다.
  • 클라이언트는 먼저 Meta Table을 검색하여 원하는 row_key가 어떤 리전에 속하는지 확인합니다.
  • Meta Table은 HBase의 모든 테이블에 대한 메타데이터를 저장하므로, 이 정보를 이용해 효율적으로 리전을 찾을 수 있습니다.

1.2. 리전 서버 확인

  • Meta Table에서 찾은 정보를 토대로, 클라이언트는 해당 row_key를 포함하는 리전 서버에 직접 연결합니다.
  • 클라이언트는 리전 서버와 통신하여 실제 데이터를 읽거나 쓸 수 있습니다.

이 과정은 HBase가 대규모 데이터를 효율적으로 처리할 수 있도록 설계된 분산 시스템의 특성 때문에 빠르게 수행됩니다. Meta Table을 통해 빠르게 원하는 row_key의 리전 위치를 파악할 수 있고, 리전 서버와 직접 통신하여 데이터 처리를 수행할 수 있습니다. 이렇게 HBase는 수십억 개의 row_key를 가진 대규모 테이블에서도 원하는 데이터를 효율적으로 찾을 수 있는 구조로 설계되어 있습니다.

✨ 2. 해당 리전에서 row_key 값에 해당하는 데이터를 찾습니다. 리전은 Sorted String Table (SSTable) 형식으로 저장되므로, 이진 검색 알고리즘을 사용해 빠르게 데이터를 찾을 수 있습니다.

LSM 트리 : SS 테이블의 형식으로 디스크에 key-value 데이터를 저장하는 색인 방식

2.1. MemStore 및 BlockCache 검색

  • 클라이언트가 찾고자 하는 row_key 값을 읽으려면, 먼저 HBase 리전 서버는 메모리에 저장된 MemStoreBlockCache를 확인합니다.
  • MemStore는 최근에 변경된 데이터를 저장하고 있으며, BlockCache는 자주 접근하는 데이터를 캐싱하기 위해 사용됩니다.
  • 이렇게 메모리에 저장된 데이터를 먼저 확인하여 빠른 읽기를 수행할 수 있습니다.

2.2. HFile 검색

  • 만약 메모리에 원하는 row_key 값이 없으면, 리전 서버는 저장된 HFiles에서 해당 데이터를 찾습니다.
  • HFiles은 LSM-Tree 구조를 사용하여 데이터를 저장하고 있어, 효율적인 읽기를 보장합니다.
  • 리전 서버HFiles에서 row_key 값에 대한 데이터를 찾기 위해 Bloom filter, block index 등의 메타데이터를 사용하여 탐색 시간을 최적화합니다.

2.3. 결과 반환

  • 리전 서버는 찾아낸 데이터를 클라이언트에 반환합니다. 클라이언트는 이 데이터를 사용하여 필요한 작업을 수행할 수 있습니다.

메타 테이블에서 원하는 row가 어떤 리전에 속하는지 확인하는 작업이 빠른 이유메타 테이블의 구조와 HBase의 분산 저장 구조 덕분입니다. 메타 테이블은 row_key를 기준으로 정렬되어 저장되어 있으며, HBase 클라이언트는 메타 테이블에서 원하는 row_key를 찾기 위해 이진 검색(binary search) 알고리즘을 사용합니다.

이진 검색은 정렬된 데이터에서 원하는 값을 찾기 위해 반복적으로 중간 값을 확인하며 검색 범위를 좁혀가는 알고리즘으로, 시간 복잡도가 O(log N)이기 때문에 매우 빠른 검색 속도를 보장합니다. 따라서 메타 테이블에서 원하는 row_key가 속한 리전을 찾는 작업은 이진 검색 알고리즘을 통해 빠르게 이루어집니다.

또한, 메타 테이블은 클라이언트에 의해 자주 접근되기 때문에, HBase는 메타 테이블을 클러스터 전체에 걸쳐 복제(replicate)하여 메타 테이블에 대한 조회 요청이 여러 서버로 분산될 수 있도록 합니다. 이러한 복제와 분산 저장 구조 덕분에 메타 테이블에 대한 조회 요청이 병목되지 않고 빠르게 처리될 수 있습니다.

결론적으로, 메타 테이블의 정렬된 구조이진 검색 알고리즘, 그리고 분산 저장 구조가 결합되어 원하는 row_key가 속한 리전을 찾는 작업이 빠르게 이루어질 수 있습니다.

profile
Data Engineer

0개의 댓글