HBase 리전 부하 분산 및 RowKey 해싱 전략

HBase 초기 설정과 리전 관리의 중요성 HBase 에서는 기본 설정으로 테이블을 생성할 경우 단일 리전 (Region) 으로 시작하게 됩니다. 초기에는 데이터 양이 적어 문제가 없으나, 특정 리전에 모든 조회와 쓰기 요청이 집중되게 되며, 이는 해당 노드의 자원 고갈로 이어질 수 있습니다. 결국 리전 크기가 임계치를 넘으면 시스템이 자동으로 분할 (Split) 작업을 수행하지 ...

7월 10일 07:02에 게시됨

Spark SQL과 HBase 통합 시 스키마 매핑 오류 해결 방법

서론 Spark SQL에서 외부 데이터 소스를 사용할 때, 특히 HBase와 같은 NoSQL 저장소를 연동하는 경우 스키마 정의와 데이터 매핑이 핵심 과제가 된다. 개발자는 Spark의 DataFrame API를 통해 HBase 테이블을 마치 관계형 테이블처럼 쿼리하고 싶어 하지만, 두 시스템 간의 데이터 모델 차이로 인해 예기치 않은 결과가 발생할 수 있다. Spark SQL 커스텀 데이터 소스 기 ...

7월 7일 20:48에 게시됨

Protobuf 3.x와 HBase 내장 Protobuf 2.5.0 버전 충돌 해결 사례

개발 중 Protobuf 3.6.1을 사용하여 템플릿 코드를 생성했는데, HBase 1.2.1-cdh5.1.4.0과 함께 사용할 때 버전 충돌이 발생했습니다. Maven 의존성 트리를 확인하면 HBase가 Protobuf 2.5.0을 내장하고 있음을 알 수 있습니다. 빌드 단계에서는 문제가 없지만, 런타임 시 다음 오류가 발생합니다: java.lang.ClassNotFoundException: com.google.protobuf.LiteralByteSt ...

7월 4일 23:05에 게시됨

HBase 테이블 수준의 리전 균형 조정 기법

HBase 환경에서 데이터가 리전에 고르게 분포되지 않을 경우, 특히 예비 분할 없이 생성된 리전일 경우, 쓰기 부하의 불균형 문제가 발생할 수 있습니다. 전통적인 해시 또는 솔트 방식은 분산을 개선할 수 있지만, 이후 조회 성능에 영향을 미치는 문제점이 있습니다. 본 문서에서는 테이블 단위에서 리전의 분포를 최적화하는 새로운 균형 조정 전략을 제안합니다. 이 방 ...

7월 4일 18:15에 게시됨

HBase Kerberos 인증을 통한 Java 클라이언트 연결 설정

CDH 환경에서 Kerberos 보안이 활성화된 HBase에 Java 애플리케이션으로 접속하려면 몇 가지 설정 단계가 필요하다. 필요 구성 요소 준비 먼저 Cloudera Manager 콘솔에서 HBase 관련 설정 파일들을 다운로드하여 로컬 프로젝트에 배치해야 한다. 이 파일들은 일반적으로 src/main/resources 디렉토리에 저장한다. Kerberos 인증을 위해 다음 두 파일도 준비해야 한다: Ke ...

6월 19일 00:50에 게시됨

Apache HBase 기본 명령어와 Java API 활용

HBase Shell 명령어 DDL 작업: 테이블 관리 네임스페이스 생성 및 테이블 조회: create_namespace 'example_ns' list_namespace 테이블 생성 및 구조 확인: create 'example_ns:sample_table', 'cf1', 'cf2' describe 'example_ns:sample_table' 테이블 수정 및 컬럼 패밀리 삭제: alter 'example_ns:sample_table', {NAME => 'cf1', VERSIONS => 3} alter 'example_ns:s ...

6월 10일 17:40에 게시됨

Flume에서 HBase 연결 시 NoClassDefFoundError 해결 방법

HBase 연동 중 클래스 로딩 오류 대응 전략 Apache Flume를 통해 HBase로 데이터를 적재할 때, 종종 NoClassDefFoundError 또는 ClassNotFoundException과 같은 클래스 로딩 문제에 직면할 수 있습니다. 특히 org/apache/hadoop/hbase/HBaseConfiguration, org/apache/zookeeper/Watcher, MasterProtos$MasterService$BlockingInterface 등의 클래스 누락이 빈번하게 발생 ...

6월 1일 18:28에 게시됨

HBase RowKey 필터링 실패 원인과 해결 방안

HBase 테이블에 총 746건의 데이터가 존재하는 상황에서, Spark으로 처리하기 어려운 알고리즘을 Java로 직접 구현하여 HBase를 조회해야 했다. 성능 향상을 위해 필터를 적극 활용했으나, 예상치 못한 데이터 누락 문제가 발생했다. 초기 RowKey 설계 및 문제 발생 처음에는 시간_주문ID 형태로 RowKey를 구성했다. RowKey 구조: yyyyMMddHHmm_주문식별자 예시: 201904 ...

6월 1일 16:30에 게시됨

Flume의 핵심 개념 및 활용 사례

Flume 아키텍처 Flume는 대규모 로그 데이터 수집, 집계 및 전송을 위한 분산형, 신뢰성 있는, 고가용성 시스템입니다. 다양한 데이터 소스에서 데이터를 수집하고, 처리 후 목적지로 전송하는 기능을 제공합니다. 이 시스템에서는 데이터 흐름을 '이벤트(Event)'라는 단위로 관리하며, 이벤트는 바이트 배열 형태의 데이터와 헤더 정보를 포함합니다. 이벤트(Event)란? ...

5월 30일 02:31에 게시됨

노터시의 차량 집중 영역 분석

유버와 유사한 플랫폼에서 시간대별 지역별 주문 밀집도를 파악해 차량 배차 최적화를 수행해야 함 각 주문 데이터(Order)에는 출발지 위도(open_lat), 경도(open_lng) 정보가 포함됨 특정 시간대에 어떤 지역이 주문 요청이 높은지 파악해 시각화된 히트맵을 생성해야 함 초기 구현 시 위도 경도 기반 클러스터링을 고려함. 대표적인 클러스터링 알고리즘인 K-평균 알고리 ...

5월 26일 18:37에 게시됨