안단테 안단테

10. HBase 소개 - 3 본문

IT 기술/BigData

10. HBase 소개 - 3

안단테에 2023. 2. 3. 15:33
728x90
반응형

10. HBase 소개 - 3

 

로우키로는 어떤 바이트 배열이든 사용할 수 있으며, 반드시 사람이 읽을 수 있어야 할 필요는 없다.

 

- 컬럼패밀리

데이터를 의미적, 주제별로 분류

그룹화된 데이터에 압축이나 메모리 상주 같은 특정 기능을 적용

컬럼패밀리 안의 모든 컬럼은 HFile이라는 하나의 저수준 저장 파일에 함께 저장

 

컬럼은 '패밀리:퀄리파이어' 형태로 표현

컬럼패밀리는 수가 제한되지만 컬럼의 수는 제한이 없다

 

 

 

모든 로우와 컬럼은 테이블 상황정보 내에서 정의되는데 테이블에 포함되는 모든 컬럼패밀리에 대해 몇 가지 개념이 추가된다

모든 컬럼값, 즉 cell은 타임스탬프를 가짐

 

SortedMap<Rowkey, list<SortedMap<Column, List<Value,Timestamp>>>>

 테이블               컬럼패밀리 리스트

 

- 웹테이블

인터넷을 크롤링하는 도중 수집되는 웹페이지들을 저장

RowKey는 URL을 뒤집은 것 ex) org.hbase.www

 

로우 데이터에 접근하는 동작은 ㅇ릭고 쓰는 도중 컬럼 수에 제약 없이 원자성을 가짐

여러 개의 로우나 테입르에 걸친 그 이상의 원자성이나 트랜잭션 긴으을 보장하지 않는다.

 

1.4.3 자동 샤딩

 

Region은 Hbase의 확장성 및 로드 밸런싱의 기본 단위

Region : 기본적으로 함께 저장된 인접한 범위의 로우

 

Region이 너무 커지면 시스템에 의해 동적 분할

Region의 수 및 필요한 저장 파일의 수를 줄이기 위해 합쳐짐

 

최초의 테이블에 리전이 단 하나 존재하지만, 데이터를 추가함에따라 리전 최대 크기를 넘지 않게 해야됨

만약 리전 크기가 넘으면 중간값으로 분리

각 리전은 딱 하나의 리전서버에서 운용. 각 서버는 많은 리전을 언제든지 운용

리전은 서버가 고장났을 때 재빨리 복구해주고 서버의 부하가 심할 때에도 이동이 가능해 로드밸런싱기능

리전분할은 빠르다.

 

1.4.4 저장소 API

 

API는 테이블 및 컬럼팸리리를 생성하고 삭제하는 기능 제공

테입르 ㅁ치 컬럼패밀리의 압축 여부나 블록 크기 같은 메타데이터를 변경하는 함수

값 생성, 삭제, 로우키로 회수

 

'scan'은 로우의 특정 범위를 효괒거으로 이터레이트(반복)할 수 있는데 반환된 컬럼이나 각 셀의 버전 개수로 제한

필터를 사용해 컬럼을 비교할수도 있고, 시작 및 끝 시작을 지정한 시간 범위를 사용하여 버전 선택

 

HBase는 단일 로우 트랜잭션을 지원 -> 클라이언트에서 연산을 일괄처리 할 수 있다.

 

셀 값은 카운터로 사용할 수 있으며 원자적으로 갱신될 수 있다

카운터는 한 번의 연산으로 읽힌 후 갱신될 수 있으므로 분산 구조적임에도 불구하고 일관성을 갖는 순찾거인 전역 카운터 구현

테입르을 맵리듀스 잡의 입력값으로 변환하여 타겟을 산출하는 wrapper를 제공함으로써 Hbase시스템이 맵리듀스 프레임워크와 통합됨

 

1.4.5 구현

 

데이터는 HFile이라는 파일에 저장

이 파일은 데이터가 영구 저장되고 정렬되며, 고정 불변의 키 값/쌍의 Map이다

내부적으로 이 파일ㄷ르은 연속적인 블록이며 블록에 대한 색인이 그 끝에 젖아되어 있다.

색인은 HFIle이 열릴 때 로드되어 메모리에 젖아된다.

블록 크기의 기본 값은 64kb이지만 다른 값으로 설정가능

이 저장 파일은 특정값에 접근할 수도 있고, 시작값과 끝값이 주어지면 값의 범위를 탐색할 수 잇는 API 제공

모든 HFfile이 블록 색인을 갖고 있으므로 검색은 단 한번의 디스크 판독으로 수행

 

저장 파일은 일반적으로 HDFS에 저장되는데 확장성 있고, 데이터가 영구 자정되며 여러 사본으로 복제되는 저장 계층을 제공

HDFS는 확장 간으한 물맂거 ㅅ버ㅓ 간에 변경 사항을 젖아할때 절대로 유실되는 일이 없도록 보장

데이터가 갱신되면 제일 먼저 WAL(write-ahead log)에 쓰여지는데 HBase에서는 commit log라 함

 

WAL : 메모리에 저장된 데이터를 디스크에 쓰기 전에 서버가 고장 났을 때의 복구를 위해 존재

 

데이터는 이후 메모리 상의 memstore에 저장

메모리 상의 데이터가 설정된 최대값을 넘어서면 디스크에 HFile로 플러시

 

플러시 할 때 읽기/쓰기 연산 가능

- memstore를 메모리 안에서 계속 교체함으로써 얻어짐

- 꽉 찬 기존의 memTable이 파일로 변한되는 사이에 비어있는 새 멤테이블이 갱신된 내용을 받음

- 멤스토에 저장된 데이터는 이미 디스크 상의 HFile과 정확히 맞아 떨어지는 키에 의해 정렬되 있음

 

저장파일은 고정 불변이므로, 값을 삭제할 대 단순히 파일에서 키/값 쌍을 제거할 수는 없다

대신 해당 키가 삭제되었음을 나타내는 삭제 표시를 적어둠(읽기 작업할 땐 안보여줌)

 

멤스토의 데이터를 디스크에 플러스하면 점점 더 많은 HFile이 생성되기 때문에, HBase에는 Compaction을 이용하여 파일들을 큰 파일로 병합하는 housekeeping 기능이 존재

 

클라이언트

HBase 마스터 서버 하나 - 리전 서버에 리전을 할당하는 일 담당(Zookeeper 사용)

리전 서버 다수

728x90
반응형

'IT 기술 > BigData' 카테고리의 다른 글

12. HBase 요구사항  (1) 2023.02.03
11. HBase 소개 - 4  (0) 2023.02.03
9. HBase 소개 - 2  (0) 2023.02.03
8. HBase 소개 - 1  (0) 2023.02.03
7. zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries  (0) 2023.02.03
Comments