Data

[1028 from 실무로 배우는 빅데이터 기술 By 김강원 13]HBase

ACID atomicity, consistency, isolation, durability
원자성, 일관성, 고립성, 지속성
관계형 데이터의 원칙. 이를 위해 많은 리소스 사용. 
NoSQL 은 ACID 지키지 않음 , Key Value 구조. 단순화 , 쓰기 읽기 가능하게. 
HBase http://hbase.apache.org/
하둡 HDFS위에 만들어진 분산 컬럼지향 NoSQL 데이터베이스
스키마변경 자유롭다. 실시간 임의 읽기/쓰기 제공, 복제기능 지원. 성능 안정성 보장.  
라이센스 Apache
유사 프로젝트 BigTable, Cassandra, MongoDB
주요 
구성요소
HTable 칼럼 기반 데이터 구조를 정의한 테이블
공통점이 있는 칼럼들의 그룹을 묶은 칼럼패밀리와
테이블의 로우를 식별해서 접근하기 위한 로우키로 구성
cf) 관계형데이터베이스는 로기반, 1~10번 컬럼. 10번만 보려고해도 1~9까지봐야함. 
컬럼기반 데이타 구조는. 10번 다이렉트 참조 가능. 빠른 스캔가능 
HMaster (서버) HRegion 서버를 관리하며, HRegion들이 속한 HRegion 서버의 메타 정보를 관리. 
HRegion (서버) HTable의 크기에 따라 자동으로 수평분할이 발생하고, 이때 분할된 블록을 HRegion 단위로 지정
HRegionServer 분산 노드별 HRegionServer가 구성되며, 하나의 HRegionServer에는 다수의 HRegion이 생성되어  HRegion을 관리
Store 하나의 Store에는 칼럼 패밀리가 저장 및 관리되며, MemStore와 HFile로 구성됨. 
MemStore Store 내의 데이터를 인메모리에 저장 및 관리하는 데이터 캐시영역
HFile Store 내의 데이터를 스토리지에 저장 및 관리하는 영구 저장영역. 
아키텍처


분산데이타베이스 아키텍처
클라이언트 -> 주키퍼 통해 HMaster 접근.  HTable 기본정보 해당 HRegion 정보 알아냄
 클라이언트 HRegionSever 액세스. 
  MemStore 데이터 기록. 특정크기되면 -> HFile -> 하둡저장 
: compaction(컴팩션, 꽉채움) : 파일 뭉치기. 
minor - compaction :  최근 생성된 작은 파일들을 큰파일로 재작성. 
- hbase.hstore.compaction.min   , 기본3,  큰값을 넣으면 minor 지연, 나중에 부하가능성. 
- hbase.hstore.compaction.max  , 
- hbase.hstore.compaction.min.size,
major - compaction : 모든 파일을 하나의 파일로 구성
- hbase.hregion.majorcompaction.jitter  기본 0.2 (20%), 

출처: https://datacookbook.kr/40 [DATA COOKBOOK]

활용방안 운잔자 운행로그 400kb/1초
-> 플럼-> 카프카-> 스톰
-> HBase
HRegionServer1 - HRegion1 (Driver Info1, 4)
HRegionServer2 - HRegion2 (Driver Info2, 5)
HRegionServer3 - HRegion3 (Driver Info3, ....)
-> 스마트카 운전자의 실시간 운행정보 적재
     운전자의 운행 정보를 빠르게 검색 및 조회 . 

카프카 : MoM: 대규모 메시지 버퍼링, 메시지 오리엔티드 미들웨어 시스템
Topic 비동기 저장. 
스톰: 카프카 데이터 빼냄. . 카프카의 컨슈머. 
       병렬분산.... 스톰이 빼온 데이터 Hbase에 저장. 
설치 1. 설치
CM 홈 >클러스터 콤보박스 > Add Service
> Master , HBase Thrift Server , RegionServer -> 02서버로 설정
> 설정 default 값.   복제, 인덱스 사용 설정 참고. 
> HBase 컴포넌트는  하둡의 얀 위에 설치

2. 환경설정
---HBase Thrift Http 서버 활성화 ----
HBase > 구성 > 
HBase Thrift Http서버설정(hbase.regionserver.thrift.http
Enable HBase Thrift Http Server(hbase.thrift.ssl.enabled)
:  HBase (Service-Wide) : 서비스 전체 활성화

3. HBase 서비스 시작 or 재시작
>>Master서버 3개의 Region Server기동화면 활성화됨. 

4. HBase 처럼 규모가 있는 컴포넌트 설치되면 이미 설치되 소프트웨어(주키퍼, HDFS,YARN, 등) 클라이언트 설정값 변동발생, 클라이언트 구성 재배포(Re-deploy client configuration) 통해 변경사항 반영. 

5. 정상설치확인
서버2번 접속

$hbase shell
$create 'smartcar_test_table' , 'cf'
$put 'smartcar_test_table', 'row-key1', 'cf:model', 'z0001'
$put 'smartcar_test_table', 'row-key1', 'cf:no', '12345'

$get 'smartcar_test_table', 'row-key1'

** 테이블은 disable 후 삭제가능
$disable 'smartcar_test_table'
$drop 'smartcar_test_table'

$exit

6. HBase 관리자 화면. 
CM  > HBase > WebUI
http://server02.hadoop.com:16010/master-status

HBase는 자원소모가 높은 서버로 사용않을때는일시정지

RegionSplit 분산되어 있는 Hbase 내부에 리전이 만들어짐. 
내부 리전이 분산되도록 함.  = 샤딩. 
리젼..여러 스플릿 정책. 
ex) 사이즈 리전 스플릿 과거. ,  이클립스 인투 오퍼 바운더리 리전정책 사용. 
특정테이블 만들고 초기 대규모 데이터 예상되면 미리 스플릿하는게 좋음. 
$hbase org.apache.hadoop.hbase.util.RegionSpllitter DriverCarINfo HexStringSplit -c 4 -f cf1
# 고사양 4, 저사양 2
# cf1 : 컬럼패밀리... 대상으로 리전 스플릿. 
   
   
   

atomicity 아토믹씨티 원자성.