H베이스 Archi강의: 사용 사례, 구성 요소 및 데이터 모델
⚡ 스마트 요약
HBase 아키텍처는 HMaster, 리전 서버, ZooKeeper 및 HDFS라는 네 가지 조정 구성 요소로 이루어져 있으며, 이러한 구성 요소는 데이터를 컬럼 지향 모델로 저장하고, 리전별로 분할하고, 지연 시간이 짧은 임의 읽기 및 쓰기 작업을 제공합니다.

Apache HBase는 Apache 기반의 분산형 컬럼 지향 NoSQL 데이터베이스입니다. 하둡 그리고 하둡 분산 파일 시스템(HDFS)이 있습니다. HDFS의 아키텍처는 조정 마스터, 지역 서버 및 ZooKeeper를 결합하여 매우 큰 테이블을 저장하고 빠른 임의 읽기 및 쓰기를 제공합니다.
H베이스 Archi강의 및 주요 구성 요소
HBase 아키텍처는 다음과 같은 주요 구성 요소를 가지고 있습니다.
- H마스터
- HRegionServer
- H지역
- 주 키퍼
- HDFS
아래는 그림에 표시된 바와 같이 HBase의 구성 요소를 포함한 상세한 아키텍처입니다.
H마스터
HBase의 HMaster는 HBase 아키텍처에서 마스터 서버를 구현한 것입니다. 클러스터에 있는 모든 리전 서버 인스턴스를 모니터링하는 모니터링 에이전트 역할을 하며, 모든 메타데이터 변경 사항에 대한 인터페이스 역할을 합니다. 분산 클러스터 환경에서 마스터는 네임노드(NameNode)에서 실행됩니다. 마스터는 여러 백그라운드 스레드를 실행합니다.
다음은 HBase에서 HMaster가 수행하는 중요한 역할입니다.
- 클러스터 내 노드의 성능과 유지관리 측면에서 중요한 역할을 합니다.
- HMaster는 관리 성능을 제공하고 다양한 지역 서버에 서비스를 배포합니다.
- HMaster는 지역 서버에 지역을 할당합니다.
- HMaster는 클러스터에 있는 노드 전체에 부하를 분산시키기 위해 로드 밸런싱 및 페일오버를 제어합니다.
- 클라이언트가 스키마 또는 메타데이터 작업을 변경하려는 경우 HMaster가 이러한 작업에 대한 책임을 집니다.
HMaster 인터페이스에서 제공하는 메서드 중 일부는 주로 메타데이터 관련 메서드입니다.
- 테이블(createTable, RemoveTable, 활성화, 비활성화)
- ColumnFamily(열 추가, 열 수정)
- 지역(이동, 할당)
클라이언트는 HMaster 및 ZooKeeper와 양방향으로 통신합니다. 읽기 및 쓰기 작업의 경우, 클라이언트는 HRegion 서버에 직접 접속합니다. HMaster는 리전을 리전 서버에 할당하고, 리전 서버의 상태를 확인합니다.
전체 아키텍처에는 여러 개의 리전 서버가 있습니다. 리전 서버에는 모든 로그 파일을 저장하는 HLog가 있습니다.
HBase 지역 서버
HBase 리전 서버는 클라이언트로부터 쓰기 및 읽기 요청을 받으면 해당 요청을 실제 컬럼 패밀리가 위치한 특정 리전에 할당합니다. 클라이언트는 HRegion 서버에 직접 연결할 수 있으며, HRegion 서버와의 통신을 위해 HMaster 권한이 필수적으로 요구되는 것은 아닙니다. 클라이언트는 메타데이터 및 스키마 변경과 관련된 작업이 필요한 경우에만 HMaster의 도움을 필요로 합니다.
HRegionServer는 리전 서버 구현체입니다. 이는 분산 클러스터에 있는 데이터, 즉 리전을 제공하고 관리하는 역할을 담당합니다. 리전 서버는 하둡 클러스터의 데이터 노드에서 실행됩니다.
HMaster는 여러 HRegion 서버와 연결하여 다음과 같은 기능을 수행할 수 있습니다.
- 호스팅 및 관리 지역
- 자동으로 지역 분할
- 읽기 및 쓰기 요청 처리
- 클라이언트와 직접 소통
HBase 영역
HRegion은 HBase 클러스터의 기본 구성 요소입니다. 테이블의 분산으로 구성되며 컬럼 패밀리로 이루어져 있습니다. 하나의 Region에는 여러 개의 Store가 포함되며, 각 Store는 컬럼 패밀리마다 하나씩 있습니다. HRegion은 주로 MemStore와 HFile이라는 두 가지 구성 요소로 이루어져 있습니다.
주 키퍼
H베이스 주 키퍼 ZooKeeper는 구성 정보를 유지하고 분산 동기화를 제공하는 중앙 집중식 모니터링 서버입니다. 분산 동기화는 클러스터 전체에서 실행되는 분산 애플리케이션을 조정하여 노드 간 조정 서비스를 제공합니다. 클라이언트가 리전과 통신하려면 먼저 ZooKeeper에 접근해야 합니다.
이것은 오픈 소스 프로젝트이며, 많은 중요한 서비스를 제공합니다.
ZooKeeper에서 제공하는 서비스:
- 구성 정보를 유지 관리합니다.
- 분산 동기화를 제공합니다
- 클라이언트와 지역 서버 간의 통신을 설정합니다.
- 서로 다른 지역 서버를 나타내는 임시 노드를 제공합니다.
- 마스터 서버가 이러한 임시 노드를 사용하여 클러스터에서 사용 가능한 서버를 검색할 수 있도록 합니다.
- Tracks 서버 오류 및 네트워크 분할
마스터 노드와 HBase 슬레이브 노드(리전 서버)는 ZooKeeper에 자체 등록을 합니다. 클라이언트는 마스터 및 리전 서버에 연결하기 위해 ZooKeeper(ZK) 쿼럼 구성에 접근해야 합니다.
HBase 클러스터에 있는 노드에 장애가 발생하면 ZooKeeper 쿼럼이 오류 메시지를 발생시키고 장애가 발생한 노드를 복구하기 시작합니다.
HDFS
HDFS는 Hadoop 분산 시스템입니다. 파일 시스템이름에서 알 수 있듯이, 하둡은 분산 스토리지 환경을 제공하며, 일반적인 하드웨어에서 실행되도록 설계된 파일 시스템입니다. 각 파일은 여러 블록으로 나누어 저장되며, 내결함성을 유지하기 위해 블록들은 하둡 클러스터 전체에 복제됩니다.
HDFS는 높은 수준의 내결함성을 제공하며 저렴한 범용 하드웨어에서 실행됩니다. 클러스터에 노드를 추가하고 저렴한 범용 하드웨어를 사용하여 처리 및 저장을 수행함으로써 기존 설정보다 고객에게 더 나은 결과를 제공합니다.
여기서는 각 블록에 저장된 데이터가 3개의 노드에 복제되므로 어느 노드에 문제가 발생하더라도 데이터 손실이 없습니다. 적절한 백업 및 복구 메커니즘을 갖추고 있습니다.
HDFS는 HBase 구성 요소와 연결되어 대량의 데이터를 분산 방식으로 저장합니다.
HBase 데이터 모델
HBase 데이터 모델은 테이블, 행, 컬럼 패밀리, 셀, 컬럼 및 버전으로 구성된 구성 요소 집합입니다. HBase 테이블은 컬럼 패밀리와 행을 포함하며, 각 요소는 기본 키로 정의됩니다. HBase 데이터 모델 테이블의 컬럼은 객체의 속성을 나타냅니다.
HBase 데이터 모델은 다음과 같은 요소로 구성됩니다.
- 테이블 세트
- 컬럼 패밀리와 행이 있는 각 테이블
- 각 테이블에는 기본 키로 정의된 요소가 있어야 합니다.
- 행 키는 HBase에서 기본 키 역할을 합니다.
- HBase 테이블에 접근할 때는 항상 이 기본 키가 사용됩니다.
- HBase의 각 열은 객체에 해당하는 속성을 나타냅니다.
HBase 사용 사례
다음은 HBase 사용 사례 예시와 HBase가 다양한 기술적 문제에 대해 제공하는 해결책에 대한 자세한 설명입니다.
| 문제 정책 | 해법 |
| 통신 업계는 다음과 같은 기술적 과제에 직면해 있습니다. 통신 분야에서 생성되는 수십억 건의 통화 상세 기록(CDR) 로그를 저장해야 하고, 고객의 CDR 로그 및 청구 정보에 대한 실시간 접근을 제공해야 하며, 기존 데이터베이스 시스템에 비해 비용 효율적인 솔루션을 제공해야 합니다. | HBase는 수십억 개의 자세한 통화 기록 행을 저장하는 데 사용됩니다. 기존 RDBMS 데이터베이스에 매달 20TB의 데이터가 추가되면 성능이 저하됩니다. 이 사용 사례에서 대량의 데이터를 처리하려면 HBase가 가장 좋은 솔루션입니다. HBase는 빠른 쿼리를 수행하고 기록을 표시합니다. |
| 은행 업계는 매일 수백만 건의 거래 기록을 생성합니다. 또한, 은행 업계는 자금 거래에서 발생하는 사기를 탐지할 수 있는 분석 솔루션이 필요합니다. | 방대한 양의 데이터를 저장, 처리, 업데이트하고 분석을 수행하기 위한 이상적인 솔루션은 여러 하둡 에코시스템 구성 요소와 통합된 HBase입니다. |
그 외에도 HBase를 사용할 수 있습니다.
- 쓰기 작업이 많이 필요한 애플리케이션이 있을 때마다.
- 온라인 로그 분석을 수행하고 규정 준수 보고서를 생성하기 위한 것입니다.
HBase의 저장 메커니즘
HBase는 컬럼 지향 데이터베이스이며, 데이터는 테이블에 저장됩니다. 테이블은 RowId를 기준으로 정렬됩니다. 아래 그림에서 볼 수 있듯이, HBase에는 RowId라는 것이 있는데, 이는 테이블에 존재하는 여러 컬럼 패밀리의 집합입니다.
스키마에 존재하는 컬럼 패밀리는 키-값 쌍으로 구성됩니다. 자세히 살펴보면, 각 컬럼 패밀리는 여러 개의 컬럼을 포함하고 있습니다. 컬럼 값은 디스크 메모리에 저장됩니다. 테이블의 각 셀에는 타임스탬프 및 기타 정보와 같은 고유한 메타데이터가 있습니다.
행 키, 열 패밀리 및 셀을 포함하는 열 지향형 저장 레이아웃은 아래와 같습니다.
다음은 HBase 테이블 스키마를 나타내는 주요 용어입니다.
- 테이블: 존재하는 행들의 모음입니다.
- 행: 컬럼 패밀리 모음입니다.
- 컬럼 패밀리: 컬럼 모음입니다.
- 컬럼: 키-값 쌍의 모음입니다.
- 네임스페이스: 논리적 그룹ping 테이블.
- Cell: HBase에서 셀 정의를 정확하게 지정하는 {행, 열, 버전} 튜플입니다.
열 기반 저장소와 행 기반 저장소
컬럼 지향형 스토리지와 행 지향형 스토리지는 저장 메커니즘에서 차이가 있습니다. 전통적인 관계형 모델은 데이터를 행 단위로 저장하는 반면, 컬럼 지향형 스토리지는 데이터를 컬럼과 컬럼 패밀리 형태로 저장합니다.
다음 표는 이 두 저장 방식의 주요 차이점을 보여줍니다.
| 열 기반 데이터베이스 | 행 지향형 데이터베이스 |
| 온라인 분석 처리(OPP) 및 그 응용 프로그램과 같이 처리 및 분석이 필요한 상황에서 사용됩니다. | 은행 및 금융 분야와 같은 온라인 거래 처리는 이러한 접근 방식을 사용합니다. |
| 이 모델에 저장할 수 있는 데이터 양은 페타바이트 단위로 매우 방대합니다. | 소수의 행과 열을 위해 설계되었습니다. |
HBase 읽기 및 쓰기 데이터 설명
아래 다이어그램은 클라이언트에서 HFile로의 읽기 및 쓰기 작업을 보여줍니다.
1단계) 클라이언트는 데이터를 쓰려고 하며, 이를 위해 먼저 리전 서버와 통신한 다음 리전들과 통신합니다.
2단계) 해당 영역은 컬럼 패밀리와 관련된 데이터를 저장하기 위해 MemStore에 연결합니다.
3단계) 먼저 데이터는 MemStore에 저장되고, 정렬된 후 HFile에 기록됩니다. MemStore를 사용하는 주된 이유는 행 키를 기반으로 분산 파일 시스템에 데이터를 저장하기 위함입니다. MemStore는 리전 서버의 메인 메모리에 위치하며, HFile은 HDFS에 기록됩니다.
4단계) 클라이언트는 해당 지역의 데이터를 읽어오기를 원합니다.
5단계) 그러면 클라이언트는 MemStore에 직접 접근하여 데이터를 요청할 수 있습니다.
6단계) 클라이언트가 HFiles에 접근하여 데이터를 가져옵니다. 클라이언트가 데이터를 가져오고 검색합니다.
MemStore는 저장소에 대한 메모리 내 수정 사항을 저장합니다. HBase 영역의 객체 계층 구조는 위에서 아래로 아래 표에 나와 있습니다.
| 작업대 | HBase 클러스터에 존재하는 HBase 테이블 |
| 지역 | 제시된 테이블의 HRegions |
| 스토어 | 테이블의 각 지역별로 컬럼 패밀리별로 하나씩 저장합니다. |
| 멤스토어 | 테이블의 각 영역별 저장소마다 MemStore가 사용됩니다. 데이터를 HFiles에 저장하기 전에 정렬합니다. 정렬 덕분에 쓰기 및 읽기 성능이 향상됩니다. |
| 저장파일 | 테이블의 각 지역별 매장별 StoreFiles |
| 블록 | StoreFiles 내부에 있는 블록 |
HBase 대 HDFS
HBase는 HDFS와 Hadoop 위에 구축되어 실행됩니다. HDFS와 HBase의 주요 차이점은 데이터 작업 및 처리 방식에 있습니다.
| H베이스 | HDFS |
| 저지연 작업 | 높은 지연 시간 작업 |
| 무작위 읽기 및 쓰기 | 한 번 쓰고, 여러 번 읽어보세요. |
| 다음을 통해 액세스됨 쉘 명령클라이언트 API Java, REST, Avro 또는 Thrift | 주로 MapReduce를 통해 접근합니다.MR) 일자리 |
| 저장과 처리 모두 수행 가능합니다. | 보관 용도로만 사용됩니다. |
일반적인 IT 산업 애플리케이션에서는 Hadoop과 함께 HBase를 사용합니다. 예를 들어 주식 시장 데이터 및 온라인 뱅킹 데이터 처리와 같은 애플리케이션에서 HBase는 최적의 솔루션입니다. 클러스터가 준비되면 다음과 같은 작업을 수행할 수 있습니다. HBase에서 데이터 읽기 및 쓰기 or HBase 설치 새로운 노드에서.



